In [ ]:
. ./nbs_header.ps1
. ./core.ps1
In [ ]:
{ pwsh ../apps/builder/build.ps1 } | Invoke-Block
── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ # DibParser (Polyglot)                                                       │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
#r 
@"../../../../../../../.nuget/packages/fsharp.control.asyncseq/3.2.1/lib/netstan
dard2.1/FSharp.Control.AsyncSeq.dll"
#r 
@"../../../../../../../.nuget/packages/system.reactive/6.0.1-preview.1/lib/net6.
0/System.Reactive.dll"
#r 
@"../../../../../../../.nuget/packages/system.reactive.linq/6.0.1-preview.1/lib/
netstandard2.0/System.Reactive.Linq.dll"
#r 
@"../../../../../../../.nuget/packages/argu/6.2.4/lib/netstandard2.0/Argu.dll"
#r 
@"../../../../../../../.nuget/packages/fparsec/2.0.0-beta2/lib/netstandard2.1/FP
arsec.dll"
#r 
@"../../../../../../../.nuget/packages/fparsec/2.0.0-beta2/lib/netstandard2.1/FP
arsecCS.dll"

── pwsh ────────────────────────────────────────────────────────────────────────
ls ~/.nuget/packages/argu

╭─[ 498.47ms - stdout ]────────────────────────────────────────────────────────╮
│                                                                              │
│     Directory: C:\Users\i574n\.nuget\packages\argu                           │
│                                                                              │
│ Mode                 LastWriteTime         Length[     │
│ 32;1m Name                                                                 │
│ ----                 -------------         ------ [      │
│ 32;1m----                                                                  │
│ d----          2023-05-17  4:38 PM                6.1.1               │
│ d----          2024-03-12  9:22 PM                6.1.4               │
│ d----          2024-01-29  6:12 PM                6.1.5               │
│ d----          2024-03-12  9:20 PM                6.2.0               │
│ d----          2024-02-23  7:50 PM                6.2.1               │
│ d----          2024-03-12  9:15 PM                6.2.2               │
│ d----          2024-05-14  9:20 PM                6.2.3               │
│ d----          2024-06-06  8:37 PM                6.2.4               │
│                                                                              │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
#if !INTERACTIVE
open Lib
#endif

── fsharp ──────────────────────────────────────────────────────────────────────
open Common
open FParsec
open SpiralFileSystem.Operators

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## escapeCell (test)                                                         │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

let inline escapeCell input =
    input
    |> SpiralSm.split "\n"
    |> Array.map (function
        | line when line |> SpiralSm.starts_with "\\#!" || line |> 
SpiralSm.starts_with "\\#r" ->
            System.Text.RegularExpressions.Regex.Replace (line, "^\\\\#", "#")
        | line -> line
    )
    |> SpiralSm.concat "\n"

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

$"a{nl}\\#!magic{nl}b{nl}"
|> escapeCell
|> _assertEqual (
    $"a{nl}#!magic{nl}b{nl}"
)

╭─[ 107.85ms - stdout ]────────────────────────────────────────────────────────╮
│ "a                                                                           │
│ #!magic                                                                      │
│ b                                                                            │
│ "                                                                            │
│                                                                              │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## magicMarker                                                               │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let magicMarker : Parser<string, unit> = pstring "#!"

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

"#!magic"
|> run magicMarker
|> _assertEqual (
    Success ("#!", (), Position ("", 2, 1, 3))
)

╭─[ 62.39ms - stdout ]─────────────────────────────────────────────────────────╮
│ Success: "#!"                                                                │
│                                                                              │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

"##!magic"
|> run magicMarker
|> _assertEqual (
    Failure (
        $"Error in Ln: 1 Col: 1{nl}##!magic{nl}^{nl}Expecting: '#!'{nl}",
        ParserError (
            Position ("", 0, 1, 1),
            (),
            ErrorMessageList (ExpectedString "#!")
        ),
        ()
    )
)

╭─[ 52.76ms - stdout ]─────────────────────────────────────────────────────────╮
│ Failure:                                                                     │
│ Error in Ln: 1 Col: 1                                                        │
│ ##!magic                                                                     │
│ ^                                                                            │
│ Expecting: '#!'                                                              │
│                                                                              │
│                                                                              │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## magicCommand                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let magicCommand =
    magicMarker
    >>. manyTill anyChar newline
    |>> (System.String.Concat >> SpiralSm.trim)

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

"#!magic

a"
|> run magicCommand
|> _assertEqual (
    Success ("magic", (), Position ("", 8, 2, 1))
)

╭─[ 65.32ms - stdout ]─────────────────────────────────────────────────────────╮
│ Success: "magic"                                                             │
│                                                                              │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

" #!magic

a"
|> run magicCommand
|> _assertEqual (
    Failure (
        $"Error in Ln: 1 Col: 1{nl} #!magic{nl}^{nl}Expecting: '#!'{nl}",
        ParserError (
            Position ("", 0, 1, 1),
            (),
            ErrorMessageList (ExpectedString "#!")
        ),
        ()
    )
)

╭─[ 39.18ms - stdout ]─────────────────────────────────────────────────────────╮
│ Failure:                                                                     │
│ Error in Ln: 1 Col: 1                                                        │
│  #!magic                                                                     │
│ ^                                                                            │
│ Expecting: '#!'                                                              │
│                                                                              │
│                                                                              │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## content                                                                   │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let content =
    (newline >>. magicMarker) <|> (eof >>. preturn "")
    |> attempt
    |> lookAhead
    |> manyTill anyChar
    |>> (System.String.Concat >> SpiralSm.trim)

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

"#!magic


a


"
|> run content
|> _assertEqual (
    Success ("#!magic


a", (), Position ("", 14, 7, 1))
)

╭─[ 33.72ms - stdout ]─────────────────────────────────────────────────────────╮
│ Success: "#!magic                                                            │
│                                                                              │
│                                                                              │
│ a"                                                                           │
│                                                                              │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## Output                                                                    │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
type Output =
    | Fs
    | Md
    | Spi
    | Spir

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## Magic                                                                     │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
type Magic =
    | Fsharp
    | Markdown
    | Spiral of Output
    | Magic of string

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## kernelOutputs                                                             │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let inline kernelOutputs magic =
    match magic with
    | Fsharp -> [[ Fs ]]
    | Markdown -> [[ Md ]]
    | Spiral output -> [[ output ]]
    | _ -> [[]]

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## Block                                                                     │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
type Block =
    {
        magic : Magic
        content : string
    }

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## block                                                                     │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let block =
    pipe2
        magicCommand
        content
        (fun magic content ->
            let magic, content =
                match magic with
                | "fsharp" -> Fsharp, content
                | "markdown" -> Markdown, content
                | "spiral" ->
                    let output = if content |> SpiralSm.contains "//// real\n" 
then Spir else Spi
                    let content =
                        if output = Spi
                        then content
                        else
                            content
                            |> SpiralSm.replace "//// real\n\n" ""
                            |> SpiralSm.replace "//// real\n" ""
                    Spiral output, content
                | magic -> magic |> Magic, content
            {
                magic = magic
                content = content
            })

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

"#!magic


a


"
|> run block
|> _assertEqual (
    Success (
        { magic = Magic "magic"; content = "a" },
        (),
        Position ("", 14, 7, 1)
    )
)

╭─[ 55.37ms - stdout ]─────────────────────────────────────────────────────────╮
│ Success: { magic = Magic "magic"                                             │
│   content = "a" }                                                            │
│                                                                              │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## blocks                                                                    │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let blocks =
    skipMany newline
    >>. sepEndBy block (skipMany1 newline)

── fsharp ──────────────────────────────────────────────────────────────────────
//// test


"#!magic1

a

\#!magic2

b

"
|> escapeCell
|> run blocks
|> _assertEqual (
    Success (
        [[
            { magic = Magic "magic1"; content = "a" }
            { magic = Magic "magic2"; content = "b" }
        ]],
        (),
        Position ("", 26, 9, 1)
    )
)

╭─[ 60.33ms - stdout ]─────────────────────────────────────────────────────────╮
│ Success: [{ magic = Magic "magic1"                                           │
│    content = "a" }; { magic = Magic "magic2"                                 │
│                       content = "b" }]                                       │
│                                                                              │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## formatBlock                                                               │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let inline formatBlock output (block : Block) =
    match output, block with
    | output, { magic = Markdown; content = content } ->
        let markdownComment =
            match output with
            | Spi | Spir -> "/// "
            | Fs -> "/// "
            | _ -> ""
        content
        |> SpiralSm.split "\n"
        |> Array.map (SpiralSm.trim_end [[||]])
        |> Array.filter (SpiralSm.ends_with " (test)" >> not)
        |> Array.map (function
            | "" -> markdownComment
            | line -> System.Text.RegularExpressions.Regex.Replace (line, 
"^\\s*", $"$&{markdownComment}")
        )
        |> SpiralSm.concat "\n"
    | Fs, { magic = Fsharp; content = content } ->
        let trimmedContent = content |> SpiralSm.trim
        if trimmedContent |> SpiralSm.contains "//// test\n"
            || trimmedContent |> SpiralSm.contains "//// ignore\n"
        then ""
        else
            content
            |> SpiralSm.split "\n"
            |> Array.filter (SpiralSm.trim_start [[||]] >> SpiralSm.starts_with 
"#r" >> not)
            |> SpiralSm.concat "\n"
    | (Spi | Spir), { magic = Spiral output'; content = content } when output' =
output ->
        let trimmedContent = content |> SpiralSm.trim
        if trimmedContent |> SpiralSm.contains "//// test\n"
            || trimmedContent |> SpiralSm.contains "//// ignore\n"
        then ""
        else content
    | _ -> ""

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

"#!markdown


a

    b

c


\#!markdown


c


\#!fsharp


let a = 1"
|> escapeCell
|> run block
|> function
    | Success (block, _, _) -> formatBlock Fs block
    | Failure (msg, _, _) -> failwith msg
|> _assertEqual "/// a
/// 
    /// b
/// 
/// c"

╭─[ 106.18ms - stdout ]────────────────────────────────────────────────────────╮
│ "/// a                                                                       │
│ ///                                                                          │
│     /// b                                                                    │
│ ///                                                                          │
│ /// c"                                                                       │
│                                                                              │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## formatBlocks                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let inline formatBlocks output blocks =
    blocks
    |> List.map (fun block ->
        block, formatBlock output block
    )
    |> List.filter (snd >> (<>) "")
    |> fun list ->
        (list, (None, [[]]))
        ||> List.foldBack (fun (block, content) (lastMagic, acc) ->
            let lineBreak =
                if block.magic = Markdown && lastMagic <> Some Markdown && 
lastMagic <> None
                then ""
                else "\n"
            Some block.magic, $"{content}{lineBreak}" :: acc
        )
    |> snd
    |> SpiralSm.concat "\n"

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

"#!markdown


a

b


\#!markdown


c


\#!fsharp


let a = 1

\#!markdown

d (test)

\#!fsharp

//// test

let a = 2

\#!markdown

e

\#!fsharp

let a = 3"
|> escapeCell
|> run blocks
|> function
    | Success (blocks, _, _) -> formatBlocks Fs blocks
    | Failure (msg, _, _) -> failwith msg
|> _assertEqual "/// a
/// 
/// b

/// c
let a = 1

/// e
let a = 3
"

╭─[ 96.33ms - stdout ]─────────────────────────────────────────────────────────╮
│ "/// a                                                                       │
│ ///                                                                          │
│ /// b                                                                        │
│                                                                              │
│ /// c                                                                        │
│ let a = 1                                                                    │
│                                                                              │
│ /// e                                                                        │
│ let a = 3                                                                    │
│ "                                                                            │
│                                                                              │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## parse                                                                     │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let inline parse output input =
    match run blocks input with
    | Success (blocks, _, _) ->
        let blocks =
            blocks
            |> List.filter (fun block ->
                block.magic |> kernelOutputs |> List.contains output || 
block.magic = Markdown
            )

        match blocks with
        | { magic = Markdown; content = content } :: _
            when output = Fs
            && content |> SpiralSm.starts_with "# "
            && content |> SpiralSm.ends_with ")"
            ->
            let inline indentBlock (block : Block) =
                { block with
                    content =
                        block.content
                        |> SpiralSm.split "\n"
                        |> Array.fold
                            (fun (lines, isMultiline) line ->
                                let trimmedLine = line |> SpiralSm.trim
                                if trimmedLine = ""
                                then "" :: lines, isMultiline
                                else
                                    let inline singleQuoteLine () =
                                        trimmedLine |> Seq.sumBy ((=) '"' >> 
System.Convert.ToInt32) = 1
                                        && trimmedLine |> SpiralSm.contains 
@"'""'" |> not
                                        && trimmedLine |> SpiralSm.ends_with "{"
|> not
                                        && trimmedLine |> SpiralSm.ends_with 
"{|" |> not
                                        && trimmedLine |> SpiralSm.starts_with 
"}" |> not
                                        && trimmedLine |> SpiralSm.starts_with 
"|}" |> not

                                    match isMultiline, trimmedLine |> 
SpiralSm.split_string [[| $"{q}{q}{q}" |]] with
                                    | false, [[| _; _ |]] ->
                                        $"    {line}" :: lines, true

                                    | true, [[| _; _ |]] ->
                                        line :: lines, false

                                    | false, _ when singleQuoteLine () ->
                                        $"    {line}" :: lines, true

                                    | false, _ when line |> SpiralSm.starts_with
"#" && block.magic = Fsharp ->
                                        line :: lines, false

                                    | false, _ ->
                                        $"    {line}" :: lines, false

                                    | true, _ when singleQuoteLine () && line |>
SpiralSm.starts_with "    " ->
                                        $"    {line}" :: lines, false

                                    | true, _ when singleQuoteLine () ->
                                        line :: lines, false

                                    | true, _ ->
                                        line :: lines, true
                            )
                            ([[]], false)
                        |> fst
                        |> List.rev
                        |> SpiralSm.concat "\n"
                }

            let moduleName, namespaceName =
                System.Text.RegularExpressions.Regex.Match (content, @"# (.*) 
\((.*)\)$")
                |> fun m -> m.Groups.[[1]].Value, m.Groups.[[2]].Value

            let moduleBlock =
                {
                    magic = Fsharp
                    content =
                        $"#if !INTERACTIVE
namespace {namespaceName}
#endif

module {moduleName} ="
                }

            blocks
            |> List.indexed
            |> List.fold
                (fun blocks (index, block) ->
                    match index with
                    | 0 -> blocks
                    | 1 -> indentBlock block :: moduleBlock :: blocks
                    | _ -> indentBlock block :: blocks
                )
                [[]]
            |> List.rev
        | _ -> blocks
        |> Result.Ok
    | Failure (errorMsg, _, _) -> Result.Error errorMsg

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

let example1 =
    $"""#!meta

{{"kernelInfo":{{"defaultKernelName":"fsharp","items":[[{{"aliases":[[]],"name":
"fsharp"}},{{"aliases":[[]],"name":"fsharp"}}]]}}}}

\#!markdown

# TestModule (TestNamespace)

\#!fsharp

\#!import file.dib

\#!fsharp

\#r "nuget:Expecto"

\#!markdown

## ParserLibrary

\#!fsharp

open System

\#!markdown

## x (test)

\#!fsharp

//// ignore

let x = 1

\#!spiral

//// test

inl x = 1i32

\#!spiral

//// real

inl x = 2i32

\#!spiral

inl x = 3i32

\#!markdown

### TextInput

\#!fsharp

let str1 = "abc
def"

let str2 =
    "abc\
def"

let str3 =
    $"1{{
        1
    }}1"

let str4 =
    $"1{{({{|
        a = 1
    |}}).a}}1"

let str5 =
    "abc \
        def"

let x =
    match '"' with
    | '"' -> true
    | _ -> false

let long1 = {q}{q}{q}a{q}{q}{q}

let long2 =
    {q}{q}{q}
a
{q}{q}{q}

\#!fsharp

type Position =
    {{
#if INTERACTIVE
        line : string
#else
        line : int
#endif
        column : int
    }}"""
    |> escapeCell

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

example1
|> parse Fs
|> Result.toOption
|> Option.get
|> (formatBlocks Fs)
|> _assertEqual $"""#if !INTERACTIVE
namespace TestNamespace
#endif

module TestModule =

    /// ## ParserLibrary
    open System

    /// ### TextInput
    let str1 = "abc
def"

    let str2 =
        "abc\
def"

    let str3 =
        $"1{{
            1
        }}1"

    let str4 =
        $"1{{({{|
            a = 1
        |}}).a}}1"

    let str5 =
        "abc \
            def"

    let x =
        match '"' with
        | '"' -> true
        | _ -> false

    let long1 = {q}{q}{q}a{q}{q}{q}

    let long2 =
        {q}{q}{q}
a
{q}{q}{q}

    type Position =
        {{
#if INTERACTIVE
            line : string
#else
            line : int
#endif
            column : int
        }}
"""

╭─[ 329.79ms - stdout ]────────────────────────────────────────────────────────╮
│ "#if !INTERACTIVE                                                            │
│ namespace TestNamespace                                                      │
│ #endif                                                                       │
│                                                                              │
│ module TestModule =                                                          │
│                                                                              │
│     /// ## ParserLibrary                                                     │
│     open System                                                              │
│                                                                              │
│     /// ### TextInput                                                        │
│     let str1 = "abc                                                          │
│ def"                                                                         │
│                                                                              │
│     let str2 =                                                               │
│         "abc\                                                                │
│ def"                                                                         │
│                                                                              │
│     let str3 =                                                               │
│         $"1{                                                                 │
│             1                                                                │
│         }1"                                                                  │
│                                                                              │
│     let str4 =                                                               │
│         $"1{({|                                                              │
│             a = 1                                                            │
│         |}).a}1"                                                             │
│                                                                              │
│     let str5 =                                                               │
│         "abc \                                                               │
│             def"                                                             │
│                                                                              │
│     let x =                                                                  │
│         match '"' with                                                       │
│         | '"' -> true                                                        │
│         | _ -> false                                                         │
│                                                                              │
│     let long1 = """a"""                                                      │
│                                                                              │
│     let long2 =                                                              │
│         """                                                                  │
│ a                                                                            │
│ """                                                                          │
│                                                                              │
│     type Position =                                                          │
│         {                                                                    │
│ #if INTERACTIVE                                                              │
│             line : string                                                    │
│ #else                                                                        │
│             line : int                                                       │
│ #endif                                                                       │
│             column : int                                                     │
│         }                                                                    │
│ "                                                                            │
│                                                                              │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

example1
|> parse Md
|> Result.toOption
|> Option.get
|> (formatBlocks Md)
|> _assertEqual "# TestModule (TestNamespace)

## ParserLibrary

### TextInput
"

╭─[ 214.22ms - stdout ]────────────────────────────────────────────────────────╮
│ "# TestModule (TestNamespace)                                                │
│                                                                              │
│ ## ParserLibrary                                                             │
│                                                                              │
│ ### TextInput                                                                │
│ "                                                                            │
│                                                                              │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

example1
|> parse Spi
|> Result.toOption
|> Option.get
|> (formatBlocks Spi)
|> _assertEqual "/// # TestModule (TestNamespace)

/// ## ParserLibrary
inl x = 3i32

/// ### TextInput
"

╭─[ 223.51ms - stdout ]────────────────────────────────────────────────────────╮
│ "/// # TestModule (TestNamespace)                                            │
│                                                                              │
│ /// ## ParserLibrary                                                         │
│ inl x = 3i32                                                                 │
│                                                                              │
│ /// ### TextInput                                                            │
│ "                                                                            │
│                                                                              │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

example1
|> parse Spir
|> Result.toOption
|> Option.get
|> (formatBlocks Spir)
|> _assertEqual "/// # TestModule (TestNamespace)

/// ## ParserLibrary
inl x = 2i32

/// ### TextInput
"

╭─[ 202.29ms - stdout ]────────────────────────────────────────────────────────╮
│ "/// # TestModule (TestNamespace)                                            │
│                                                                              │
│ /// ## ParserLibrary                                                         │
│ inl x = 2i32                                                                 │
│                                                                              │
│ /// ### TextInput                                                            │
│ "                                                                            │
│                                                                              │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## parseDibCode                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let inline parseDibCode output file = async {
    trace Debug
        (fun () -> "parseDibCode")
        (fun () -> $"output: {output} / file: {file} / {_locals ()}")
    let! input = file |> SpiralFileSystem.read_all_text_async
    match parse output input with
    | Result.Ok blocks -> return blocks |> formatBlocks output
    | Result.Error msg -> return failwith msg
}

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## writeDibCode                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let inline writeDibCode output path = async {
    trace Debug
        (fun () -> "writeDibCode")
        (fun () -> $"output: {output} / path: {path} / {_locals ()}")
    let! result = parseDibCode output path
    let pathDir = path |> System.IO.Path.GetDirectoryName
    let fileNameWithoutExt =
        match output, path |> System.IO.Path.GetFileNameWithoutExtension with
        | Spir, fileNameWithoutExt -> $"{fileNameWithoutExt}_real"
        | _, fileNameWithoutExt -> fileNameWithoutExt
    let outputPath = pathDir </> $"{fileNameWithoutExt}.{output |> string |> 
SpiralSm.to_lower}"
    do! result |> SpiralFileSystem.write_all_text_async outputPath
}

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## Arguments                                                                 │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
[[<RequireQualifiedAccess>]]
type Arguments =
    | [[<Argu.ArguAttributes.MainCommand; Argu.ArguAttributes.Mandatory>]]
        File of file : string * Output

    interface Argu.IArgParserTemplate with
        member s.Usage =
            match s with
            | File _ -> nameof File

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

Argu.ArgumentParser.Create<Arguments>().PrintUsage ()

╭─[ 156.49ms - return value ]──────────────────────────────────────────────────╮
│ "USAGE: dotnet-repl [--help] <file> <fs|md|spi|spir>                         │
│                                                                              │
│ FILE:                                                                        │
│                                                                              │
│     <file> <fs|md|spi|spir>                                                  │
│                           File                                               │
│                                                                              │
│ OPTIONS:                                                                     │
│                                                                              │
│     --help                display this list of options.                      │
│ "                                                                            │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## main                                                                      │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let main args =
    let argsMap = args |> Runtime.parseArgsMap<Arguments>

    let files =
        argsMap.[[nameof Arguments.File]]
        |> List.map (function
            | Arguments.File (path, output) -> path, output
        )

    files
    |> List.map (fun (path, output) -> path |> writeDibCode output)
    |> Async.Parallel
    |> Async.Ignore
    |> Async.runWithTimeout 30000
    |> function
        | Some () -> 0
        | None -> 1

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

let args =
    System.Environment.GetEnvironmentVariable "ARGS"
    |> SpiralRuntime.split_args
    |> Result.toArray
    |> Array.collect id

match args with
| [[||]] -> 0
| args -> if main args = 0 then 0 else failwith "main failed"

╭─[ 253.14ms - return value ]──────────────────────────────────────────────────╮
│ <div class="dni-plaintext"><pre>0                                            │
│ </pre></div><style>                                                          │
│ .dni-code-hint {                                                             │
│     font-style: italic;                                                      │
│     overflow: hidden;                                                        │
│     white-space: nowrap;                                                     │
│ }                                                                            │
│ .dni-treeview {                                                              │
│     white-space: nowrap;                                                     │
│ }                                                                            │
│ .dni-treeview td {                                                           │
│     vertical-align: top;                                                     │
│     text-align: start;                                                       │
│ }                                                                            │
│ details.dni-treeview {                                                       │
│     padding-left: 1em;                                                       │
│ }                                                                            │
│ table td {                                                                   │
│     text-align: start;                                                       │
│ }                                                                            │
│ table tr {                                                                   │
│     vertical-align: top;                                                     │
│     margin: 0em 0px;                                                         │
│ }                                                                            │
│ table tr td pre                                                              │
│ {                                                                            │
│     vertical-align: top !important;                                          │
│     margin: 0em 0px !important;                                              │
│ }                                                                            │
│ table th {                                                                   │
│     text-align: start;                                                       │
│ }                                                                            │
│ </style>                                                                     │
╰──────────────────────────────────────────────────────────────────────────────╯

╭─[ 256.82ms - stdout ]────────────────────────────────────────────────────────╮
│ 00:00:08 d #1 writeDibCode / output: Fs / path: Builder.dib             │
│ 00:00:08 d #2 parseDibCode / output: Fs / file: Builder.dib             │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯
00:00:00 d #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "Builder.dib"])) }
00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/polyglot/apps/builder/Builder.dib", "--output-path", "c:/home/git/polyglot/apps/builder/Builder.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/polyglot/apps/builder/Builder.dib" --output-path "c:/home/git/polyglot/apps/builder/Builder.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ # Builder (Polyglot)                                                         │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> #r 
> @"../../../../../../../.nuget/packages/fsharp.control.asyncseq/3.2.1/lib/netstan
> dard2.1/FSharp.Control.AsyncSeq.dll"
> #r 
> @"../../../../../../../.nuget/packages/system.reactive/6.0.1-preview.1/lib/net6.
> 0/System.Reactive.dll"
> #r 
> @"../../../../../../../.nuget/packages/system.reactive.linq/6.0.1-preview.1/lib/
> netstandard2.0/System.Reactive.Linq.dll"
> #r 
> @"../../../../../../../.nuget/packages/argu/6.2.4/lib/netstandard2.0/Argu.dll"
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> #if !INTERACTIVE
> open Lib
> #endif
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> open Common
> open SpiralFileSystem.Operators
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ## buildProject                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline buildProject runtime outputDir path = async {
>     let fullPath = path |> System.IO.Path.GetFullPath
>     let fileDir = fullPath |> System.IO.Path.GetDirectoryName
>     let extension = fullPath |> System.IO.Path.GetExtension
> 
>     trace Debug
>         (fun () -> "buildProject")
>         (fun () -> $"fullPath: {fullPath} / {_locals ()}")
> 
>     match extension with
>     | ".fsproj" -> ()
>     | _ -> failwith "Invalid project file"
> 
>     let runtimes =
>         runtime
>         |> Option.map List.singleton
>         |> Option.defaultValue [[ "linux-x64"; "win-x64" ]]
> 
>     let outputDir = outputDir |> Option.defaultValue "dist"
> 
>     return!
>         runtimes
>         |> List.map (fun runtime -> async {
>             let command = $@"dotnet publish ""{path}"" --configuration Release 
> --output ""{outputDir}"" --runtime {runtime}"
>             let! exitCode, _result =
>                 SpiralRuntime.execution_options (fun x ->
>                     { x with
>                         l0 = command
>                         l6 = Some fileDir
>                     }
>                 )
>                 |> SpiralRuntime.execute_with_options_async
>             return exitCode
>         })
>         |> Async.Sequential
>         |> Async.map Array.sum
> }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ## persistCodeProject                                                        │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline persistCodeProject packages modules name hash code = async {
>     trace Debug
>         (fun () -> "persistCodeProject")
>         (fun () -> $"packages: {packages} / modules: {modules} / name: {name} / 
> hash: {hash} / code.Length: {code |> String.length} / {_locals ()}")
> 
>     let workspaceRoot = SpiralFileSystem.get_workspace_root ()
> 
>     let targetDir =
>         let targetDir = workspaceRoot </> "target/Builder" </> name
>         match hash with
>         | Some hash -> targetDir </> "packages" </> hash
>         | None -> targetDir
>     targetDir |> System.IO.Directory.CreateDirectory |> ignore
> 
>     let filePath = targetDir </> $"{name}.fs" |> System.IO.Path.GetFullPath
>     do! code |> SpiralFileSystem.write_all_text_exists filePath
> 
>     let modulesCode =
>         modules
>         |> List.map (fun path -> $"""<Compile Include="{workspaceRoot </> path}"
> />""")
>         |> SpiralSm.concat "\n        "
> 
>     let fsprojPath = targetDir </> $"{name}.fsproj"
>     let fsprojCode = $"""<Project Sdk="Microsoft.NET.Sdk">
>     <PropertyGroup>
>         <TargetFramework>net9.0</TargetFramework>
>         <LangVersion>preview</LangVersion>
>         <RollForward>Major</RollForward>
>         <TargetLatestRuntimePatch>true</TargetLatestRuntimePatch>
>         <PublishAot>false</PublishAot>
>         <PublishTrimmed>false</PublishTrimmed>
>         <PublishSingleFile>true</PublishSingleFile>
>         <SelfContained>true</SelfContained>
>         <Version>0.0.1-alpha.1</Version>
>         <OutputType>Exe</OutputType>
>     </PropertyGroup>
> 
>     <PropertyGroup Condition="$([[MSBuild]]::IsOSPlatform('FreeBSD'))">
>         <DefineConstants>_FREEBSD</DefineConstants>
>     </PropertyGroup>
> 
>     <PropertyGroup Condition="$([[MSBuild]]::IsOSPlatform('Linux'))">
>         <DefineConstants>_LINUX</DefineConstants>
>     </PropertyGroup>
> 
>     <PropertyGroup Condition="$([[MSBuild]]::IsOSPlatform('OSX'))">
>         <DefineConstants>_OSX</DefineConstants>
>     </PropertyGroup>
> 
>     <PropertyGroup Condition="$([[MSBuild]]::IsOSPlatform('Windows'))">
>         <DefineConstants>_WINDOWS</DefineConstants>
>     </PropertyGroup>
> 
>     <ItemGroup>
>         {modulesCode}
>         <Compile Include="{filePath}" />
>     </ItemGroup>
> 
>     <Import Project="{workspaceRoot}/.paket/Paket.Restore.targets" />
> </Project>
> """
>     do! fsprojCode |> SpiralFileSystem.write_all_text_exists fsprojPath
> 
>     let paketReferencesPath = targetDir </> "paket.references"
>     let paketReferencesCode =
>         "FSharp.Core" :: packages
>         |> SpiralSm.concat "\n"
>     do! paketReferencesCode |> SpiralFileSystem.write_all_text_exists 
> paketReferencesPath
> 
>     return fsprojPath
> }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ## buildCode                                                                 │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline buildCode runtime packages modules outputDir name code = async {
>     let! fsprojPath = code |> persistCodeProject packages modules name None
>     let! exitCode = fsprojPath |> buildProject runtime outputDir
>     if exitCode <> 0 then
>         let! fsprojText = fsprojPath |> SpiralFileSystem.read_all_text_async
>         trace Critical
>             (fun () -> "buildCode")
>             (fun () -> $"code: {code |> SpiralSm.ellipsis_end 400} / fsprojText:
> {fsprojText} / {_locals ()}")
>     return exitCode
> }
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> "1 + 1 |> ignore"
> |> buildCode None [[]] [[]] None "test1"
> |> Async.runWithTimeout 180000
> |> _assertEqual (Some 0)
> 
> ╭─[ 7.15s - stdout ]───────────────────────────────────────────────────────────╮
> │ 00:00:03 d #1 persistCodeProject / packages: [] / modules: [] / name:   │
> │ test1 / hash:  / code.Length: 15                                             │
> │ 00:00:03 d #2 buildProject / fullPath:                                  │
> │ C:\home\git\polyglot\target\Builder\test1\test1.fsproj                       │
> │ 00:00:08 d #1 runtime.execute_with_options_async / { file_name =        │
> │ dotnet; arguments = US5_0                                                    │
> │   "publish "C:\home\git\polyglot\target/Builder\test1\test1.fsproj"          │
> │ --configuration Release --output "dist" --runtime linux-x64"; options = {    │
> │ command = dotnet publish                                                     │
> │ "C:\home\git\polyglot\target/Builder\test1\test1.fsproj" --configuration     │
> │ Release --output "dist" --runtime linux-x64; cancellation_token = None;      │
> │ environment_variables = [||]; on_line = None; stdin = None; trace = true;    │
> │ working_directory = Some "C:\home\git\polyglot\target\Builder\test1" } }     │
> │ 00:00:08 v #2 > MSBuild version 17.10.0-preview-24101-01+07fd5d51f for  │
> │ .NET                                                                         │
> │ 00:00:09 v #3 >   Determining projects to restore...                    │
> │ 00:00:09 v #4 >   Restored                                              │
> │ C:\home\git\polyglot\target\Builder\test1\test1.fsproj (in 398 ms).          │
> │ 00:00:09 v #5 >                                                         │
> │ C:\Users\i574n\scoop\apps\dotnet-sdk-preview\current\sdk\9.0.100-preview.1.2 │
> │ 4101.2\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.RuntimeIdentifierInferen │
> │ ce.targets(313,5): message NETSDK1057: You are using a preview version of    │
> │ .NET. See: https://aka.ms/dotnet-support-policy [                            │
> │ C:\home\git\polyglot\target\Builder\test1\test1.fsproj]                      │
> │ 00:00:10 v #6 >   test1 ->                                              │
> │ C:\home\git\polyglot\target\Builder\test1\bin\Release\net9.0\linux-x64\test1 │
> │ .dll                                                                         │
> │ 00:00:11 v #7 >   test1 ->                                              │
> │ C:\home\git\polyglot\target\Builder\test1\dist\                              │
> │ 00:00:11 d #8 runtime.execute_with_options_async / { exit_code = 0;     │
> │ output_length = 657 }                                                        │
> │ 00:00:11 d #9 runtime.execute_with_options_async / { file_name =        │
> │ dotnet; arguments = US5_0                                                    │
> │   "publish "C:\home\git\polyglot\target/Builder\test1\test1.fsproj"          │
> │ --configuration Release --output "dist" --runtime win-x64"; options = {      │
> │ command = dotnet publish                                                     │
> │ "C:\home\git\polyglot\target/Builder\test1\test1.fsproj" --configuration     │
> │ Release --output "dist" --runtime win-x64; cancellation_token = None;        │
> │ environment_variables = [||]; on_line = None; stdin = None; trace = true;    │
> │ working_directory = Some "C:\home\git\polyglot\target\Builder\test1" } }     │
> │ 00:00:11 v #10 > MSBuild version 17.10.0-preview-24101-01+07fd5d51f for │
> │ .NET                                                                         │
> │ 00:00:12 v #11 >   Determining projects to restore...                   │
> │ 00:00:13 v #12 >   Restored                                             │
> │ C:\home\git\polyglot\target\Builder\test1\test1.fsproj (in 360 ms).          │
> │ 00:00:13 v #13 >                                                        │
> │ C:\Users\i574n\scoop\apps\dotnet-sdk-preview\current\sdk\9.0.100-preview.1.2 │
> │ 4101.2\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.RuntimeIdentifierInferen │
> │ ce.targets(313,5): message NETSDK1057: You are using a preview version of    │
> │ .NET. See: https://aka.ms/dotnet-support-policy [                            │
> │ C:\home\git\polyglot\target\Builder\test1\test1.fsproj]                      │
> │ 00:00:13 v #14 >   test1 ->                                             │
> │ C:\home\git\polyglot\target\Builder\test1\bin\Release\net9.0\win-x64\test1.d │
> │ ll                                                                           │
> │ 00:00:14 v #15 >   test1 ->                                             │
> │ C:\home\git\polyglot\target\Builder\test1\dist\                              │
> │ 00:00:14 d #16 runtime.execute_with_options_async / { exit_code = 0;    │
> │ output_length = 655 }                                                        │
> │ Some 0                                                                       │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> "1 + a |> ignore"
> |> buildCode None [[]] [[]] None "test2"
> |> Async.runWithTimeout 180000
> |> _assertEqual (Some 2)
> 
> ╭─[ 6.06s - stdout ]───────────────────────────────────────────────────────────╮
> │ 00:00:10 d #3 persistCodeProject / packages: [] / modules: [] / name:   │
> │ test2 / hash:  / code.Length: 15                                             │
> │ 00:00:10 d #4 buildProject / fullPath:                                  │
> │ C:\home\git\polyglot\target\Builder\test2\test2.fsproj                       │
> │ 00:00:15 d #17 runtime.execute_with_options_async / { file_name =       │
> │ dotnet; arguments = US5_0                                                    │
> │   "publish "C:\home\git\polyglot\target/Builder\test2\test2.fsproj"          │
> │ --configuration Release --output "dist" --runtime linux-x64"; options = {    │
> │ command = dotnet publish                                                     │
> │ "C:\home\git\polyglot\target/Builder\test2\test2.fsproj" --configuration     │
> │ Release --output "dist" --runtime linux-x64; cancellation_token = None;      │
> │ environment_variables = [||]; on_line = None; stdin = None; trace = true;    │
> │ working_directory = Some "C:\home\git\polyglot\target\Builder\test2" } }     │
> │ 00:00:15 v #18 > MSBuild version 17.10.0-preview-24101-01+07fd5d51f for │
> │ .NET                                                                         │
> │ 00:00:15 v #19 >   Determining projects to restore...                   │
> │ 00:00:16 v #20 >   Restored                                             │
> │ C:\home\git\polyglot\target\Builder\test2\test2.fsproj (in 325 ms).          │
> │ 00:00:16 v #21 >                                                        │
> │ C:\Users\i574n\scoop\apps\dotnet-sdk-preview\current\sdk\9.0.100-preview.1.2 │
> │ 4101.2\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.RuntimeIdentifierInferen │
> │ ce.targets(313,5): message NETSDK1057: You are using a preview version of    │
> │ .NET. See: https://aka.ms/dotnet-support-policy [                            │
> │ C:\home\git\polyglot\target\Builder\test2\test2.fsproj]                      │
> │ 00:00:18 v #22 >                                                        │
> │ C:\home\git\polyglot\target\Builder\test2\test2.fs(1,5): error FS0039: The   │
> │ value or constructor 'a' is not defined. [                                   │
> │ C:\home\git\polyglot\target\Builder\test2\test2.fsproj]                      │
> │ 00:00:18 d #23 runtime.execute_with_options_async / { exit_code = 1;    │
> │ output_length = 679 }                                                        │
> │ 00:00:18 d #24 runtime.execute_with_options_async / { file_name =       │
> │ dotnet; arguments = US5_0                                                    │
> │   "publish "C:\home\git\polyglot\target/Builder\test2\test2.fsproj"          │
> │ --configuration Release --output "dist" --runtime win-x64"; options = {      │
> │ command = dotnet publish                                                     │
> │ "C:\home\git\polyglot\target/Builder\test2\test2.fsproj" --configuration     │
> │ Release --output "dist" --runtime win-x64; cancellation_token = None;        │
> │ environment_variables = [||]; on_line = None; stdin = None; trace = true;    │
> │ working_directory = Some "C:\home\git\polyglot\target\Builder\test2" } }     │
> │ 00:00:18 v #25 > MSBuild version 17.10.0-preview-24101-01+07fd5d51f for │
> │ .NET                                                                         │
> │ 00:00:18 v #26 >   Determining projects to restore...                   │
> │ 00:00:19 v #27 >   Restored                                             │
> │ C:\home\git\polyglot\target\Builder\test2\test2.fsproj (in 322 ms).          │
> │ 00:00:19 v #28 >                                                        │
> │ C:\Users\i574n\scoop\apps\dotnet-sdk-preview\current\sdk\9.0.100-preview.1.2 │
> │ 4101.2\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.RuntimeIdentifierInferen │
> │ ce.targets(313,5): message NETSDK1057: You are using a preview version of    │
> │ .NET. See: https://aka.ms/dotnet-support-policy [                            │
> │ C:\home\git\polyglot\target\Builder\test2\test2.fsproj]                      │
> │ 00:00:20 v #29 >                                                        │
> │ C:\home\git\polyglot\target\Builder\test2\test2.fs(1,5): error FS0039: The   │
> │ value or constructor 'a' is not defined. [                                   │
> │ C:\home\git\polyglot\target\Builder\test2\test2.fsproj]                      │
> │ 00:00:21 d #30 runtime.execute_with_options_async / { exit_code = 1;    │
> │ output_length = 679 }                                                        │
> │ 00:00:15 c #5 buildCode / code: 1 + a |> ignore / fsprojText: <Project  │
> │ Sdk="Microsoft.NET.Sdk">                                                     │
> │     <PropertyGroup>                                                          │
> │         <TargetFramework>net9.0</TargetFramework>                            │
> │         <LangVersion>preview</LangVersion>                                   │
> │         <RollForward>Major</RollForward>                                     │
> │         <TargetLatestRuntimePatch>true</TargetLatestRuntimePatch>            │
> │         <PublishAot>false</PublishAot>                                       │
> │         <PublishTrimmed>false</PublishTrimmed>                               │
> │         <PublishSingleFile>true</PublishSingleFile>                          │
> │         <SelfContained>true</SelfContained>                                  │
> │         <Version>0.0.1-alpha.1</Version>                                     │
> │         <OutputType>Exe</OutputType>                                         │
> │     </PropertyGroup>                                                         │
> │                                                                              │
> │     <PropertyGroup Condition="$([MSBuild]::IsOSPlatform('FreeBSD'))">        │
> │         <DefineConstants>_FREEBSD</DefineConstants>                          │
> │     </PropertyGroup>                                                         │
> │                                                                              │
> │     <PropertyGroup Condition="$([MSBuild]::IsOSPlatform('Linux'))">          │
> │         <DefineConstants>_LINUX</DefineConstants>                            │
> │     </PropertyGroup>                                                         │
> │                                                                              │
> │     <PropertyGroup Condition="$([MSBuild]::IsOSPlatform('OSX'))">            │
> │         <DefineConstants>_OSX</DefineConstants>                              │
> │     </PropertyGroup>                                                         │
> │                                                                              │
> │     <PropertyGroup Condition="$([MSBuild]::IsOSPlatform('Windows'))">        │
> │         <DefineConstants>_WINDOWS</DefineConstants>                          │
> │     </PropertyGroup>                                                         │
> │                                                                              │
> │     <ItemGroup>                                                              │
> │                                                                              │
> │         <Compile                                                             │
> │ Include="C:\home\git\polyglot\target\Builder\test2\test2.fs" />              │
> │     </ItemGroup>                                                             │
> │                                                                              │
> │     <Import Project="C:\home\git\polyglot/.paket/Paket.Restore.targets" />   │
> │ </Project>                                                                   │
> │                                                                              │
> │ Some 2                                                                       │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ## readFile                                                                  │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline readFile path = async {
>     let! code = path |> SpiralFileSystem.read_all_text_async
> 
>     let code = System.Text.RegularExpressions.Regex.Replace (
>         code,
>         @"( *)(let\s+main\s+.*?\s*=)",
>         fun m -> m.Groups.[[1]].Value + "[[<EntryPoint>]]\n" + 
> m.Groups.[[1]].Value + m.Groups.[[2]].Value
>     )
> 
>     let codeTrim = code |> SpiralSm.trim_end [[||]]
>     return
>         if codeTrim |> SpiralSm.ends_with "\n()"
>         then codeTrim |> SpiralSm.slice 0 ((codeTrim |> String.length) - 3)
>         else code
> }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ## buildFile                                                                 │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline buildFile runtime packages modules path = async {
>     let fullPath = path |> System.IO.Path.GetFullPath
>     let dir = fullPath |> System.IO.Path.GetDirectoryName
>     let name = fullPath |> System.IO.Path.GetFileNameWithoutExtension
>     let! code = fullPath |> readFile
>     return! code |> buildCode runtime packages modules (dir </> "dist" |> Some) 
> name
> }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ## persistFile                                                               │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline persistFile packages modules path = async {
>     let fullPath = path |> System.IO.Path.GetFullPath
>     let name = fullPath |> System.IO.Path.GetFileNameWithoutExtension
>     let! code = fullPath |> readFile
>     return! code |> persistCodeProject packages modules name None
> }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ## Arguments                                                                 │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> [[<RequireQualifiedAccess>]]
> type Arguments =
>     | [[<Argu.ArguAttributes.MainCommand; Argu.ArguAttributes.ExactlyOnce>]] 
> Path of path : string
>     | [[<Argu.ArguAttributes.Unique>]] Packages of packages : string list
>     | [[<Argu.ArguAttributes.Unique>]] Modules of modules : string list
>     | [[<Argu.ArguAttributes.Unique>]] Runtime of runtime : string
>     | [[<Argu.ArguAttributes.Unique>]] Persist_Only
> 
>     interface Argu.IArgParserTemplate with
>         member s.Usage =
>             match s with
>             | Path _ -> nameof Path
>             | Packages _ -> nameof Packages
>             | Modules _ -> nameof Modules
>             | Runtime _ -> nameof Runtime
>             | Persist_Only -> nameof Persist_Only
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> Argu.ArgumentParser.Create<Arguments>().PrintUsage ()
> 
> ╭─[ 122.02ms - return value ]──────────────────────────────────────────────────╮
> │ "USAGE: dotnet-repl [--help] [--packages [<packages>...]]                    │
> │                    [--modules [<modules>...]] [--runtime <runtime>]          │
> │                    [--persist-only] <path>                                   │
> │                                                                              │
> │ PATH:                                                                        │
> │                                                                              │
> │     <path>                Path                                               │
> │                                                                              │
> │ OPTIONS:                                                                     │
> │                                                                              │
> │     --packages [<packages>...]                                               │
> │                           Packages                                           │
> │     --modules [<modules>...]                                                 │
> │                           Modules                                            │
> │     --runtime <runtime>   Runtime                                            │
> │     --persist-only        Persist_Only                                       │
> │     --help                display this list of options.                      │
> │ "                                                                            │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ## main                                                                      │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let main args =
>     let argsMap = args |> Runtime.parseArgsMap<Arguments>
> 
>     let path =
>         match argsMap.[[nameof Arguments.Path]] with
>         | [[ Arguments.Path path ]] -> Some path
>         | _ -> None
>         |> Option.get
> 
>     let packages =
>         match argsMap |> Map.tryFind (nameof Arguments.Packages) with
>         | Some [[ Arguments.Packages packages ]] -> packages
>         | _ -> [[]]
> 
>     let modules =
>         match argsMap |> Map.tryFind (nameof Arguments.Modules) with
>         | Some [[ Arguments.Modules modules ]] -> modules
>         | _ -> [[]]
> 
>     let runtime =
>         match argsMap |> Map.tryFind (nameof Arguments.Runtime) with
>         | Some [[ Arguments.Runtime runtime ]] -> Some runtime
>         | _ -> None
> 
>     let persistOnly = argsMap |> Map.containsKey (nameof Arguments.Persist_Only)
> 
>     if persistOnly
>     then path |> persistFile packages modules |> Async.map (fun _ -> 0)
>     else path |> buildFile runtime packages modules
>     |> Async.runWithTimeout (60000 * 60)
>     |> function
>         | Some exitCode -> exitCode
>         | None -> 1
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let args =
>     System.Environment.GetEnvironmentVariable "ARGS"
>     |> SpiralRuntime.split_args
>     |> Result.toArray
>     |> Array.collect id
> 
> match args with
> | [[||]] -> 0
> | args -> if main args = 0 then 0 else failwith "main failed"
> 
> ╭─[ 26.69s - return value ]────────────────────────────────────────────────────╮
> │ <div class="dni-plaintext"><pre>0                                            │
> │ </pre></div><style>                                                          │
> │ .dni-code-hint {                                                             │
> │     font-style: italic;                                                      │
> │     overflow: hidden;                                                        │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview {                                                              │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview td {                                                           │
> │     vertical-align: top;                                                     │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ details.dni-treeview {                                                       │
> │     padding-left: 1em;                                                       │
> │ }                                                                            │
> │ table td {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ table tr {                                                                   │
> │     vertical-align: top;                                                     │
> │     margin: 0em 0px;                                                         │
> │ }                                                                            │
> │ table tr td pre                                                              │
> │ {                                                                            │
> │     vertical-align: top !important;                                          │
> │     margin: 0em 0px !important;                                              │
> │ }                                                                            │
> │ table th {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ </style>                                                                     │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ╭─[ 26.69s - stdout ]──────────────────────────────────────────────────────────╮
> │ 00:00:17 d #6 persistCodeProject / packages: [Argu;                     │
> │ FSharp.Control.AsyncSeq; System.Reactive.Linq] / modules: [                  │
> │ lib/spiral/common.fsx; lib/spiral/sm.fsx; lib/spiral/crypto.fsx; ... ] /     │
> │ name: Builder / hash:  / code.Length: 8210                                   │
> │ 00:00:17 d #7 buildProject / fullPath:                                  │
> │ C:\home\git\polyglot\target\Builder\Builder\Builder.fsproj                   │
> │ 00:00:22 d #31 runtime.execute_with_options_async / { file_name =       │
> │ dotnet; arguments = US5_0                                                    │
> │   "publish "C:\home\git\polyglot\target/Builder\Builder\Builder.fsproj"      │
> │ --configuration Release --output "C:\home\git\polyglot\apps\builder\dist"    │
> │ --runtime linux-x64"; options = { command = dotnet publish                   │
> │ "C:\home\git\polyglot\target/Builder\Builder\Builder.fsproj" --configuration │
> │ Release --output "C:\home\git\polyglot\apps\builder\dist" --runtime          │
> │ linux-x64; cancellation_token = None; environment_variables = [||]; on_line  │
> │ = None; stdin = None; trace = true; working_directory = Some                 │
> │ "C:\home\git\polyglot\target\Builder\Builder" } }                            │
> │ 00:00:22 v #32 > MSBuild version 17.10.0-preview-24101-01+07fd5d51f for │
> │ .NET                                                                         │
> │ 00:00:22 v #33 >   Determining projects to restore...                   │
> │ 00:00:23 v #34 >   Restored                                             │
> │ C:\home\git\polyglot\target\Builder\Builder\Builder.fsproj (in 393 ms).      │
> │ 00:00:23 v #35 >                                                        │
> │ C:\Users\i574n\scoop\apps\dotnet-sdk-preview\current\sdk\9.0.100-preview.1.2 │
> │ 4101.2\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.RuntimeIdentifierInferen │
> │ ce.targets(313,5): message NETSDK1057: You are using a preview version of    │
> │ .NET. See: https://aka.ms/dotnet-support-policy [                            │
> │ C:\home\git\polyglot\target\Builder\Builder\Builder.fsproj]                  │
> │ 00:00:34 v #36 >   Builder ->                                           │
> │ C:\home\git\polyglot\target\Builder\Builder\bin\Release\net9.0\linux-x64\Bui │
> │ lder.dll                                                                     │
> │ 00:00:35 v #37 >   Builder -> C:\home\git\polyglot\apps\builder\dist\   │
> │ 00:00:35 d #38 runtime.execute_with_options_async / { exit_code = 0;    │
> │ output_length = 665 }                                                        │
> │ 00:00:35 d #39 runtime.execute_with_options_async / { file_name =       │
> │ dotnet; arguments = US5_0                                                    │
> │   "publish "C:\home\git\polyglot\target/Builder\Builder\Builder.fsproj"      │
> │ --configuration Release --output "C:\home\git\polyglot\apps\builder\dist"    │
> │ --runtime win-x64"; options = { command = dotnet publish                     │
> │ "C:\home\git\polyglot\target/Builder\Builder\Builder.fsproj" --configuration │
> │ Release --output "C:\home\git\polyglot\apps\builder\dist" --runtime win-x64; │
> │ cancellation_token = None; environment_variables = [||]; on_line = None;     │
> │ stdin = None; trace = true; working_directory = Some                         │
> │ "C:\home\git\polyglot\target\Builder\Builder" } }                            │
> │ 00:00:35 v #40 > MSBuild version 17.10.0-preview-24101-01+07fd5d51f for │
> │ .NET                                                                         │
> │ 00:00:36 v #41 >   Determining projects to restore...                   │
> │ 00:00:36 v #42 >   Restored                                             │
> │ C:\home\git\polyglot\target\Builder\Builder\Builder.fsproj (in 378 ms).      │
> │ 00:00:36 v #43 >                                                        │
> │ C:\Users\i574n\scoop\apps\dotnet-sdk-preview\current\sdk\9.0.100-preview.1.2 │
> │ 4101.2\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.RuntimeIdentifierInferen │
> │ ce.targets(313,5): message NETSDK1057: You are using a preview version of    │
> │ .NET. See: https://aka.ms/dotnet-support-policy [                            │
> │ C:\home\git\polyglot\target\Builder\Builder\Builder.fsproj]                  │
> │ 00:00:47 v #44 >   Builder ->                                           │
> │ C:\home\git\polyglot\target\Builder\Builder\bin\Release\net9.0\win-x64\Build │
> │ er.dll                                                                       │
> │ 00:00:48 v #45 >   Builder -> C:\home\git\polyglot\apps\builder\dist\   │
> │ 00:00:48 d #46 runtime.execute_with_options_async / { exit_code = 0;    │
> │ output_length = 663 }                                                        │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:07 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 35732 }
00:01:07 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/polyglot/apps/builder/Builder.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/polyglot/apps/builder/Builder.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:01:09 v #5 ! [NbConvertApp] Converting notebook c:/home/git/polyglot/apps/builder/Builder.dib.ipynb to html
00:01:09 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:01:09 v #7 !   validate(nb)
00:01:10 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:01:10 v #9 !   return _pygments_highlight(
00:01:10 v #10 ! [NbConvertApp] Writing 335543 bytes to c:\home\git\polyglot\apps\builder\Builder.dib.html
00:01:10 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 860 }
00:01:10 d #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 860 }
00:01:10 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/polyglot/apps/builder/Builder.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/polyglot/apps/builder/Builder.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:01:11 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:01:11 d #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:01:11 d #16 spiral_builder.run / dib / { exit_code = 0; result_length = 36651 }
In [ ]:
{ pwsh ../apps/spiral/builder/build.ps1 -SkipFsx 1 } | Invoke-Block
00:00:00 d #1 persistCodeProject / packages: [Fable.Core] / modules: [lib/spiral/common.fsx; lib/spiral/sm.fsx; lib/spiral/crypto.fsx; ... ] / name: spiral_builder / hash:  / code.Length: 1422642
targetDir: C:\home\git\polyglot\target\Builder\spiral_builder
Fable 4.21.0: F# to Rust compiler (status: alpha)

Thanks to the contributor! @johannesmols
Stand with Ukraine! https://standwithukraine.com.ua/

Parsing target\Builder\spiral_builder\spiral_builder.fsproj...
Retrieving project options from cache, in case of issues run `dotnet fable clean` or try `--noCache` option.
Project and references (14 source files) parsed in 176ms

Started Fable compilation...

Fable compilation finished in 14369ms

.\lib\spiral\common.fsx(2015,0): (2015,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
.\lib\spiral\sm.fsx(517,0): (517,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
.\lib\spiral\crypto.fsx(2239,0): (2239,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
.\lib\spiral\date_time.fsx(1613,0): (1613,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
.\lib\spiral\async_.fsx(146,0): (146,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
.\lib\spiral\threading.fsx(140,0): (140,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
.\lib\spiral\networking.fsx(20552,0): (20552,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
.\lib\spiral\platform.fsx(116,0): (116,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
.\lib\spiral\runtime.fsx(9265,0): (9265,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
.\lib\spiral\file_system.fsx(35073,0): (35073,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
.\lib\spiral\trace.fsx(2052,0): (2052,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
   Compiling proc-macro2 v1.0.88
   Compiling unicode-ident v1.0.13
   Compiling typenum v1.17.0
   Compiling quote v1.0.37
   Compiling syn v2.0.79
   Compiling hybrid-array v0.2.0-rc.11
   Compiling block-buffer v0.11.0-rc.2
   Compiling crypto-common v0.2.0-rc.1
   Compiling digest v0.11.0-pre.9
   Compiling sha2 v0.11.0-pre.4
   Compiling zerocopy-derive v0.7.35
   Compiling futures-macro v0.3.31
   Compiling thiserror-impl v1.0.64
   Compiling zerocopy v0.7.35
   Compiling futures-util v0.3.31
   Compiling thiserror v1.0.64
   Compiling async-walkdir v2.0.0
   Compiling rand_core v0.9.0-alpha.2
   Compiling ppv-lite86 v0.2.20
   Compiling rand_chacha v0.9.0-alpha.2
   Compiling rand v0.9.0-alpha.2
   Compiling futures-executor v0.3.31
   Compiling futures v0.3.31
   Compiling fable_library_rust v0.1.0 (C:\home\git\polyglot\lib\rust\fable\fable_modules\fable-library-rust)
   Compiling spiral_builder v0.0.1 (C:\home\git\polyglot\apps\spiral\builder)
    Finished `release` profile [optimized] target(s) in 34.79s
     Running unittests spiral_builder.rs (C:\home\git\polyglot\workspace\target\release\deps\spiral_builder-1946bf53ea519377.exe)

running 1 test
test module_7e2cd9e0::Spiral_builder::verify_app ... ok

successes:

successes:
    module_7e2cd9e0::Spiral_builder::verify_app

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Compiling typenum v1.17.0
   Compiling zerocopy v0.7.35
   Compiling futures-util v0.3.31
   Compiling thiserror v1.0.64
   Compiling async-walkdir v2.0.0
   Compiling rand_core v0.9.0-alpha.2
   Compiling ppv-lite86 v0.2.20
   Compiling hybrid-array v0.2.0-rc.11
   Compiling rand_chacha v0.9.0-alpha.2
   Compiling rand v0.9.0-alpha.2
   Compiling block-buffer v0.11.0-rc.2
   Compiling crypto-common v0.2.0-rc.1
   Compiling digest v0.11.0-pre.9
   Compiling sha2 v0.11.0-pre.4
   Compiling futures-executor v0.3.31
   Compiling futures v0.3.31
   Compiling fable_library_rust v0.1.0 (C:\home\git\polyglot\lib\rust\fable\fable_modules\fable-library-rust)
   Compiling spiral_builder v0.0.1 (C:\home\git\polyglot\apps\spiral\builder)
error: failed to remove file `C:\home\git\polyglot\workspace\target\release\spiral_builder.exe`

Caused by:
  Access is denied. (os error 5)

# Invoke-Block / $retry: 1/1 / $Location:  / Get-Location: C:\home\git\polyglot\apps\spiral\builder / $OnError: Continue / $exitcode: 101 / $EnvVars: {
  "PATH": "C:\\Users\\i574n\\scoop\\apps\\pwsh\\current;C:\\Program Files\\NVIDIA\\CUDNN\\v9.1\\bin;C:\\ProgramData\\scoop\\shims;C:\\WINDOWS\\system32;C:\\WINDOWS;C:\\WINDOWS\\System32\\Wbem;C:\\WINDOWS\\System32\\WindowsPowerShell\\v1.0\\;C:\\WINDOWS\\System32\\OpenSSH\\;C:\\ProgramData\\chocolatey\\bin;C:\\Program Files\\dotnet\\;C:\\WINDOWS\\system32;C:\\WINDOWS;C:\\WINDOWS\\System32\\Wbem;C:\\WINDOWS\\System32\\WindowsPowerShell\\v1.0\\;C:\\WINDOWS\\System32\\OpenSSH\\;C:\\Program Files\\Intel\\WiFi\\bin\\;C:\\Program Files\\Common Files\\Intel\\WirelessCommon\\;C:\\Program Files\\Perforce;C:\\Program Files\\Wasmtime\\bin;C:\\Program Files\\Perforce\\;C:\\Users\\i574n\\scoop\\apps\\vscode-insiders\\current\\bin;C:\\Users\\i574n\\scoop\\apps\\haskell\\current\\lib\\bin;C:\\Users\\i574n\\scoop\\apps\\python312\\current\\Scripts;C:\\Users\\i574n\\scoop\\apps\\python312\\current\\.;C:\\Users\\i574n\\scoop\\apps\\perl\\current\\perl\\site\\bin;C:\\Users\\i574n\\scoop\\apps\\perl\\current\\perl\\bin;C:\\Users\\i574n\\scoop\\apps\\elixir\\current\\bin;C:\\Users\\i574n\\scoop\\apps\\rustup\\current\\.cargo\\bin;C:\\Users\\i574n\\scoop\\apps\\latex\\current\\texmfs\\install\\miktex\\bin\\x64;C:\\Users\\i574n\\scoop\\apps\\dotnet-sdk-preview\\current;C:\\Users\\i574n\\scoop\\apps\\dotnet-sdk\\current;C:\\Users\\i574n\\scoop\\apps\\gsudo\\current;C:\\Users\\i574n\\scoop\\apps\\python\\current;C:\\Users\\i574n\\scoop\\apps\\nircmd\\current;C:\\Users\\i574n\\AppData\\Local\\Microsoft\\WindowsApps;C:\\Users\\i574n/scoop/buckets/mold/home/windows/path;C:\\Users\\i574n/scoop/persist/rustup/.cargo/bin;C:\\Users\\i574n/scoop/apps/nvm/current/nodejs/nodejs;C:\\Users\\i574n/scoop/apps/cygwin/current/root/bin;C:\\Users\\i574n\\AppData\\Local\\Programs\\Microsoft VS Code\\bin;C:\\Users\\i574n\\AppData\\Local\\Microsoft\\WindowsApps;C:\\Users\\i574n\\.bun\\bin;C:\\Users\\i574n\\.dotnet\\tools;C:\\Users\\i574n\\scoop\\shims;C:\\Users\\i574n\\.fly\\bin;C:\\Program Files\\Wasmtime\\bin;C:\\Users\\i574n/.cargo/bin;C:\\Users\\i574n/.bun/bin;C:\\Users\\i574n/.cargo/bin;C:\\Users\\i574n/.bun/bin;C:\\Users\\i574n/.cargo/bin;C:\\Users\\i574n/.bun/bin"
} / $Error: '' / $ScriptBlock:
'cargo build --release'

In [ ]:
{ pwsh ../apps/parser/build.ps1 } | Invoke-Block
00:00:00 d #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "DibParser.dib"])) }
00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/polyglot/apps/parser/DibParser.dib", "--output-path", "c:/home/git/polyglot/apps/parser/DibParser.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/polyglot/apps/parser/DibParser.dib" --output-path "c:/home/git/polyglot/apps/parser/DibParser.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ # DibParser (Polyglot)                                                       │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> #r 
> @"../../../../../../../.nuget/packages/fsharp.control.asyncseq/3.2.1/lib/netstan
> dard2.1/FSharp.Control.AsyncSeq.dll"
> #r 
> @"../../../../../../../.nuget/packages/system.reactive/6.0.1-preview.1/lib/net6.
> 0/System.Reactive.dll"
> #r 
> @"../../../../../../../.nuget/packages/system.reactive.linq/6.0.1-preview.1/lib/
> netstandard2.0/System.Reactive.Linq.dll"
> #r 
> @"../../../../../../../.nuget/packages/argu/6.2.4/lib/netstandard2.0/Argu.dll"
> #r 
> @"../../../../../../../.nuget/packages/fparsec/2.0.0-beta2/lib/netstandard2.1/FP
> arsec.dll"
> #r 
> @"../../../../../../../.nuget/packages/fparsec/2.0.0-beta2/lib/netstandard2.1/FP
> arsecCS.dll"
> 
> ── pwsh ────────────────────────────────────────────────────────────────────────
> ls ~/.nuget/packages/argu
> 
> ╭─[ 493.04ms - stdout ]────────────────────────────────────────────────────────╮
> │                                                                              │
> │     Directory: C:\Users\i574n\.nuget\packages\argu                           │
> │                                                                              │
> │ Mode                 LastWriteTime         Length[     │
> │ 32;1m Name                                                                 │
> │ ----                 -------------         ------ [      │
> │ 32;1m----                                                                  │
> │ d----          2023-05-17  4:38 PM                6.1.1               │
> │ d----          2024-03-12  9:22 PM                6.1.4               │
> │ d----          2024-01-29  6:12 PM                6.1.5               │
> │ d----          2024-03-12  9:20 PM                6.2.0               │
> │ d----          2024-02-23  7:50 PM                6.2.1               │
> │ d----          2024-03-12  9:15 PM                6.2.2               │
> │ d----          2024-05-14  9:20 PM                6.2.3               │
> │ d----          2024-06-06  8:37 PM                6.2.4               │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> #if !INTERACTIVE
> open Lib
> #endif
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> open Common
> open FParsec
> open SpiralFileSystem.Operators
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ## escapeCell (test)                                                         │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let inline escapeCell input =
>     input
>     |> SpiralSm.split "\n"
>     |> Array.map (function
>         | line when line |> SpiralSm.starts_with "\\#!" || line |> 
> SpiralSm.starts_with "\\#r" ->
>             System.Text.RegularExpressions.Regex.Replace (line, "^\\\\#", "#")
>         | line -> line
>     )
>     |> SpiralSm.concat "\n"
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> $"a{nl}\\#!magic{nl}b{nl}"
> |> escapeCell
> |> _assertEqual (
>     $"a{nl}#!magic{nl}b{nl}"
> )
> 
> ╭─[ 65.39ms - stdout ]─────────────────────────────────────────────────────────╮
> │ "a                                                                           │
> │ #!magic                                                                      │
> │ b                                                                            │
> │ "                                                                            │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ## magicMarker                                                               │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let magicMarker : Parser<string, unit> = pstring "#!"
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> "#!magic"
> |> run magicMarker
> |> _assertEqual (
>     Success ("#!", (), Position ("", 2, 1, 3))
> )
> 
> ╭─[ 41.95ms - stdout ]─────────────────────────────────────────────────────────╮
> │ Success: "#!"                                                                │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> "##!magic"
> |> run magicMarker
> |> _assertEqual (
>     Failure (
>         $"Error in Ln: 1 Col: 1{nl}##!magic{nl}^{nl}Expecting: '#!'{nl}",
>         ParserError (
>             Position ("", 0, 1, 1),
>             (),
>             ErrorMessageList (ExpectedString "#!")
>         ),
>         ()
>     )
> )
> 
> ╭─[ 40.28ms - stdout ]─────────────────────────────────────────────────────────╮
> │ Failure:                                                                     │
> │ Error in Ln: 1 Col: 1                                                        │
> │ ##!magic                                                                     │
> │ ^                                                                            │
> │ Expecting: '#!'                                                              │
> │                                                                              │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ## magicCommand                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let magicCommand =
>     magicMarker
>     >>. manyTill anyChar newline
>     |>> (System.String.Concat >> SpiralSm.trim)
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> "#!magic
> 
> a"
> |> run magicCommand
> |> _assertEqual (
>     Success ("magic", (), Position ("", 8, 2, 1))
> )
> 
> ╭─[ 23.13ms - stdout ]─────────────────────────────────────────────────────────╮
> │ Success: "magic"                                                             │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> " #!magic
> 
> a"
> |> run magicCommand
> |> _assertEqual (
>     Failure (
>         $"Error in Ln: 1 Col: 1{nl} #!magic{nl}^{nl}Expecting: '#!'{nl}",
>         ParserError (
>             Position ("", 0, 1, 1),
>             (),
>             ErrorMessageList (ExpectedString "#!")
>         ),
>         ()
>     )
> )
> 
> ╭─[ 26.65ms - stdout ]─────────────────────────────────────────────────────────╮
> │ Failure:                                                                     │
> │ Error in Ln: 1 Col: 1                                                        │
> │  #!magic                                                                     │
> │ ^                                                                            │
> │ Expecting: '#!'                                                              │
> │                                                                              │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ## content                                                                   │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let content =
>     (newline >>. magicMarker) <|> (eof >>. preturn "")
>     |> attempt
>     |> lookAhead
>     |> manyTill anyChar
>     |>> (System.String.Concat >> SpiralSm.trim)
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> "#!magic
> 
> 
> a
> 
> 
> "
> |> run content
> |> _assertEqual (
>     Success ("#!magic
> 
> 
> a", (), Position ("", 14, 7, 1))
> )
> 
> ╭─[ 24.22ms - stdout ]─────────────────────────────────────────────────────────╮
> │ Success: "#!magic                                                            │
> │                                                                              │
> │                                                                              │
> │ a"                                                                           │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ## Output                                                                    │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type Output =
>     | Fs
>     | Md
>     | Spi
>     | Spir
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ## Magic                                                                     │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type Magic =
>     | Fsharp
>     | Markdown
>     | Spiral of Output
>     | Magic of string
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ## kernelOutputs                                                             │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline kernelOutputs magic =
>     match magic with
>     | Fsharp -> [[ Fs ]]
>     | Markdown -> [[ Md ]]
>     | Spiral output -> [[ output ]]
>     | _ -> [[]]
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ## Block                                                                     │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type Block =
>     {
>         magic : Magic
>         content : string
>     }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ## block                                                                     │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let block =
>     pipe2
>         magicCommand
>         content
>         (fun magic content ->
>             let magic, content =
>                 match magic with
>                 | "fsharp" -> Fsharp, content
>                 | "markdown" -> Markdown, content
>                 | "spiral" ->
>                     let output = if content |> SpiralSm.contains "//// real\n" 
> then Spir else Spi
>                     let content =
>                         if output = Spi
>                         then content
>                         else
>                             content
>                             |> SpiralSm.replace "//// real\n\n" ""
>                             |> SpiralSm.replace "//// real\n" ""
>                     Spiral output, content
>                 | magic -> magic |> Magic, content
>             {
>                 magic = magic
>                 content = content
>             })
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> "#!magic
> 
> 
> a
> 
> 
> "
> |> run block
> |> _assertEqual (
>     Success (
>         { magic = Magic "magic"; content = "a" },
>         (),
>         Position ("", 14, 7, 1)
>     )
> )
> 
> ╭─[ 40.52ms - stdout ]─────────────────────────────────────────────────────────╮
> │ Success: { magic = Magic "magic"                                             │
> │   content = "a" }                                                            │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ## blocks                                                                    │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let blocks =
>     skipMany newline
>     >>. sepEndBy block (skipMany1 newline)
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> 
> "#!magic1
> 
> a
> 
> \#!magic2
> 
> b
> 
> "
> |> escapeCell
> |> run blocks
> |> _assertEqual (
>     Success (
>         [[
>             { magic = Magic "magic1"; content = "a" }
>             { magic = Magic "magic2"; content = "b" }
>         ]],
>         (),
>         Position ("", 26, 9, 1)
>     )
> )
> 
> ╭─[ 43.77ms - stdout ]─────────────────────────────────────────────────────────╮
> │ Success: [{ magic = Magic "magic1"                                           │
> │    content = "a" }; { magic = Magic "magic2"                                 │
> │                       content = "b" }]                                       │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ## formatBlock                                                               │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline formatBlock output (block : Block) =
>     match output, block with
>     | output, { magic = Markdown; content = content } ->
>         let markdownComment =
>             match output with
>             | Spi | Spir -> "/// "
>             | Fs -> "/// "
>             | _ -> ""
>         content
>         |> SpiralSm.split "\n"
>         |> Array.map (SpiralSm.trim_end [[||]])
>         |> Array.filter (SpiralSm.ends_with " (test)" >> not)
>         |> Array.map (function
>             | "" -> markdownComment
>             | line -> System.Text.RegularExpressions.Regex.Replace (line, 
> "^\\s*", $"$&{markdownComment}")
>         )
>         |> SpiralSm.concat "\n"
>     | Fs, { magic = Fsharp; content = content } ->
>         let trimmedContent = content |> SpiralSm.trim
>         if trimmedContent |> SpiralSm.contains "//// test\n"
>             || trimmedContent |> SpiralSm.contains "//// ignore\n"
>         then ""
>         else
>             content
>             |> SpiralSm.split "\n"
>             |> Array.filter (SpiralSm.trim_start [[||]] >> SpiralSm.starts_with 
> "#r" >> not)
>             |> SpiralSm.concat "\n"
>     | (Spi | Spir), { magic = Spiral output'; content = content } when output' =
> output ->
>         let trimmedContent = content |> SpiralSm.trim
>         if trimmedContent |> SpiralSm.contains "//// test\n"
>             || trimmedContent |> SpiralSm.contains "//// ignore\n"
>         then ""
>         else content
>     | _ -> ""
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> "#!markdown
> 
> 
> a
> 
>     b
> 
> c
> 
> 
> \#!markdown
> 
> 
> c
> 
> 
> \#!fsharp
> 
> 
> let a = 1"
> |> escapeCell
> |> run block
> |> function
>     | Success (block, _, _) -> formatBlock Fs block
>     | Failure (msg, _, _) -> failwith msg
> |> _assertEqual "/// a
> /// 
>     /// b
> /// 
> /// c"
> 
> ╭─[ 50.09ms - stdout ]─────────────────────────────────────────────────────────╮
> │ "/// a                                                                       │
> │ ///                                                                          │
> │     /// b                                                                    │
> │ ///                                                                          │
> │ /// c"                                                                       │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ## formatBlocks                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline formatBlocks output blocks =
>     blocks
>     |> List.map (fun block ->
>         block, formatBlock output block
>     )
>     |> List.filter (snd >> (<>) "")
>     |> fun list ->
>         (list, (None, [[]]))
>         ||> List.foldBack (fun (block, content) (lastMagic, acc) ->
>             let lineBreak =
>                 if block.magic = Markdown && lastMagic <> Some Markdown && 
> lastMagic <> None
>                 then ""
>                 else "\n"
>             Some block.magic, $"{content}{lineBreak}" :: acc
>         )
>     |> snd
>     |> SpiralSm.concat "\n"
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> "#!markdown
> 
> 
> a
> 
> b
> 
> 
> \#!markdown
> 
> 
> c
> 
> 
> \#!fsharp
> 
> 
> let a = 1
> 
> \#!markdown
> 
> d (test)
> 
> \#!fsharp
> 
> //// test
> 
> let a = 2
> 
> \#!markdown
> 
> e
> 
> \#!fsharp
> 
> let a = 3"
> |> escapeCell
> |> run blocks
> |> function
>     | Success (blocks, _, _) -> formatBlocks Fs blocks
>     | Failure (msg, _, _) -> failwith msg
> |> _assertEqual "/// a
> /// 
> /// b
> 
> /// c
> let a = 1
> 
> /// e
> let a = 3
> "
> 
> ╭─[ 73.97ms - stdout ]─────────────────────────────────────────────────────────╮
> │ "/// a                                                                       │
> │ ///                                                                          │
> │ /// b                                                                        │
> │                                                                              │
> │ /// c                                                                        │
> │ let a = 1                                                                    │
> │                                                                              │
> │ /// e                                                                        │
> │ let a = 3                                                                    │
> │ "                                                                            │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ## parse                                                                     │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline parse output input =
>     match run blocks input with
>     | Success (blocks, _, _) ->
>         let blocks =
>             blocks
>             |> List.filter (fun block ->
>                 block.magic |> kernelOutputs |> List.contains output || 
> block.magic = Markdown
>             )
> 
>         match blocks with
>         | { magic = Markdown; content = content } :: _
>             when output = Fs
>             && content |> SpiralSm.starts_with "# "
>             && content |> SpiralSm.ends_with ")"
>             ->
>             let inline indentBlock (block : Block) =
>                 { block with
>                     content =
>                         block.content
>                         |> SpiralSm.split "\n"
>                         |> Array.fold
>                             (fun (lines, isMultiline) line ->
>                                 let trimmedLine = line |> SpiralSm.trim
>                                 if trimmedLine = ""
>                                 then "" :: lines, isMultiline
>                                 else
>                                     let inline singleQuoteLine () =
>                                         trimmedLine |> Seq.sumBy ((=) '"' >> 
> System.Convert.ToInt32) = 1
>                                         && trimmedLine |> SpiralSm.contains 
> @"'""'" |> not
>                                         && trimmedLine |> SpiralSm.ends_with "{"
> |> not
>                                         && trimmedLine |> SpiralSm.ends_with 
> "{|" |> not
>                                         && trimmedLine |> SpiralSm.starts_with 
> "}" |> not
>                                         && trimmedLine |> SpiralSm.starts_with 
> "|}" |> not
> 
>                                     match isMultiline, trimmedLine |> 
> SpiralSm.split_string [[| $"{q}{q}{q}" |]] with
>                                     | false, [[| _; _ |]] ->
>                                         $"    {line}" :: lines, true
> 
>                                     | true, [[| _; _ |]] ->
>                                         line :: lines, false
> 
>                                     | false, _ when singleQuoteLine () ->
>                                         $"    {line}" :: lines, true
> 
>                                     | false, _ when line |> SpiralSm.starts_with
> "#" && block.magic = Fsharp ->
>                                         line :: lines, false
> 
>                                     | false, _ ->
>                                         $"    {line}" :: lines, false
> 
>                                     | true, _ when singleQuoteLine () && line |>
> SpiralSm.starts_with "    " ->
>                                         $"    {line}" :: lines, false
> 
>                                     | true, _ when singleQuoteLine () ->
>                                         line :: lines, false
> 
>                                     | true, _ ->
>                                         line :: lines, true
>                             )
>                             ([[]], false)
>                         |> fst
>                         |> List.rev
>                         |> SpiralSm.concat "\n"
>                 }
> 
>             let moduleName, namespaceName =
>                 System.Text.RegularExpressions.Regex.Match (content, @"# (.*) 
> \((.*)\)$")
>                 |> fun m -> m.Groups.[[1]].Value, m.Groups.[[2]].Value
> 
>             let moduleBlock =
>                 {
>                     magic = Fsharp
>                     content =
>                         $"#if !INTERACTIVE
> namespace {namespaceName}
> #endif
> 
> module {moduleName} ="
>                 }
> 
>             blocks
>             |> List.indexed
>             |> List.fold
>                 (fun blocks (index, block) ->
>                     match index with
>                     | 0 -> blocks
>                     | 1 -> indentBlock block :: moduleBlock :: blocks
>                     | _ -> indentBlock block :: blocks
>                 )
>                 [[]]
>             |> List.rev
>         | _ -> blocks
>         |> Result.Ok
>     | Failure (errorMsg, _, _) -> Result.Error errorMsg
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let example1 =
>     $"""#!meta
> 
> {{"kernelInfo":{{"defaultKernelName":"fsharp","items":[[{{"aliases":[[]],"name":
> "fsharp"}},{{"aliases":[[]],"name":"fsharp"}}]]}}}}
> 
> \#!markdown
> 
> # TestModule (TestNamespace)
> 
> \#!fsharp
> 
> \#!import file.dib
> 
> \#!fsharp
> 
> \#r "nuget:Expecto"
> 
> \#!markdown
> 
> ## ParserLibrary
> 
> \#!fsharp
> 
> open System
> 
> \#!markdown
> 
> ## x (test)
> 
> \#!fsharp
> 
> //// ignore
> 
> let x = 1
> 
> \#!spiral
> 
> //// test
> 
> inl x = 1i32
> 
> \#!spiral
> 
> //// real
> 
> inl x = 2i32
> 
> \#!spiral
> 
> inl x = 3i32
> 
> \#!markdown
> 
> ### TextInput
> 
> \#!fsharp
> 
> let str1 = "abc
> def"
> 
> let str2 =
>     "abc\
> def"
> 
> let str3 =
>     $"1{{
>         1
>     }}1"
> 
> let str4 =
>     $"1{{({{|
>         a = 1
>     |}}).a}}1"
> 
> let str5 =
>     "abc \
>         def"
> 
> let x =
>     match '"' with
>     | '"' -> true
>     | _ -> false
> 
> let long1 = {q}{q}{q}a{q}{q}{q}
> 
> let long2 =
>     {q}{q}{q}
> a
> {q}{q}{q}
> 
> \#!fsharp
> 
> type Position =
>     {{
> #if INTERACTIVE
>         line : string
> #else
>         line : int
> #endif
>         column : int
>     }}"""
>     |> escapeCell
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> example1
> |> parse Fs
> |> Result.toOption
> |> Option.get
> |> (formatBlocks Fs)
> |> _assertEqual $"""#if !INTERACTIVE
> namespace TestNamespace
> #endif
> 
> module TestModule =
> 
>     /// ## ParserLibrary
>     open System
> 
>     /// ### TextInput
>     let str1 = "abc
> def"
> 
>     let str2 =
>         "abc\
> def"
> 
>     let str3 =
>         $"1{{
>             1
>         }}1"
> 
>     let str4 =
>         $"1{{({{|
>             a = 1
>         |}}).a}}1"
> 
>     let str5 =
>         "abc \
>             def"
> 
>     let x =
>         match '"' with
>         | '"' -> true
>         | _ -> false
> 
>     let long1 = {q}{q}{q}a{q}{q}{q}
> 
>     let long2 =
>         {q}{q}{q}
> a
> {q}{q}{q}
> 
>     type Position =
>         {{
> #if INTERACTIVE
>             line : string
> #else
>             line : int
> #endif
>             column : int
>         }}
> """
> 
> ╭─[ 190.07ms - stdout ]────────────────────────────────────────────────────────╮
> │ "#if !INTERACTIVE                                                            │
> │ namespace TestNamespace                                                      │
> │ #endif                                                                       │
> │                                                                              │
> │ module TestModule =                                                          │
> │                                                                              │
> │     /// ## ParserLibrary                                                     │
> │     open System                                                              │
> │                                                                              │
> │     /// ### TextInput                                                        │
> │     let str1 = "abc                                                          │
> │ def"                                                                         │
> │                                                                              │
> │     let str2 =                                                               │
> │         "abc\                                                                │
> │ def"                                                                         │
> │                                                                              │
> │     let str3 =                                                               │
> │         $"1{                                                                 │
> │             1                                                                │
> │         }1"                                                                  │
> │                                                                              │
> │     let str4 =                                                               │
> │         $"1{({|                                                              │
> │             a = 1                                                            │
> │         |}).a}1"                                                             │
> │                                                                              │
> │     let str5 =                                                               │
> │         "abc \                                                               │
> │             def"                                                             │
> │                                                                              │
> │     let x =                                                                  │
> │         match '"' with                                                       │
> │         | '"' -> true                                                        │
> │         | _ -> false                                                         │
> │                                                                              │
> │     let long1 = """a"""                                                      │
> │                                                                              │
> │     let long2 =                                                              │
> │         """                                                                  │
> │ a                                                                            │
> │ """                                                                          │
> │                                                                              │
> │     type Position =                                                          │
> │         {                                                                    │
> │ #if INTERACTIVE                                                              │
> │             line : string                                                    │
> │ #else                                                                        │
> │             line : int                                                       │
> │ #endif                                                                       │
> │             column : int                                                     │
> │         }                                                                    │
> │ "                                                                            │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> example1
> |> parse Md
> |> Result.toOption
> |> Option.get
> |> (formatBlocks Md)
> |> _assertEqual "# TestModule (TestNamespace)
> 
> ## ParserLibrary
> 
> ### TextInput
> "
> 
> ╭─[ 163.27ms - stdout ]────────────────────────────────────────────────────────╮
> │ "# TestModule (TestNamespace)                                                │
> │                                                                              │
> │ ## ParserLibrary                                                             │
> │                                                                              │
> │ ### TextInput                                                                │
> │ "                                                                            │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> example1
> |> parse Spi
> |> Result.toOption
> |> Option.get
> |> (formatBlocks Spi)
> |> _assertEqual "/// # TestModule (TestNamespace)
> 
> /// ## ParserLibrary
> inl x = 3i32
> 
> /// ### TextInput
> "
> 
> ╭─[ 171.24ms - stdout ]────────────────────────────────────────────────────────╮
> │ "/// # TestModule (TestNamespace)                                            │
> │                                                                              │
> │ /// ## ParserLibrary                                                         │
> │ inl x = 3i32                                                                 │
> │                                                                              │
> │ /// ### TextInput                                                            │
> │ "                                                                            │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> example1
> |> parse Spir
> |> Result.toOption
> |> Option.get
> |> (formatBlocks Spir)
> |> _assertEqual "/// # TestModule (TestNamespace)
> 
> /// ## ParserLibrary
> inl x = 2i32
> 
> /// ### TextInput
> "
> 
> ╭─[ 175.07ms - stdout ]────────────────────────────────────────────────────────╮
> │ "/// # TestModule (TestNamespace)                                            │
> │                                                                              │
> │ /// ## ParserLibrary                                                         │
> │ inl x = 2i32                                                                 │
> │                                                                              │
> │ /// ### TextInput                                                            │
> │ "                                                                            │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ## parseDibCode                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline parseDibCode output file = async {
>     trace Debug
>         (fun () -> "parseDibCode")
>         (fun () -> $"output: {output} / file: {file} / {_locals ()}")
>     let! input = file |> SpiralFileSystem.read_all_text_async
>     match parse output input with
>     | Result.Ok blocks -> return blocks |> formatBlocks output
>     | Result.Error msg -> return failwith msg
> }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ## writeDibCode                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline writeDibCode output path = async {
>     trace Debug
>         (fun () -> "writeDibCode")
>         (fun () -> $"output: {output} / path: {path} / {_locals ()}")
>     let! result = parseDibCode output path
>     let pathDir = path |> System.IO.Path.GetDirectoryName
>     let fileNameWithoutExt =
>         match output, path |> System.IO.Path.GetFileNameWithoutExtension with
>         | Spir, fileNameWithoutExt -> $"{fileNameWithoutExt}_real"
>         | _, fileNameWithoutExt -> fileNameWithoutExt
>     let outputPath = pathDir </> $"{fileNameWithoutExt}.{output |> string |> 
> SpiralSm.to_lower}"
>     do! result |> SpiralFileSystem.write_all_text_async outputPath
> }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ## Arguments                                                                 │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> [[<RequireQualifiedAccess>]]
> type Arguments =
>     | [[<Argu.ArguAttributes.MainCommand; Argu.ArguAttributes.Mandatory>]]
>         File of file : string * Output
> 
>     interface Argu.IArgParserTemplate with
>         member s.Usage =
>             match s with
>             | File _ -> nameof File
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> Argu.ArgumentParser.Create<Arguments>().PrintUsage ()
> 
> ╭─[ 112.73ms - return value ]──────────────────────────────────────────────────╮
> │ "USAGE: dotnet-repl [--help] <file> <fs|md|spi|spir>                         │
> │                                                                              │
> │ FILE:                                                                        │
> │                                                                              │
> │     <file> <fs|md|spi|spir>                                                  │
> │                           File                                               │
> │                                                                              │
> │ OPTIONS:                                                                     │
> │                                                                              │
> │     --help                display this list of options.                      │
> │ "                                                                            │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ## main                                                                      │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let main args =
>     let argsMap = args |> Runtime.parseArgsMap<Arguments>
> 
>     let files =
>         argsMap.[[nameof Arguments.File]]
>         |> List.map (function
>             | Arguments.File (path, output) -> path, output
>         )
> 
>     files
>     |> List.map (fun (path, output) -> path |> writeDibCode output)
>     |> Async.Parallel
>     |> Async.Ignore
>     |> Async.runWithTimeout 30000
>     |> function
>         | Some () -> 0
>         | None -> 1
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let args =
>     System.Environment.GetEnvironmentVariable "ARGS"
>     |> SpiralRuntime.split_args
>     |> Result.toArray
>     |> Array.collect id
> 
> match args with
> | [[||]] -> 0
> | args -> if main args = 0 then 0 else failwith "main failed"
> 
> ╭─[ 171.41ms - return value ]──────────────────────────────────────────────────╮
> │ <div class="dni-plaintext"><pre>0                                            │
> │ </pre></div><style>                                                          │
> │ .dni-code-hint {                                                             │
> │     font-style: italic;                                                      │
> │     overflow: hidden;                                                        │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview {                                                              │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview td {                                                           │
> │     vertical-align: top;                                                     │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ details.dni-treeview {                                                       │
> │     padding-left: 1em;                                                       │
> │ }                                                                            │
> │ table td {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ table tr {                                                                   │
> │     vertical-align: top;                                                     │
> │     margin: 0em 0px;                                                         │
> │ }                                                                            │
> │ table tr td pre                                                              │
> │ {                                                                            │
> │     vertical-align: top !important;                                          │
> │     margin: 0em 0px !important;                                              │
> │ }                                                                            │
> │ table th {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ </style>                                                                     │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ╭─[ 173.84ms - stdout ]────────────────────────────────────────────────────────╮
> │ 00:00:06 d #1 writeDibCode / output: Fs / path: DibParser.dib           │
> │ 00:00:06 d #2 parseDibCode / output: Fs / file: DibParser.dib           │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:24 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 44158 }
00:00:24 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/polyglot/apps/parser/DibParser.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/polyglot/apps/parser/DibParser.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:00:25 v #5 ! [NbConvertApp] Converting notebook c:/home/git/polyglot/apps/parser/DibParser.dib.ipynb to html
00:00:25 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:00:25 v #7 !   validate(nb)
00:00:26 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:00:26 v #9 !   return _pygments_highlight(
00:00:27 v #10 ! [NbConvertApp] Writing 378794 bytes to c:\home\git\polyglot\apps\parser\DibParser.dib.html
00:00:27 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 862 }
00:00:27 d #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 862 }
00:00:27 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/polyglot/apps/parser/DibParser.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/polyglot/apps/parser/DibParser.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:00:27 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:00:27 d #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:00:27 d #16 spiral_builder.run / dib / { exit_code = 0; result_length = 45079 }
00:00:00 d #1 persistCodeProject / packages: [Argu; FParsec; FSharp.Control.AsyncSeq; ... ] / modules: [lib/spiral/common.fsx; lib/spiral/sm.fsx; lib/spiral/crypto.fsx; ... ] / name: DibParser / hash:  / code.Length: 10861
00:00:00 d #2 buildProject / fullPath: C:\home\git\polyglot\target\Builder\DibParser\DibParser.fsproj
00:00:00 d #1 runtime.execute_with_options_async / { file_name = dotnet; arguments = US5_0
  "publish "C:\home\git\polyglot\target/Builder\DibParser\DibParser.fsproj" --configuration Release --output "C:\home\git\polyglot\apps\parser\dist" --runtime linux-x64"; options = { command = dotnet publish "C:\home\git\polyglot\target/Builder\DibParser\DibParser.fsproj" --configuration Release --output "C:\home\git\polyglot\apps\parser\dist" --runtime linux-x64; cancellation_token = None; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = Some "C:\home\git\polyglot\target\Builder\DibParser" } }
00:00:00 v #2 > MSBuild version 17.10.0-preview-24101-01+07fd5d51f for .NET
00:00:01 v #3 >   Determining projects to restore...
00:00:01 v #4 >   Restored C:\home\git\polyglot\target\Builder\DibParser\DibParser.fsproj (in 371 ms).
00:00:01 v #5 > C:\Users\i574n\scoop\apps\dotnet-sdk-preview\current\sdk\9.0.100-preview.1.24101.2\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.RuntimeIdentifierInference.targets(313,5): message NETSDK1057: You are using a preview version of .NET. See: https://aka.ms/dotnet-support-policy [C:\home\git\polyglot\target\Builder\DibParser\DibParser.fsproj]
00:00:12 v #6 >   DibParser -> C:\home\git\polyglot\target\Builder\DibParser\bin\Release\net9.0\linux-x64\DibParser.dll
00:00:13 v #7 >   DibParser -> C:\home\git\polyglot\apps\parser\dist\
00:00:13 d #8 runtime.execute_with_options_async / { exit_code = 0; output_length = 680 }
00:00:13 d #9 runtime.execute_with_options_async / { file_name = dotnet; arguments = US5_0
  "publish "C:\home\git\polyglot\target/Builder\DibParser\DibParser.fsproj" --configuration Release --output "C:\home\git\polyglot\apps\parser\dist" --runtime win-x64"; options = { command = dotnet publish "C:\home\git\polyglot\target/Builder\DibParser\DibParser.fsproj" --configuration Release --output "C:\home\git\polyglot\apps\parser\dist" --runtime win-x64; cancellation_token = None; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = Some "C:\home\git\polyglot\target\Builder\DibParser" } }
00:00:13 v #10 > MSBuild version 17.10.0-preview-24101-01+07fd5d51f for .NET
00:00:14 v #11 >   Determining projects to restore...
00:00:14 v #12 >   Restored C:\home\git\polyglot\target\Builder\DibParser\DibParser.fsproj (in 344 ms).
00:00:15 v #13 > C:\Users\i574n\scoop\apps\dotnet-sdk-preview\current\sdk\9.0.100-preview.1.24101.2\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.RuntimeIdentifierInference.targets(313,5): message NETSDK1057: You are using a preview version of .NET. See: https://aka.ms/dotnet-support-policy [C:\home\git\polyglot\target\Builder\DibParser\DibParser.fsproj]
00:00:25 v #14 >   DibParser -> C:\home\git\polyglot\target\Builder\DibParser\bin\Release\net9.0\win-x64\DibParser.dll
00:00:26 v #15 >   DibParser -> C:\home\git\polyglot\apps\parser\dist\
00:00:26 d #16 runtime.execute_with_options_async / { exit_code = 0; output_length = 678 }
00:00:00 d #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "JsonParser.dib"])) }
00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/polyglot/apps/parser/JsonParser.dib", "--output-path", "c:/home/git/polyglot/apps/parser/JsonParser.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/polyglot/apps/parser/JsonParser.dib" --output-path "c:/home/git/polyglot/apps/parser/JsonParser.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ # JsonParser (Polyglot)                                                      │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> open Common
> open Parser
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ## JsonParser                                                                │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> (*
> // --------------------------------
> JSON spec from http://www.json.org/
> // --------------------------------
> 
> The JSON spec is available at [[json.org]](http://www.json.org/). I'll paraphase
> it here:
> 
> * A `value` can be a `string` or a `number` or a `bool` or `null` or an `object`
> or an `array`.
>   * These structures can be nested.
> * A `string` is a sequence of zero or more Unicode characters, wrapped in double
> quotes, using backslash escapes.
> * A `number` is very much like a C or Java number, except that the octal and 
> hexadecimal formats are not used.
> * A `boolean` is the literal `true` or `false`
> * A `null` is the literal `null`
> * An `object` is an unordered set of name/value pairs.
>   * An object begins with { (left brace) and ends with } (right brace).
>   * Each name is followed by : (colon) and the name/value pairs are separated by
> , (comma).
> * An `array` is an ordered collection of values.
>   * An array begins with [[ (left bracket) and ends with ]] (right bracket).
>   * Values are separated by , (comma).
> * Whitespace can be inserted between any pair of tokens.
> *)
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let inline parserEqual (expected : ParseResult<'a>) (actual : ParseResult<'a * 
> Input>) =
>     match actual, expected with
>     | Success (_actual, _), Success _expected ->
>         printResult actual
>         _actual |> _assertEqual _expected
>     | Failure (l1, e1, p1), Failure (l2, e2, p2) when l1 = l2 && e1 = e2 && p1 =
> p2 ->
>         printResult actual
>     | _ ->
>         printfn $"Actual: {actual}"
>         printfn $"Expected: {expected}"
>         failwith "Parse failed"
>     actual
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ### JValue                                                                   │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type JValue =
>     | JString of string
>     | JNumber of float
>     | JBool   of bool
>     | JNull
>     | JObject of Map<string, JValue>
>     | JArray  of JValue list
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let jValue, jValueRef = createParserForwardedToRef<JValue> ()
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ### jNull                                                                    │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let jNull =
>     pstring "null"
>     >>% JNull
>     <?> "null"
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> jValueRef <|
>     choice
>         [[
>             jNull
>         ]]
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jValue "null"
> |> parserEqual (Success JNull)
> 
> ╭─[ 224.91ms - return value ]──────────────────────────────────────────────────╮
> │ <details open="open" class="dni-treeview"><summary><span                     │
> │ class="dni-code-hint"><code>Success (JNull, { lines = [                      │
> │ |&quot;null&quot;|]<br />                  position = { line = 0<br />       │
> │ column = 4 }                                                                 │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item</td><td><details class="dni-treeview"><summary><span                   │
> │ class="dni-code-hint"><code>(JNull, { lines = [|&quot;null&quot;|]<br />     │
> │ position = { line = 0<br />               column = 4 }                       │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item1</td><td><details class="dni-treeview"><summary><span                  │
> │ class="dni-code-hint"><code>JNull</code></span></summary><div><table><thead> │
> │ <tr></tr></thead><tbody><tr><td>IsJString</td><td><div                       │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJNumber</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJBool</td><td><div                           │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJNull</td><td><div                           │
> │ class="dni-plaintext"><pre>true                                              │
> │ </pre></div></td></tr><tr><td>IsJObject</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJArray</td><td><div                          │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item │
> │ 2</td><td><details class="dni-treeview"><summary><span                       │
> │ class="dni-code-hint"><code>{ lines = [|&quot;null&quot;|]<br />  position = │
> │ { line = 0<br />               column = 4 }                                  │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ lines</td><td><div class="dni-plaintext"><pre>[ null                         │
> │ ]</pre></div></td></tr><tr><td>position</td><td><details                     │
> │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line =     │
> │ 0<br />  column = 4                                                          │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ line</td><td><div class="dni-plaintext"><pre>0                               │
> │ </pre></div></td></tr><tr><td>column</td><td><div                            │
> │ class="dni-plaintext"><pre>4                                                 │
> │ </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></ta │
> │ ble></div></details></td></tr></tbody></table></div></details></td></tr><tr> │
> │ <td>IsSuccess</td><td><div class="dni-plaintext"><pre>true                   │
> │ </pre></div></td></tr><tr><td>IsFailure</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr></tbody></table></div></details><style>                │
> │ .dni-code-hint {                                                             │
> │     font-style: italic;                                                      │
> │     overflow: hidden;                                                        │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview {                                                              │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview td {                                                           │
> │     vertical-align: top;                                                     │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ details.dni-treeview {                                                       │
> │     padding-left: 1em;                                                       │
> │ }                                                                            │
> │ table td {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ table tr {                                                                   │
> │     vertical-align: top;                                                     │
> │     margin: 0em 0px;                                                         │
> │ }                                                                            │
> │ table tr td pre                                                              │
> │ {                                                                            │
> │     vertical-align: top !important;                                          │
> │     margin: 0em 0px !important;                                              │
> │ }                                                                            │
> │ table th {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ </style>                                                                     │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ╭─[ 234.87ms - stdout ]────────────────────────────────────────────────────────╮
> │ JNull                                                                        │
> │ JNull                                                                        │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jNull "nulp"
> |> parserEqual (
>     Failure (
>         "null",
>         "Unexpected 'p'",
>         { currentLine = "nulp"; line = 0; column = 3 }
>     )
> )
> 
> ╭─[ 57.09ms - return value ]───────────────────────────────────────────────────╮
> │ <details open="open" class="dni-treeview"><summary><span                     │
> │ class="dni-code-hint"><code>Failure (&quot;null&quot;, &quot;Unexpected      │
> │ &#39;p&#39;&quot;, { currentLine = &quot;nulp&quot;<br />                    │
> │ line = 0<br />                                     column = 3                │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item1</td><td><div class="dni-plaintext"><pre>&quot;null&quot;              │
> │ </pre></div></td></tr><tr><td>Item2</td><td><div                             │
> │ class="dni-plaintext"><pre>&quot;Unexpected &#39;p&#39;&quot;                │
> │ </pre></div></td></tr><tr><td>Item3</td><td><details                         │
> │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{            │
> │ currentLine = &quot;nulp&quot;<br />  line = 0<br />  column = 3             │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ currentLine</td><td><div class="dni-plaintext"><pre>&quot;nulp&quot;         │
> │ </pre></div></td></tr><tr><td>line</td><td><div class="dni-plaintext"><pre>0 │
> │ </pre></div></td></tr><tr><td>column</td><td><div                            │
> │ class="dni-plaintext"><pre>3                                                 │
> │ </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>IsSu │
> │ ccess</td><td><div class="dni-plaintext"><pre>false                          │
> │ </pre></div></td></tr><tr><td>IsFailure</td><td><div                         │
> │ class="dni-plaintext"><pre>true                                              │
> │ </pre></div></td></tr></tbody></table></div></details><style>                │
> │ .dni-code-hint {                                                             │
> │     font-style: italic;                                                      │
> │     overflow: hidden;                                                        │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview {                                                              │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview td {                                                           │
> │     vertical-align: top;                                                     │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ details.dni-treeview {                                                       │
> │     padding-left: 1em;                                                       │
> │ }                                                                            │
> │ table td {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ table tr {                                                                   │
> │     vertical-align: top;                                                     │
> │     margin: 0em 0px;                                                         │
> │ }                                                                            │
> │ table tr td pre                                                              │
> │ {                                                                            │
> │     vertical-align: top !important;                                          │
> │     margin: 0em 0px !important;                                              │
> │ }                                                                            │
> │ table th {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ </style>                                                                     │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ╭─[ 60.64ms - stdout ]─────────────────────────────────────────────────────────╮
> │ Line:0 Col:3 Error parsing null                                              │
> │ nulp                                                                         │
> │    ^Unexpected 'p'                                                           │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ### jBool                                                                    │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let jBool =
>     let jtrue =
>         pstring "true"
>         >>% JBool true
>     let jfalse =
>         pstring "false"
>         >>% JBool false
> 
>     jtrue <|> jfalse
>     <?> "bool"
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> jValueRef <|
>     choice
>         [[
>             jNull
>             jBool
>         ]]
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jBool "true"
> |> parserEqual (Success (JBool true))
> 
> ╭─[ 55.24ms - return value ]───────────────────────────────────────────────────╮
> │ <details open="open" class="dni-treeview"><summary><span                     │
> │ class="dni-code-hint"><code>Success (JBool true, { lines = [                 │
> │ |&quot;true&quot;|]<br />                       position = { line = 0<br />  │
> │ column = 4 }                                                                 │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item</td><td><details class="dni-treeview"><summary><span                   │
> │ class="dni-code-hint"><code>(JBool true, { lines = [|&quot;true&quot;|]<br   │
> │ />  position = { line = 0<br />               column = 4 }                   │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item1</td><td><details class="dni-treeview"><summary><span                  │
> │ class="dni-code-hint"><code>JBool                                            │
> │ true</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr>< │
> │ td>Item</td><td><div class="dni-plaintext"><pre>true                         │
> │ </pre></div></td></tr><tr><td>IsJString</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJNumber</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJBool</td><td><div                           │
> │ class="dni-plaintext"><pre>true                                              │
> │ </pre></div></td></tr><tr><td>IsJNull</td><td><div                           │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJObject</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJArray</td><td><div                          │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item │
> │ 2</td><td><details class="dni-treeview"><summary><span                       │
> │ class="dni-code-hint"><code>{ lines = [|&quot;true&quot;|]<br />  position = │
> │ { line = 0<br />               column = 4 }                                  │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ lines</td><td><div class="dni-plaintext"><pre>[ true                         │
> │ ]</pre></div></td></tr><tr><td>position</td><td><details                     │
> │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line =     │
> │ 0<br />  column = 4                                                          │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ line</td><td><div class="dni-plaintext"><pre>0                               │
> │ </pre></div></td></tr><tr><td>column</td><td><div                            │
> │ class="dni-plaintext"><pre>4                                                 │
> │ </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></ta │
> │ ble></div></details></td></tr></tbody></table></div></details></td></tr><tr> │
> │ <td>IsSuccess</td><td><div class="dni-plaintext"><pre>true                   │
> │ </pre></div></td></tr><tr><td>IsFailure</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr></tbody></table></div></details><style>                │
> │ .dni-code-hint {                                                             │
> │     font-style: italic;                                                      │
> │     overflow: hidden;                                                        │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview {                                                              │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview td {                                                           │
> │     vertical-align: top;                                                     │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ details.dni-treeview {                                                       │
> │     padding-left: 1em;                                                       │
> │ }                                                                            │
> │ table td {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ table tr {                                                                   │
> │     vertical-align: top;                                                     │
> │     margin: 0em 0px;                                                         │
> │ }                                                                            │
> │ table tr td pre                                                              │
> │ {                                                                            │
> │     vertical-align: top !important;                                          │
> │     margin: 0em 0px !important;                                              │
> │ }                                                                            │
> │ table th {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ </style>                                                                     │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ╭─[ 60.55ms - stdout ]─────────────────────────────────────────────────────────╮
> │ JBool true                                                                   │
> │ JBool true                                                                   │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jBool "false"
> |> parserEqual (Success (JBool false))
> 
> ╭─[ 52.29ms - return value ]───────────────────────────────────────────────────╮
> │ <details open="open" class="dni-treeview"><summary><span                     │
> │ class="dni-code-hint"><code>Success (JBool false, { lines = [                │
> │ |&quot;false&quot;|]<br />                        position = { line = 0<br   │
> │ />                                     column = 5 }                          │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item</td><td><details class="dni-treeview"><summary><span                   │
> │ class="dni-code-hint"><code>(JBool false, { lines = [|&quot;false&quot;|]<br │
> │ />  position = { line = 0<br />               column = 5 }                   │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item1</td><td><details class="dni-treeview"><summary><span                  │
> │ class="dni-code-hint"><code>JBool                                            │
> │ false</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr> │
> │ <td>Item</td><td><div class="dni-plaintext"><pre>false                       │
> │ </pre></div></td></tr><tr><td>IsJString</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJNumber</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJBool</td><td><div                           │
> │ class="dni-plaintext"><pre>true                                              │
> │ </pre></div></td></tr><tr><td>IsJNull</td><td><div                           │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJObject</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJArray</td><td><div                          │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item │
> │ 2</td><td><details class="dni-treeview"><summary><span                       │
> │ class="dni-code-hint"><code>{ lines = [|&quot;false&quot;|]<br />  position  │
> │ = { line = 0<br />               column = 5 }                                │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ lines</td><td><div class="dni-plaintext"><pre>[ false                        │
> │ ]</pre></div></td></tr><tr><td>position</td><td><details                     │
> │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line =     │
> │ 0<br />  column = 5                                                          │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ line</td><td><div class="dni-plaintext"><pre>0                               │
> │ </pre></div></td></tr><tr><td>column</td><td><div                            │
> │ class="dni-plaintext"><pre>5                                                 │
> │ </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></ta │
> │ ble></div></details></td></tr></tbody></table></div></details></td></tr><tr> │
> │ <td>IsSuccess</td><td><div class="dni-plaintext"><pre>true                   │
> │ </pre></div></td></tr><tr><td>IsFailure</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr></tbody></table></div></details><style>                │
> │ .dni-code-hint {                                                             │
> │     font-style: italic;                                                      │
> │     overflow: hidden;                                                        │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview {                                                              │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview td {                                                           │
> │     vertical-align: top;                                                     │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ details.dni-treeview {                                                       │
> │     padding-left: 1em;                                                       │
> │ }                                                                            │
> │ table td {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ table tr {                                                                   │
> │     vertical-align: top;                                                     │
> │     margin: 0em 0px;                                                         │
> │ }                                                                            │
> │ table tr td pre                                                              │
> │ {                                                                            │
> │     vertical-align: top !important;                                          │
> │     margin: 0em 0px !important;                                              │
> │ }                                                                            │
> │ table th {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ </style>                                                                     │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ╭─[ 57.76ms - stdout ]─────────────────────────────────────────────────────────╮
> │ JBool false                                                                  │
> │ JBool false                                                                  │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jBool "truX"
> |> parserEqual (
>     Failure (
>         "bool",
>         "Unexpected 't'",
>         { currentLine = "truX"; line = 0; column = 0 }
>     )
> )
> 
> ╭─[ 38.06ms - return value ]───────────────────────────────────────────────────╮
> │ <details open="open" class="dni-treeview"><summary><span                     │
> │ class="dni-code-hint"><code>Failure (&quot;bool&quot;, &quot;Unexpected      │
> │ &#39;t&#39;&quot;, { currentLine = &quot;truX&quot;<br />                    │
> │ line = 0<br />                                     column = 0                │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item1</td><td><div class="dni-plaintext"><pre>&quot;bool&quot;              │
> │ </pre></div></td></tr><tr><td>Item2</td><td><div                             │
> │ class="dni-plaintext"><pre>&quot;Unexpected &#39;t&#39;&quot;                │
> │ </pre></div></td></tr><tr><td>Item3</td><td><details                         │
> │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{            │
> │ currentLine = &quot;truX&quot;<br />  line = 0<br />  column = 0             │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ currentLine</td><td><div class="dni-plaintext"><pre>&quot;truX&quot;         │
> │ </pre></div></td></tr><tr><td>line</td><td><div class="dni-plaintext"><pre>0 │
> │ </pre></div></td></tr><tr><td>column</td><td><div                            │
> │ class="dni-plaintext"><pre>0                                                 │
> │ </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>IsSu │
> │ ccess</td><td><div class="dni-plaintext"><pre>false                          │
> │ </pre></div></td></tr><tr><td>IsFailure</td><td><div                         │
> │ class="dni-plaintext"><pre>true                                              │
> │ </pre></div></td></tr></tbody></table></div></details><style>                │
> │ .dni-code-hint {                                                             │
> │     font-style: italic;                                                      │
> │     overflow: hidden;                                                        │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview {                                                              │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview td {                                                           │
> │     vertical-align: top;                                                     │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ details.dni-treeview {                                                       │
> │     padding-left: 1em;                                                       │
> │ }                                                                            │
> │ table td {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ table tr {                                                                   │
> │     vertical-align: top;                                                     │
> │     margin: 0em 0px;                                                         │
> │ }                                                                            │
> │ table tr td pre                                                              │
> │ {                                                                            │
> │     vertical-align: top !important;                                          │
> │     margin: 0em 0px !important;                                              │
> │ }                                                                            │
> │ table th {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ </style>                                                                     │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ╭─[ 41.91ms - stdout ]─────────────────────────────────────────────────────────╮
> │ Line:0 Col:0 Error parsing bool                                              │
> │ truX                                                                         │
> │ ^Unexpected 't'                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ### jUnescapedChar                                                           │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let jUnescapedChar =
>     satisfy (fun ch -> ch <> '\\' && ch <> '\"') "char"
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jUnescapedChar "a"
> |> parserEqual (Success 'a')
> 
> ╭─[ 62.33ms - return value ]───────────────────────────────────────────────────╮
> │ <details open="open" class="dni-treeview"><summary><span                     │
> │ class="dni-code-hint"><code>Success (&#39;a&#39;, { lines = [                │
> │ |&quot;a&quot;|]<br />                position = { line = 0<br />            │
> │ column = 1 }                                                                 │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item</td><td><details class="dni-treeview"><summary><span                   │
> │ class="dni-code-hint"><code>(a, { lines = [|&quot;a&quot;|]<br />  position  │
> │ = { line = 0<br />               column = 1 }                                │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item1</td><td><div class="dni-plaintext"><pre>&#39;a&#39;                   │
> │ </pre></div></td></tr><tr><td>Item2</td><td><details                         │
> │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ lines = [  │
> │ |&quot;a&quot;|]<br />  position = { line = 0<br />               column = 1 │
> │ }                                                                            │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ lines</td><td><div class="dni-plaintext"><pre>[ a                            │
> │ ]</pre></div></td></tr><tr><td>position</td><td><details                     │
> │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line =     │
> │ 0<br />  column = 1                                                          │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ line</td><td><div class="dni-plaintext"><pre>0                               │
> │ </pre></div></td></tr><tr><td>column</td><td><div                            │
> │ class="dni-plaintext"><pre>1                                                 │
> │ </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></ta │
> │ ble></div></details></td></tr></tbody></table></div></details></td></tr><tr> │
> │ <td>IsSuccess</td><td><div class="dni-plaintext"><pre>true                   │
> │ </pre></div></td></tr><tr><td>IsFailure</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr></tbody></table></div></details><style>                │
> │ .dni-code-hint {                                                             │
> │     font-style: italic;                                                      │
> │     overflow: hidden;                                                        │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview {                                                              │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview td {                                                           │
> │     vertical-align: top;                                                     │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ details.dni-treeview {                                                       │
> │     padding-left: 1em;                                                       │
> │ }                                                                            │
> │ table td {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ table tr {                                                                   │
> │     vertical-align: top;                                                     │
> │     margin: 0em 0px;                                                         │
> │ }                                                                            │
> │ table tr td pre                                                              │
> │ {                                                                            │
> │     vertical-align: top !important;                                          │
> │     margin: 0em 0px !important;                                              │
> │ }                                                                            │
> │ table th {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ </style>                                                                     │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ╭─[ 66.74ms - stdout ]─────────────────────────────────────────────────────────╮
> │ 'a'                                                                          │
> │ 'a'                                                                          │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jUnescapedChar "\\"
> |> parserEqual (
>     Failure (
>         "char",
>         "Unexpected '\\'",
>         { currentLine = "\\"; line = 0; column = 0 }
>     )
> )
> 
> ╭─[ 45.06ms - return value ]───────────────────────────────────────────────────╮
> │ <details open="open" class="dni-treeview"><summary><span                     │
> │ class="dni-code-hint"><code>Failure (&quot;char&quot;, &quot;Unexpected      │
> │ &#39;\&#39;&quot;, { currentLine = &quot;\&quot;<br />                       │
> │ line = 0<br />                                     column = 0                │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item1</td><td><div class="dni-plaintext"><pre>&quot;char&quot;              │
> │ </pre></div></td></tr><tr><td>Item2</td><td><div                             │
> │ class="dni-plaintext"><pre>&quot;Unexpected &#39;\&#39;&quot;                │
> │ </pre></div></td></tr><tr><td>Item3</td><td><details                         │
> │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{            │
> │ currentLine = &quot;\&quot;<br />  line = 0<br />  column = 0                │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ currentLine</td><td><div class="dni-plaintext"><pre>&quot;\&quot;            │
> │ </pre></div></td></tr><tr><td>line</td><td><div class="dni-plaintext"><pre>0 │
> │ </pre></div></td></tr><tr><td>column</td><td><div                            │
> │ class="dni-plaintext"><pre>0                                                 │
> │ </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>IsSu │
> │ ccess</td><td><div class="dni-plaintext"><pre>false                          │
> │ </pre></div></td></tr><tr><td>IsFailure</td><td><div                         │
> │ class="dni-plaintext"><pre>true                                              │
> │ </pre></div></td></tr></tbody></table></div></details><style>                │
> │ .dni-code-hint {                                                             │
> │     font-style: italic;                                                      │
> │     overflow: hidden;                                                        │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview {                                                              │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview td {                                                           │
> │     vertical-align: top;                                                     │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ details.dni-treeview {                                                       │
> │     padding-left: 1em;                                                       │
> │ }                                                                            │
> │ table td {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ table tr {                                                                   │
> │     vertical-align: top;                                                     │
> │     margin: 0em 0px;                                                         │
> │ }                                                                            │
> │ table tr td pre                                                              │
> │ {                                                                            │
> │     vertical-align: top !important;                                          │
> │     margin: 0em 0px !important;                                              │
> │ }                                                                            │
> │ table th {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ </style>                                                                     │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ╭─[ 51.23ms - stdout ]─────────────────────────────────────────────────────────╮
> │ Line:0 Col:0 Error parsing char                                              │
> │ \                                                                            │
> │ ^Unexpected '\'                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ### jEscapedChar                                                             │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let jEscapedChar =
>     [[
>         ("\\\"",'\"')
>         ("\\\\",'\\')
>         ("\\/",'/')
>         ("\\b",'\b')
>         ("\\f",'\f')
>         ("\\n",'\n')
>         ("\\r",'\r')
>         ("\\t",'\t')
>     ]]
>     |> List.map (fun (toMatch, result) ->
>         pstring toMatch >>% result
>     )
>     |> choice
>     <?> "escaped char"
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jEscapedChar "\\\\"
> |> parserEqual (Success '\\')
> 
> ╭─[ 47.87ms - return value ]───────────────────────────────────────────────────╮
> │ <details open="open" class="dni-treeview"><summary><span                     │
> │ class="dni-code-hint"><code>Success (&#39;\\&#39;, { lines = [               │
> │ |&quot;\\&quot;|]<br />                 position = { line = 0<br />          │
> │ column = 2 }                                                                 │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item</td><td><details class="dni-treeview"><summary><span                   │
> │ class="dni-code-hint"><code>(\, { lines = [|&quot;\\&quot;|]<br />  position │
> │ = { line = 0<br />               column = 2 }                                │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item1</td><td><div class="dni-plaintext"><pre>&#39;\\&#39;                  │
> │ </pre></div></td></tr><tr><td>Item2</td><td><details                         │
> │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ lines = [  │
> │ |&quot;\\&quot;|]<br />  position = { line = 0<br />               column =  │
> │ 2 }                                                                          │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ lines</td><td><div class="dni-plaintext"><pre>[ \\                           │
> │ ]</pre></div></td></tr><tr><td>position</td><td><details                     │
> │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line =     │
> │ 0<br />  column = 2                                                          │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ line</td><td><div class="dni-plaintext"><pre>0                               │
> │ </pre></div></td></tr><tr><td>column</td><td><div                            │
> │ class="dni-plaintext"><pre>2                                                 │
> │ </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></ta │
> │ ble></div></details></td></tr></tbody></table></div></details></td></tr><tr> │
> │ <td>IsSuccess</td><td><div class="dni-plaintext"><pre>true                   │
> │ </pre></div></td></tr><tr><td>IsFailure</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr></tbody></table></div></details><style>                │
> │ .dni-code-hint {                                                             │
> │     font-style: italic;                                                      │
> │     overflow: hidden;                                                        │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview {                                                              │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview td {                                                           │
> │     vertical-align: top;                                                     │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ details.dni-treeview {                                                       │
> │     padding-left: 1em;                                                       │
> │ }                                                                            │
> │ table td {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ table tr {                                                                   │
> │     vertical-align: top;                                                     │
> │     margin: 0em 0px;                                                         │
> │ }                                                                            │
> │ table tr td pre                                                              │
> │ {                                                                            │
> │     vertical-align: top !important;                                          │
> │     margin: 0em 0px !important;                                              │
> │ }                                                                            │
> │ table th {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ </style>                                                                     │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ╭─[ 52.87ms - stdout ]─────────────────────────────────────────────────────────╮
> │ '\\'                                                                         │
> │ '\\'                                                                         │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jEscapedChar "\\t"
> |> parserEqual (Success '\t')
> 
> ╭─[ 40.10ms - return value ]───────────────────────────────────────────────────╮
> │ <details open="open" class="dni-treeview"><summary><span                     │
> │ class="dni-code-hint"><code>Success (&#39;\009&#39;, { lines = [             │
> │ |&quot;\t&quot;|]<br />                   position = { line = 0<br />        │
> │ column = 2 }                                                                 │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item</td><td><details class="dni-treeview"><summary><span                   │
> │ class="dni-code-hint"><code>(	, { lines = [|&quot;\t&quot;|]<br />  position = │
> │ { line = 0<br />               column = 2 }                                  │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item1</td><td><div class="dni-plaintext"><pre>&#39;\009&#39;                │
> │ </pre></div></td></tr><tr><td>Item2</td><td><details                         │
> │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ lines = [  │
> │ |&quot;\t&quot;|]<br />  position = { line = 0<br />               column =  │
> │ 2 }                                                                          │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ lines</td><td><div class="dni-plaintext"><pre>[ \t                           │
> │ ]</pre></div></td></tr><tr><td>position</td><td><details                     │
> │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line =     │
> │ 0<br />  column = 2                                                          │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ line</td><td><div class="dni-plaintext"><pre>0                               │
> │ </pre></div></td></tr><tr><td>column</td><td><div                            │
> │ class="dni-plaintext"><pre>2                                                 │
> │ </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></ta │
> │ ble></div></details></td></tr></tbody></table></div></details></td></tr><tr> │
> │ <td>IsSuccess</td><td><div class="dni-plaintext"><pre>true                   │
> │ </pre></div></td></tr><tr><td>IsFailure</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr></tbody></table></div></details><style>                │
> │ .dni-code-hint {                                                             │
> │     font-style: italic;                                                      │
> │     overflow: hidden;                                                        │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview {                                                              │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview td {                                                           │
> │     vertical-align: top;                                                     │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ details.dni-treeview {                                                       │
> │     padding-left: 1em;                                                       │
> │ }                                                                            │
> │ table td {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ table tr {                                                                   │
> │     vertical-align: top;                                                     │
> │     margin: 0em 0px;                                                         │
> │ }                                                                            │
> │ table tr td pre                                                              │
> │ {                                                                            │
> │     vertical-align: top !important;                                          │
> │     margin: 0em 0px !important;                                              │
> │ }                                                                            │
> │ table th {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ </style>                                                                     │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ╭─[ 44.75ms - stdout ]─────────────────────────────────────────────────────────╮
> │ '\009'                                                                       │
> │ '\009'                                                                       │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jEscapedChar @"\\"
> |> parserEqual (Success '\\')
> 
> ╭─[ 36.41ms - return value ]───────────────────────────────────────────────────╮
> │ <details open="open" class="dni-treeview"><summary><span                     │
> │ class="dni-code-hint"><code>Success (&#39;\\&#39;, { lines = [               │
> │ |&quot;\\&quot;|]<br />                 position = { line = 0<br />          │
> │ column = 2 }                                                                 │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item</td><td><details class="dni-treeview"><summary><span                   │
> │ class="dni-code-hint"><code>(\, { lines = [|&quot;\\&quot;|]<br />  position │
> │ = { line = 0<br />               column = 2 }                                │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item1</td><td><div class="dni-plaintext"><pre>&#39;\\&#39;                  │
> │ </pre></div></td></tr><tr><td>Item2</td><td><details                         │
> │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ lines = [  │
> │ |&quot;\\&quot;|]<br />  position = { line = 0<br />               column =  │
> │ 2 }                                                                          │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ lines</td><td><div class="dni-plaintext"><pre>[ \\                           │
> │ ]</pre></div></td></tr><tr><td>position</td><td><details                     │
> │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line =     │
> │ 0<br />  column = 2                                                          │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ line</td><td><div class="dni-plaintext"><pre>0                               │
> │ </pre></div></td></tr><tr><td>column</td><td><div                            │
> │ class="dni-plaintext"><pre>2                                                 │
> │ </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></ta │
> │ ble></div></details></td></tr></tbody></table></div></details></td></tr><tr> │
> │ <td>IsSuccess</td><td><div class="dni-plaintext"><pre>true                   │
> │ </pre></div></td></tr><tr><td>IsFailure</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr></tbody></table></div></details><style>                │
> │ .dni-code-hint {                                                             │
> │     font-style: italic;                                                      │
> │     overflow: hidden;                                                        │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview {                                                              │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview td {                                                           │
> │     vertical-align: top;                                                     │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ details.dni-treeview {                                                       │
> │     padding-left: 1em;                                                       │
> │ }                                                                            │
> │ table td {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ table tr {                                                                   │
> │     vertical-align: top;                                                     │
> │     margin: 0em 0px;                                                         │
> │ }                                                                            │
> │ table tr td pre                                                              │
> │ {                                                                            │
> │     vertical-align: top !important;                                          │
> │     margin: 0em 0px !important;                                              │
> │ }                                                                            │
> │ table th {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ </style>                                                                     │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ╭─[ 41.44ms - stdout ]─────────────────────────────────────────────────────────╮
> │ '\\'                                                                         │
> │ '\\'                                                                         │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jEscapedChar @"\n"
> |> parserEqual (Success '\n')
> 
> ╭─[ 47.86ms - return value ]───────────────────────────────────────────────────╮
> │ <details open="open" class="dni-treeview"><summary><span                     │
> │ class="dni-code-hint"><code>Success (&#39;\010&#39;, { lines = [|&quot;<br   │
> │ />&quot;|]<br />                   position = { line = 0<br />               │
> │ column = 2 }                                                                 │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item</td><td><details class="dni-treeview"><summary><span                   │
> │ class="dni-code-hint"><code>(<br />, { lines = [|&quot;<br />&quot;|]<br />  │
> │ position = { line = 0<br />               column = 2 }                       │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item1</td><td><div class="dni-plaintext"><pre>&#39;\010&#39;                │
> │ </pre></div></td></tr><tr><td>Item2</td><td><details                         │
> │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ lines = [  │
> │ |&quot;<br />&quot;|]<br />  position = { line = 0<br />                     │
> │ column = 2 }                                                                 │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ lines</td><td><div class="dni-plaintext"><pre>[ <br />                       │
> │ ]</pre></div></td></tr><tr><td>position</td><td><details                     │
> │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line =     │
> │ 0<br />  column = 2                                                          │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ line</td><td><div class="dni-plaintext"><pre>0                               │
> │ </pre></div></td></tr><tr><td>column</td><td><div                            │
> │ class="dni-plaintext"><pre>2                                                 │
> │ </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></ta │
> │ ble></div></details></td></tr></tbody></table></div></details></td></tr><tr> │
> │ <td>IsSuccess</td><td><div class="dni-plaintext"><pre>true                   │
> │ </pre></div></td></tr><tr><td>IsFailure</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr></tbody></table></div></details><style>                │
> │ .dni-code-hint {                                                             │
> │     font-style: italic;                                                      │
> │     overflow: hidden;                                                        │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview {                                                              │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview td {                                                           │
> │     vertical-align: top;                                                     │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ details.dni-treeview {                                                       │
> │     padding-left: 1em;                                                       │
> │ }                                                                            │
> │ table td {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ table tr {                                                                   │
> │     vertical-align: top;                                                     │
> │     margin: 0em 0px;                                                         │
> │ }                                                                            │
> │ table tr td pre                                                              │
> │ {                                                                            │
> │     vertical-align: top !important;                                          │
> │     margin: 0em 0px !important;                                              │
> │ }                                                                            │
> │ table th {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ </style>                                                                     │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ╭─[ 52.63ms - stdout ]─────────────────────────────────────────────────────────╮
> │ '\010'                                                                       │
> │ '\010'                                                                       │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jEscapedChar "a"
> |> parserEqual (
>     Failure (
>         "escaped char",
>         "Unexpected 'a'",
>         { currentLine = "a"; line = 0; column = 0 }
>     )
> )
> 
> ╭─[ 38.42ms - return value ]───────────────────────────────────────────────────╮
> │ <details open="open" class="dni-treeview"><summary><span                     │
> │ class="dni-code-hint"><code>Failure (&quot;escaped char&quot;,               │
> │ &quot;Unexpected &#39;a&#39;&quot;, { currentLine = &quot;a&quot;<br />      │
> │ line = 0<br />                                             column = 0        │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item1</td><td><div class="dni-plaintext"><pre>&quot;escaped char&quot;      │
> │ </pre></div></td></tr><tr><td>Item2</td><td><div                             │
> │ class="dni-plaintext"><pre>&quot;Unexpected &#39;a&#39;&quot;                │
> │ </pre></div></td></tr><tr><td>Item3</td><td><details                         │
> │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{            │
> │ currentLine = &quot;a&quot;<br />  line = 0<br />  column = 0                │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ currentLine</td><td><div class="dni-plaintext"><pre>&quot;a&quot;            │
> │ </pre></div></td></tr><tr><td>line</td><td><div class="dni-plaintext"><pre>0 │
> │ </pre></div></td></tr><tr><td>column</td><td><div                            │
> │ class="dni-plaintext"><pre>0                                                 │
> │ </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>IsSu │
> │ ccess</td><td><div class="dni-plaintext"><pre>false                          │
> │ </pre></div></td></tr><tr><td>IsFailure</td><td><div                         │
> │ class="dni-plaintext"><pre>true                                              │
> │ </pre></div></td></tr></tbody></table></div></details><style>                │
> │ .dni-code-hint {                                                             │
> │     font-style: italic;                                                      │
> │     overflow: hidden;                                                        │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview {                                                              │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview td {                                                           │
> │     vertical-align: top;                                                     │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ details.dni-treeview {                                                       │
> │     padding-left: 1em;                                                       │
> │ }                                                                            │
> │ table td {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ table tr {                                                                   │
> │     vertical-align: top;                                                     │
> │     margin: 0em 0px;                                                         │
> │ }                                                                            │
> │ table tr td pre                                                              │
> │ {                                                                            │
> │     vertical-align: top !important;                                          │
> │     margin: 0em 0px !important;                                              │
> │ }                                                                            │
> │ table th {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ </style>                                                                     │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ╭─[ 42.36ms - stdout ]─────────────────────────────────────────────────────────╮
> │ Line:0 Col:0 Error parsing escaped char                                      │
> │ a                                                                            │
> │ ^Unexpected 'a'                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ### jUnicodeChar                                                             │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let jUnicodeChar =
>     let backslash = pchar '\\'
>     let uChar = pchar 'u'
>     let hexdigit = anyOf ([[ '0' .. '9' ]] @ [[ 'A' .. 'F' ]] @ [[ 'a' .. 'f' 
> ]])
>     let fourHexDigits = hexdigit .>>. hexdigit .>>. hexdigit .>>. hexdigit
> 
>     let inline convertToChar (((h1, h2), h3), h4) =
>         let str = $"%c{h1}%c{h2}%c{h3}%c{h4}"
>         Int32.Parse (str, Globalization.NumberStyles.HexNumber) |> char
> 
>     backslash >>. uChar >>. fourHexDigits
>     |>> convertToChar
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jUnicodeChar "\\u263A"
> |> parserEqual (Success '☺')
> 
> ╭─[ 48.09ms - return value ]───────────────────────────────────────────────────╮
> │ <details open="open" class="dni-treeview"><summary><span                     │
> │ class="dni-code-hint"><code>Success (&#39;☺&#39;, { lines = [                │
> │ |&quot;\u263A&quot;|]<br />                position = { line = 0<br />       │
> │ column = 6 }                                                                 │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item</td><td><details class="dni-treeview"><summary><span                   │
> │ class="dni-code-hint"><code>(☺, { lines = [|&quot;\u263A&quot;|]<br />       │
> │ position = { line = 0<br />               column = 6 }                       │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item1</td><td><div class="dni-plaintext"><pre>&#39;☺&#39;                   │
> │ </pre></div></td></tr><tr><td>Item2</td><td><details                         │
> │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ lines = [  │
> │ |&quot;\u263A&quot;|]<br />  position = { line = 0<br />                     │
> │ column = 6 }                                                                 │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ lines</td><td><div class="dni-plaintext"><pre>[ \u263A                       │
> │ ]</pre></div></td></tr><tr><td>position</td><td><details                     │
> │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line =     │
> │ 0<br />  column = 6                                                          │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ line</td><td><div class="dni-plaintext"><pre>0                               │
> │ </pre></div></td></tr><tr><td>column</td><td><div                            │
> │ class="dni-plaintext"><pre>6                                                 │
> │ </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></ta │
> │ ble></div></details></td></tr></tbody></table></div></details></td></tr><tr> │
> │ <td>IsSuccess</td><td><div class="dni-plaintext"><pre>true                   │
> │ </pre></div></td></tr><tr><td>IsFailure</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr></tbody></table></div></details><style>                │
> │ .dni-code-hint {                                                             │
> │     font-style: italic;                                                      │
> │     overflow: hidden;                                                        │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview {                                                              │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview td {                                                           │
> │     vertical-align: top;                                                     │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ details.dni-treeview {                                                       │
> │     padding-left: 1em;                                                       │
> │ }                                                                            │
> │ table td {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ table tr {                                                                   │
> │     vertical-align: top;                                                     │
> │     margin: 0em 0px;                                                         │
> │ }                                                                            │
> │ table tr td pre                                                              │
> │ {                                                                            │
> │     vertical-align: top !important;                                          │
> │     margin: 0em 0px !important;                                              │
> │ }                                                                            │
> │ table th {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ </style>                                                                     │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ╭─[ 52.76ms - stdout ]─────────────────────────────────────────────────────────╮
> │ '☺'                                                                          │
> │ '☺'                                                                          │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ### jString                                                                  │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let quotedString =
>     let quote = pchar '\"' <?> "quote"
>     let jchar = jUnescapedChar <|> jEscapedChar <|> jUnicodeChar
> 
>     quote >>. manyChars jchar .>> quote
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let jString =
>     quotedString
>     |>> JString
>     <?> "quoted string"
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> jValueRef <|
>     choice
>         [[
>             jNull
>             jBool
>             jString
>         ]]
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jString "\"\""
> |> parserEqual (Success (JString ""))
> 
> ╭─[ 56.95ms - return value ]───────────────────────────────────────────────────╮
> │ <details open="open" class="dni-treeview"><summary><span                     │
> │ class="dni-code-hint"><code>Success (JString &quot;&quot;, { lines = [       │
> │ |&quot;&quot;&quot;&quot;|]<br />                       position = { line =  │
> │ 0<br />                                    column = 2 }                      │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item</td><td><details class="dni-treeview"><summary><span                   │
> │ class="dni-code-hint"><code>(JString &quot;&quot;, { lines = [               │
> │ |&quot;&quot;&quot;&quot;|]<br />  position = { line = 0<br />               │
> │ column = 2 }                                                                 │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item1</td><td><details class="dni-treeview"><summary><span                  │
> │ class="dni-code-hint"><code>JString                                          │
> │ &quot;&quot;</code></span></summary><div><table><thead><tr></tr></thead><tbo │
> │ dy><tr><td>Item</td><td><div class="dni-plaintext"><pre>&quot;&quot;         │
> │ </pre></div></td></tr><tr><td>IsJString</td><td><div                         │
> │ class="dni-plaintext"><pre>true                                              │
> │ </pre></div></td></tr><tr><td>IsJNumber</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJBool</td><td><div                           │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJNull</td><td><div                           │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJObject</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJArray</td><td><div                          │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item │
> │ 2</td><td><details class="dni-treeview"><su...span                           │
> │ class="dni-code-hint"><code>{ lines = [|&quot;&quot;&quot;&quot;|]<br />     │
> │ position = { line = 0<br />               column = 2 }                       │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ lines</td><td><div class="dni-plaintext"><pre>[ &quot;&quot;                 │
> │ ]</pre></div></td></tr><tr><td>position</td><td><details                     │
> │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line =     │
> │ 0<br />  column = 2                                                          │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ line</td><td><div class="dni-plaintext"><pre>0                               │
> │ </pre></div></td></tr><tr><td>column</td><td><div                            │
> │ class="dni-plaintext"><pre>2                                                 │
> │ </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></ta │
> │ ble></div></details></td></tr></tbody></table></div></details></td></tr><tr> │
> │ <td>IsSuccess</td><td><div class="dni-plaintext"><pre>true                   │
> │ </pre></div></td></tr><tr><td>IsFailure</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr></tbody></table></div></details><style>                │
> │ .dni-code-hint {                                                             │
> │     font-style: italic;                                                      │
> │     overflow: hidden;                                                        │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview {                                                              │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview td {                                                           │
> │     vertical-align: top;                                                     │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ details.dni-treeview {                                                       │
> │     padding-left: 1em;                                                       │
> │ }                                                                            │
> │ table td {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ table tr {                                                                   │
> │     vertical-align: top;                                                     │
> │     margin: 0em 0px;                                                         │
> │ }                                                                            │
> │ table tr td pre                                                              │
> │ {                                                                            │
> │     vertical-align: top !important;                                          │
> │     margin: 0em 0px !important;                                              │
> │ }                                                                            │
> │ table th {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ </style>                                                                     │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ╭─[ 62.15ms - stdout ]─────────────────────────────────────────────────────────╮
> │ JString ""                                                                   │
> │ JString ""                                                                   │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jString "\"a\""
> |> parserEqual (Success (JString "a"))
> 
> ╭─[ 36.97ms - return value ]───────────────────────────────────────────────────╮
> │ <details open="open" class="dni-treeview"><summary><span                     │
> │ class="dni-code-hint"><code>Success (JString &quot;a&quot;, { lines = [      │
> │ |&quot;&quot;a&quot;&quot;|]<br />                        position = { line  │
> │ = 0<br />                                     column = 3 }                   │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item</td><td><details class="dni-treeview"><summary><span                   │
> │ class="dni-code-hint"><code>(JString &quot;a&quot;, { lines = [              │
> │ |&quot;&quot;a&quot;&quot;|]<br />  position = { line = 0<br />              │
> │ column = 3 }                                                                 │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item1</td><td><details class="dni-treeview"><summary><span                  │
> │ class="dni-code-hint"><code>JString                                          │
> │ &quot;a&quot;</code></span></summary><div><table><thead><tr></tr></thead><tb │
> │ ody><tr><td>Item</td><td><div class="dni-plaintext"><pre>&quot;a&quot;       │
> │ </pre></div></td></tr><tr><td>IsJString</td><td><div                         │
> │ class="dni-plaintext"><pre>true                                              │
> │ </pre></div></td></tr><tr><td>IsJNumber</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJBool</td><td><div                           │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJNull</td><td><div                           │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJObject</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJArray</td><td><div                          │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item │
> │ 2</td><td><details class="dni-treev...an class="dni-code-hint"><code>{ lines │
> │ = [|&quot;&quot;a&quot;&quot;|]<br />  position = { line = 0<br />           │
> │ column = 3 }                                                                 │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ lines</td><td><div class="dni-plaintext"><pre>[ &quot;a&quot;                │
> │ ]</pre></div></td></tr><tr><td>position</td><td><details                     │
> │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line =     │
> │ 0<br />  column = 3                                                          │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ line</td><td><div class="dni-plaintext"><pre>0                               │
> │ </pre></div></td></tr><tr><td>column</td><td><div                            │
> │ class="dni-plaintext"><pre>3                                                 │
> │ </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></ta │
> │ ble></div></details></td></tr></tbody></table></div></details></td></tr><tr> │
> │ <td>IsSuccess</td><td><div class="dni-plaintext"><pre>true                   │
> │ </pre></div></td></tr><tr><td>IsFailure</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr></tbody></table></div></details><style>                │
> │ .dni-code-hint {                                                             │
> │     font-style: italic;                                                      │
> │     overflow: hidden;                                                        │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview {                                                              │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview td {                                                           │
> │     vertical-align: top;                                                     │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ details.dni-treeview {                                                       │
> │     padding-left: 1em;                                                       │
> │ }                                                                            │
> │ table td {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ table tr {                                                                   │
> │     vertical-align: top;                                                     │
> │     margin: 0em 0px;                                                         │
> │ }                                                                            │
> │ table tr td pre                                                              │
> │ {                                                                            │
> │     vertical-align: top !important;                                          │
> │     margin: 0em 0px !important;                                              │
> │ }                                                                            │
> │ table th {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ </style>                                                                     │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ╭─[ 42.49ms - stdout ]─────────────────────────────────────────────────────────╮
> │ JString "a"                                                                  │
> │ JString "a"                                                                  │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jString "\"ab\""
> |> parserEqual (Success (JString "ab"))
> 
> ╭─[ 46.66ms - return value ]───────────────────────────────────────────────────╮
> │ <details open="open" class="dni-treeview"><summary><span                     │
> │ class="dni-code-hint"><code>Success (JString &quot;ab&quot;, { lines = [     │
> │ |&quot;&quot;ab&quot;&quot;|]<br />                         position = {     │
> │ line = 0<br />                                      column = 4 }             │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item</td><td><details class="dni-treeview"><summary><span                   │
> │ class="dni-code-hint"><code>(JString &quot;ab&quot;, { lines = [             │
> │ |&quot;&quot;ab&quot;&quot;|]<br />  position = { line = 0<br />             │
> │ column = 4 }                                                                 │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item1</td><td><details class="dni-treeview"><summary><span                  │
> │ class="dni-code-hint"><code>JString                                          │
> │ &quot;ab&quot;</code></span></summary><div><table><thead><tr></tr></thead><t │
> │ body><tr><td>Item</td><td><div class="dni-plaintext"><pre>&quot;ab&quot;     │
> │ </pre></div></td></tr><tr><td>IsJString</td><td><div                         │
> │ class="dni-plaintext"><pre>true                                              │
> │ </pre></div></td></tr><tr><td>IsJNumber</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJBool</td><td><div                           │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJNull</td><td><div                           │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJObject</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJArray</td><td><div                          │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item │
> │ 2</td><td><details class="d... class="dni-code-hint"><code>{ lines = [       │
> │ |&quot;&quot;ab&quot;&quot;|]<br />  position = { line = 0<br />             │
> │ column = 4 }                                                                 │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ lines</td><td><div class="dni-plaintext"><pre>[ &quot;ab&quot;               │
> │ ]</pre></div></td></tr><tr><td>position</td><td><details                     │
> │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line =     │
> │ 0<br />  column = 4                                                          │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ line</td><td><div class="dni-plaintext"><pre>0                               │
> │ </pre></div></td></tr><tr><td>column</td><td><div                            │
> │ class="dni-plaintext"><pre>4                                                 │
> │ </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></ta │
> │ ble></div></details></td></tr></tbody></table></div></details></td></tr><tr> │
> │ <td>IsSuccess</td><td><div class="dni-plaintext"><pre>true                   │
> │ </pre></div></td></tr><tr><td>IsFailure</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr></tbody></table></div></details><style>                │
> │ .dni-code-hint {                                                             │
> │     font-style: italic;                                                      │
> │     overflow: hidden;                                                        │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview {                                                              │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview td {                                                           │
> │     vertical-align: top;                                                     │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ details.dni-treeview {                                                       │
> │     padding-left: 1em;                                                       │
> │ }                                                                            │
> │ table td {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ table tr {                                                                   │
> │     vertical-align: top;                                                     │
> │     margin: 0em 0px;                                                         │
> │ }                                                                            │
> │ table tr td pre                                                              │
> │ {                                                                            │
> │     vertical-align: top !important;                                          │
> │     margin: 0em 0px !important;                                              │
> │ }                                                                            │
> │ table th {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ </style>                                                                     │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ╭─[ 52.26ms - stdout ]─────────────────────────────────────────────────────────╮
> │ JString "ab"                                                                 │
> │ JString "ab"                                                                 │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jString "\"ab\\tde\""
> |> parserEqual (Success (JString "ab\tde"))
> 
> ╭─[ 43.34ms - return value ]───────────────────────────────────────────────────╮
> │ <details open="open" class="dni-treeview"><summary><span                     │
> │ class="dni-code-hint"><code>Success (JString &quot;ab	de&quot;, { lines = [    │
> │ |&quot;&quot;ab\tde&quot;&quot;|]<br />                            position  │
> │ = { line = 0<br />                                         column = 8 }      │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item</td><td><details class="dni-treeview"><summary><span                   │
> │ class="dni-code-hint"><code>(JString &quot;ab	de&quot;, { lines = [            │
> │ |&quot;&quot;ab\tde&quot;&quot;|]<br />  position = { line = 0<br />         │
> │ column = 8 }                                                                 │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item1</td><td><details class="dni-treeview"><summary><span                  │
> │ class="dni-code-hint"><code>JString &quot;ab	                                  │
> │ de&quot;</code></span></summary><div><table><thead><tr></tr></thead><tbody>< │
> │ tr><td>Item</td><td><div class="dni-plaintext"><pre>&quot;ab	de&quot;          │
> │ </pre></div></td></tr><tr><td>IsJString</td><td><div                         │
> │ class="dni-plaintext"><pre>true                                              │
> │ </pre></div></td></tr><tr><td>IsJNumber</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJBool</td><td><div                           │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJNull</td><td><div                           │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJObject</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJArray</td><td><div                          │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item │
> │ 2...dni-code-hint"><code>{ lines = [|&quot;&quot;ab\tde&quot;&quot;|]<br />  │
> │ position = { line = 0<br />               column = 8 }                       │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ lines</td><td><div class="dni-plaintext"><pre>[ &quot;ab\tde&quot;           │
> │ ]</pre></div></td></tr><tr><td>position</td><td><details                     │
> │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line =     │
> │ 0<br />  column = 8                                                          │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ line</td><td><div class="dni-plaintext"><pre>0                               │
> │ </pre></div></td></tr><tr><td>column</td><td><div                            │
> │ class="dni-plaintext"><pre>8                                                 │
> │ </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></ta │
> │ ble></div></details></td></tr></tbody></table></div></details></td></tr><tr> │
> │ <td>IsSuccess</td><td><div class="dni-plaintext"><pre>true                   │
> │ </pre></div></td></tr><tr><td>IsFailure</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr></tbody></table></div></details><style>                │
> │ .dni-code-hint {                                                             │
> │     font-style: italic;                                                      │
> │     overflow: hidden;                                                        │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview {                                                              │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview td {                                                           │
> │     vertical-align: top;                                                     │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ details.dni-treeview {                                                       │
> │     padding-left: 1em;                                                       │
> │ }                                                                            │
> │ table td {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ table tr {                                                                   │
> │     vertical-align: top;                                                     │
> │     margin: 0em 0px;                                                         │
> │ }                                                                            │
> │ table tr td pre                                                              │
> │ {                                                                            │
> │     vertical-align: top !important;                                          │
> │     margin: 0em 0px !important;                                              │
> │ }                                                                            │
> │ table th {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ </style>                                                                     │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ╭─[ 48.95ms - stdout ]─────────────────────────────────────────────────────────╮
> │ JString "ab	de"                                                                │
> │ JString "ab	de"                                                                │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jString "\"ab\\u263Ade\""
> |> parserEqual (Success (JString "ab☺de"))
> 
> ╭─[ 44.96ms - return value ]───────────────────────────────────────────────────╮
> │ <details open="open" class="dni-treeview"><summary><span                     │
> │ class="dni-code-hint"><code>Success (JString &quot;ab☺de&quot;, { lines = [  │
> │ |&quot;&quot;ab\u263Ade&quot;&quot;|]<br />                                  │
> │ position = { line = 0<br />                                         column = │
> │ 12 }                                                                         │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item</td><td><details class="dni-treeview"><summary><span                   │
> │ class="dni-code-hint"><code>(JString &quot;ab☺de&quot;, { lines = [          │
> │ |&quot;&quot;ab\u263Ade&quot;&quot;|]<br />  position = { line = 0<br />     │
> │ column = 12 }                                                                │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item1</td><td><details class="dni-treeview"><summary><span                  │
> │ class="dni-code-hint"><code>JString                                          │
> │ &quot;ab☺de&quot;</code></span></summary><div><table><thead><tr></tr></thead │
> │ ><tbody><tr><td>Item</td><td><div                                            │
> │ class="dni-plaintext"><pre>&quot;ab☺de&quot;                                 │
> │ </pre></div></td></tr><tr><td>IsJString</td><td><div                         │
> │ class="dni-plaintext"><pre>true                                              │
> │ </pre></div></td></tr><tr><td>IsJNumber</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJBool</td><td><div                           │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJNull</td><td><div                           │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJObject</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJArray</td><td><div                          │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr></tbody></table></div></details></td></tr><tr...nt"><c │
> │ ode>{ lines = [|&quot;&quot;ab\u263Ade&quot;&quot;|]<br />  position = {     │
> │ line = 0<br />               column = 12 }                                   │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ lines</td><td><div class="dni-plaintext"><pre>[ &quot;ab\u263Ade&quot;       │
> │ ]</pre></div></td></tr><tr><td>position</td><td><details                     │
> │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line =     │
> │ 0<br />  column = 12                                                         │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ line</td><td><div class="dni-plaintext"><pre>0                               │
> │ </pre></div></td></tr><tr><td>column</td><td><div                            │
> │ class="dni-plaintext"><pre>12                                                │
> │ </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></ta │
> │ ble></div></details></td></tr></tbody></table></div></details></td></tr><tr> │
> │ <td>IsSuccess</td><td><div class="dni-plaintext"><pre>true                   │
> │ </pre></div></td></tr><tr><td>IsFailure</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr></tbody></table></div></details><style>                │
> │ .dni-code-hint {                                                             │
> │     font-style: italic;                                                      │
> │     overflow: hidden;                                                        │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview {                                                              │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview td {                                                           │
> │     vertical-align: top;                                                     │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ details.dni-treeview {                                                       │
> │     padding-left: 1em;                                                       │
> │ }                                                                            │
> │ table td {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ table tr {                                                                   │
> │     vertical-align: top;                                                     │
> │     margin: 0em 0px;                                                         │
> │ }                                                                            │
> │ table tr td pre                                                              │
> │ {                                                                            │
> │     vertical-align: top !important;                                          │
> │     margin: 0em 0px !important;                                              │
> │ }                                                                            │
> │ table th {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ </style>                                                                     │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ╭─[ 50.43ms - stdout ]─────────────────────────────────────────────────────────╮
> │ JString "ab☺de"                                                              │
> │ JString "ab☺de"                                                              │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ### jNumber                                                                  │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let jNumber =
>     let optSign = opt (pchar '-')
> 
>     let zero = pstring "0"
> 
>     let digitOneNine =
>         satisfy (fun ch -> Char.IsDigit ch && ch <> '0') "1-9"
> 
>     let digit =
>         satisfy Char.IsDigit "digit"
> 
>     let point = pchar '.'
> 
>     let e = pchar 'e' <|> pchar 'E'
> 
>     let optPlusMinus = opt (pchar '-' <|> pchar '+')
> 
>     let nonZeroInt =
>         digitOneNine .>>. manyChars digit
>         |>> fun (first, rest) -> string first + rest
> 
>     let intPart = zero <|> nonZeroInt
> 
>     let fractionPart = point >>. manyChars1 digit
> 
>     let exponentPart = e >>. optPlusMinus .>>. manyChars1 digit
> 
>     let inline (|>?) opt f =
>         match opt with
>         | None -> ""
>         | Some x -> f x
> 
>     let inline convertToJNumber (((optSign, intPart), fractionPart), expPart) =
>         let signStr =
>             optSign
>             |>? string
> 
>         let fractionPartStr =
>             fractionPart
>             |>? (fun digits -> "." + digits)
> 
>         let expPartStr =
>             expPart
>             |>? fun (optSign, digits) ->
>                 let sign = optSign |>? string
>                 "e" + sign + digits
> 
>         (signStr + intPart + fractionPartStr + expPartStr)
>         |> float
>         |> JNumber
> 
>     optSign .>>. intPart .>>. opt fractionPart .>>. opt exponentPart
>     |>> convertToJNumber
>     <?> "number"
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> jValueRef <|
>     choice
>         [[
>             jNull
>             jBool
>             jString
>             jNumber
>         ]]
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jNumber "123"
> |> parserEqual (Success (JNumber 123.0))
> 
> ╭─[ 64.54ms - return value ]───────────────────────────────────────────────────╮
> │ <details open="open" class="dni-treeview"><summary><span                     │
> │ class="dni-code-hint"><code>Success (JNumber 123.0, { lines = [              │
> │ |&quot;123&quot;|]<br />                          position = { line = 0<br   │
> │ />                                       column = 3 }                        │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item</td><td><details class="dni-treeview"><summary><span                   │
> │ class="dni-code-hint"><code>(JNumber 123.0, { lines = [|&quot;123&quot;|]<br │
> │ />  position = { line = 0<br />               column = 3 }                   │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item1</td><td><details class="dni-treeview"><summary><span                  │
> │ class="dni-code-hint"><code>JNumber                                          │
> │ 123.0</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr> │
> │ <td>Item</td><td><div class="dni-plaintext"><pre>123.0                       │
> │ </pre></div></td></tr><tr><td>IsJString</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJNumber</td><td><div                         │
> │ class="dni-plaintext"><pre>true                                              │
> │ </pre></div></td></tr><tr><td>IsJBool</td><td><div                           │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJNull</td><td><div                           │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJObject</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJArray</td><td><div                          │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item │
> │ 2</td><td><details class="dni-treeview"><summary><span                       │
> │ class="dni-code-hint"><code>{ lines = [|&quot;123&quot;|]<br />  position =  │
> │ { line = 0<br />               column = 3 }                                  │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ lines</td><td><div class="dni-plaintext"><pre>[ 123                          │
> │ ]</pre></div></td></tr><tr><td>position</td><td><details                     │
> │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line =     │
> │ 0<br />  column = 3                                                          │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ line</td><td><div class="dni-plaintext"><pre>0                               │
> │ </pre></div></td></tr><tr><td>column</td><td><div                            │
> │ class="dni-plaintext"><pre>3                                                 │
> │ </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></ta │
> │ ble></div></details></td></tr></tbody></table></div></details></td></tr><tr> │
> │ <td>IsSuccess</td><td><div class="dni-plaintext"><pre>true                   │
> │ </pre></div></td></tr><tr><td>IsFailure</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr></tbody></table></div></details><style>                │
> │ .dni-code-hint {                                                             │
> │     font-style: italic;                                                      │
> │     overflow: hidden;                                                        │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview {                                                              │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview td {                                                           │
> │     vertical-align: top;                                                     │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ details.dni-treeview {                                                       │
> │     padding-left: 1em;                                                       │
> │ }                                                                            │
> │ table td {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ table tr {                                                                   │
> │     vertical-align: top;                                                     │
> │     margin: 0em 0px;                                                         │
> │ }                                                                            │
> │ table tr td pre                                                              │
> │ {                                                                            │
> │     vertical-align: top !important;                                          │
> │     margin: 0em 0px !important;                                              │
> │ }                                                                            │
> │ table th {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ </style>                                                                     │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ╭─[ 69.71ms - stdout ]─────────────────────────────────────────────────────────╮
> │ JNumber 123.0                                                                │
> │ JNumber 123.0                                                                │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jNumber "-123"
> |> parserEqual (Success (JNumber -123.0))
> 
> ╭─[ 44.99ms - return value ]───────────────────────────────────────────────────╮
> │ <details open="open" class="dni-treeview"><summary><span                     │
> │ class="dni-code-hint"><code>Success (JNumber -123.0, { lines = [             │
> │ |&quot;-123&quot;|]<br />                           position = { line = 0<br │
> │ />                                        column = 4 }                       │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item</td><td><details class="dni-treeview"><summary><span                   │
> │ class="dni-code-hint"><code>(JNumber -123.0, { lines = [                     │
> │ |&quot;-123&quot;|]<br />  position = { line = 0<br />               column  │
> │ = 4 }                                                                        │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item1</td><td><details class="dni-treeview"><summary><span                  │
> │ class="dni-code-hint"><code>JNumber                                          │
> │ -123.0</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr │
> │ ><td>Item</td><td><div class="dni-plaintext"><pre>-123.0                     │
> │ </pre></div></td></tr><tr><td>IsJString</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJNumber</td><td><div                         │
> │ class="dni-plaintext"><pre>true                                              │
> │ </pre></div></td></tr><tr><td>IsJBool</td><td><div                           │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJNull</td><td><div                           │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJObject</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJArray</td><td><div                          │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item │
> │ 2</td><td><details class="dni-treeview"><summary><span                       │
> │ class="dni-code-hint"><code>{ lines = [|&quot;-123&quot;|]<br />  position = │
> │ { line = 0<br />               column = 4 }                                  │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ lines</td><td><div class="dni-plaintext"><pre>[ -123                         │
> │ ]</pre></div></td></tr><tr><td>position</td><td><details                     │
> │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line =     │
> │ 0<br />  column = 4                                                          │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ line</td><td><div class="dni-plaintext"><pre>0                               │
> │ </pre></div></td></tr><tr><td>column</td><td><div                            │
> │ class="dni-plaintext"><pre>4                                                 │
> │ </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></ta │
> │ ble></div></details></td></tr></tbody></table></div></details></td></tr><tr> │
> │ <td>IsSuccess</td><td><div class="dni-plaintext"><pre>true                   │
> │ </pre></div></td></tr><tr><td>IsFailure</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr></tbody></table></div></details><style>                │
> │ .dni-code-hint {                                                             │
> │     font-style: italic;                                                      │
> │     overflow: hidden;                                                        │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview {                                                              │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview td {                                                           │
> │     vertical-align: top;                                                     │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ details.dni-treeview {                                                       │
> │     padding-left: 1em;                                                       │
> │ }                                                                            │
> │ table td {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ table tr {                                                                   │
> │     vertical-align: top;                                                     │
> │     margin: 0em 0px;                                                         │
> │ }                                                                            │
> │ table tr td pre                                                              │
> │ {                                                                            │
> │     vertical-align: top !important;                                          │
> │     margin: 0em 0px !important;                                              │
> │ }                                                                            │
> │ table th {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ </style>                                                                     │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ╭─[ 50.73ms - stdout ]─────────────────────────────────────────────────────────╮
> │ JNumber -123.0                                                               │
> │ JNumber -123.0                                                               │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jNumber "123.4"
> |> parserEqual (Success (JNumber 123.4))
> 
> ╭─[ 51.88ms - return value ]───────────────────────────────────────────────────╮
> │ <details open="open" class="dni-treeview"><summary><span                     │
> │ class="dni-code-hint"><code>Success (JNumber 123.4, { lines = [              │
> │ |&quot;123.4&quot;|]<br />                          position = { line = 0<br │
> │ />                                       column = 5 }                        │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item</td><td><details class="dni-treeview"><summary><span                   │
> │ class="dni-code-hint"><code>(JNumber 123.4, { lines = [                      │
> │ |&quot;123.4&quot;|]<br />  position = { line = 0<br />               column │
> │ = 5 }                                                                        │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item1</td><td><details class="dni-treeview"><summary><span                  │
> │ class="dni-code-hint"><code>JNumber                                          │
> │ 123.4</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr> │
> │ <td>Item</td><td><div class="dni-plaintext"><pre>123.4                       │
> │ </pre></div></td></tr><tr><td>IsJString</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJNumber</td><td><div                         │
> │ class="dni-plaintext"><pre>true                                              │
> │ </pre></div></td></tr><tr><td>IsJBool</td><td><div                           │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJNull</td><td><div                           │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJObject</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJArray</td><td><div                          │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item │
> │ 2</td><td><details class="dni-treeview"><summary><span                       │
> │ class="dni-code-hint"><code>{ lines = [|&quot;123.4&quot;|]<br />  position  │
> │ = { line = 0<br />               column = 5 }                                │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ lines</td><td><div class="dni-plaintext"><pre>[ 123.4                        │
> │ ]</pre></div></td></tr><tr><td>position</td><td><details                     │
> │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line =     │
> │ 0<br />  column = 5                                                          │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ line</td><td><div class="dni-plaintext"><pre>0                               │
> │ </pre></div></td></tr><tr><td>column</td><td><div                            │
> │ class="dni-plaintext"><pre>5                                                 │
> │ </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></ta │
> │ ble></div></details></td></tr></tbody></table></div></details></td></tr><tr> │
> │ <td>IsSuccess</td><td><div class="dni-plaintext"><pre>true                   │
> │ </pre></div></td></tr><tr><td>IsFailure</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr></tbody></table></div></details><style>                │
> │ .dni-code-hint {                                                             │
> │     font-style: italic;                                                      │
> │     overflow: hidden;                                                        │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview {                                                              │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview td {                                                           │
> │     vertical-align: top;                                                     │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ details.dni-treeview {                                                       │
> │     padding-left: 1em;                                                       │
> │ }                                                                            │
> │ table td {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ table tr {                                                                   │
> │     vertical-align: top;                                                     │
> │     margin: 0em 0px;                                                         │
> │ }                                                                            │
> │ table tr td pre                                                              │
> │ {                                                                            │
> │     vertical-align: top !important;                                          │
> │     margin: 0em 0px !important;                                              │
> │ }                                                                            │
> │ table th {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ </style>                                                                     │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ╭─[ 57.07ms - stdout ]─────────────────────────────────────────────────────────╮
> │ JNumber 123.4                                                                │
> │ JNumber 123.4                                                                │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jNumber "-123."
> |> parserEqual (Success (JNumber -123.0))
> 
> ╭─[ 41.47ms - return value ]───────────────────────────────────────────────────╮
> │ <details open="open" class="dni-treeview"><summary><span                     │
> │ class="dni-code-hint"><code>Success (JNumber -123.0, { lines = [             │
> │ |&quot;-123.&quot;|]<br />                           position = { line =     │
> │ 0<br />                                        column = 4 }                  │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item</td><td><details class="dni-treeview"><summary><span                   │
> │ class="dni-code-hint"><code>(JNumber -123.0, { lines = [                     │
> │ |&quot;-123.&quot;|]<br />  position = { line = 0<br />               column │
> │ = 4 }                                                                        │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item1</td><td><details class="dni-treeview"><summary><span                  │
> │ class="dni-code-hint"><code>JNumber                                          │
> │ -123.0</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr │
> │ ><td>Item</td><td><div class="dni-plaintext"><pre>-123.0                     │
> │ </pre></div></td></tr><tr><td>IsJString</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJNumber</td><td><div                         │
> │ class="dni-plaintext"><pre>true                                              │
> │ </pre></div></td></tr><tr><td>IsJBool</td><td><div                           │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJNull</td><td><div                           │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJObject</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJArray</td><td><div                          │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item │
> │ 2</td><td><details class="dni-treeview"><summary><span                       │
> │ class="dni-code-hint"><code>{ lines = [|&quot;-123.&quot;|]<br />  position  │
> │ = { line = 0<br />               column = 4 }                                │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ lines</td><td><div class="dni-plaintext"><pre>[ -123.                        │
> │ ]</pre></div></td></tr><tr><td>position</td><td><details                     │
> │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line =     │
> │ 0<br />  column = 4                                                          │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ line</td><td><div class="dni-plaintext"><pre>0                               │
> │ </pre></div></td></tr><tr><td>column</td><td><div                            │
> │ class="dni-plaintext"><pre>4                                                 │
> │ </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></ta │
> │ ble></div></details></td></tr></tbody></table></div></details></td></tr><tr> │
> │ <td>IsSuccess</td><td><div class="dni-plaintext"><pre>true                   │
> │ </pre></div></td></tr><tr><td>IsFailure</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr></tbody></table></div></details><style>                │
> │ .dni-code-hint {                                                             │
> │     font-style: italic;                                                      │
> │     overflow: hidden;                                                        │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview {                                                              │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview td {                                                           │
> │     vertical-align: top;                                                     │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ details.dni-treeview {                                                       │
> │     padding-left: 1em;                                                       │
> │ }                                                                            │
> │ table td {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ table tr {                                                                   │
> │     vertical-align: top;                                                     │
> │     margin: 0em 0px;                                                         │
> │ }                                                                            │
> │ table tr td pre                                                              │
> │ {                                                                            │
> │     vertical-align: top !important;                                          │
> │     margin: 0em 0px !important;                                              │
> │ }                                                                            │
> │ table th {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ </style>                                                                     │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ╭─[ 46.96ms - stdout ]─────────────────────────────────────────────────────────╮
> │ JNumber -123.0                                                               │
> │ JNumber -123.0                                                               │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jNumber "00.1"
> |> parserEqual (Success (JNumber 0.0))
> 
> ╭─[ 36.63ms - return value ]───────────────────────────────────────────────────╮
> │ <details open="open" class="dni-treeview"><summary><span                     │
> │ class="dni-code-hint"><code>Success (JNumber 0.0, { lines = [                │
> │ |&quot;00.1&quot;|]<br />                        position = { line = 0<br /> │
> │ column = 1 }                                                                 │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item</td><td><details class="dni-treeview"><summary><span                   │
> │ class="dni-code-hint"><code>(JNumber 0.0, { lines = [|&quot;00.1&quot;|]<br  │
> │ />  position = { line = 0<br />               column = 1 }                   │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item1</td><td><details class="dni-treeview"><summary><span                  │
> │ class="dni-code-hint"><code>JNumber                                          │
> │ 0.0</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><t │
> │ d>Item</td><td><div class="dni-plaintext"><pre>0.0                           │
> │ </pre></div></td></tr><tr><td>IsJString</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJNumber</td><td><div                         │
> │ class="dni-plaintext"><pre>true                                              │
> │ </pre></div></td></tr><tr><td>IsJBool</td><td><div                           │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJNull</td><td><div                           │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJObject</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJArray</td><td><div                          │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item │
> │ 2</td><td><details class="dni-treeview"><summary><span                       │
> │ class="dni-code-hint"><code>{ lines = [|&quot;00.1&quot;|]<br />  position = │
> │ { line = 0<br />               column = 1 }                                  │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ lines</td><td><div class="dni-plaintext"><pre>[ 00.1                         │
> │ ]</pre></div></td></tr><tr><td>position</td><td><details                     │
> │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line =     │
> │ 0<br />  column = 1                                                          │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ line</td><td><div class="dni-plaintext"><pre>0                               │
> │ </pre></div></td></tr><tr><td>column</td><td><div                            │
> │ class="dni-plaintext"><pre>1                                                 │
> │ </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></ta │
> │ ble></div></details></td></tr></tbody></table></div></details></td></tr><tr> │
> │ <td>IsSuccess</td><td><div class="dni-plaintext"><pre>true                   │
> │ </pre></div></td></tr><tr><td>IsFailure</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr></tbody></table></div></details><style>                │
> │ .dni-code-hint {                                                             │
> │     font-style: italic;                                                      │
> │     overflow: hidden;                                                        │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview {                                                              │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview td {                                                           │
> │     vertical-align: top;                                                     │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ details.dni-treeview {                                                       │
> │     padding-left: 1em;                                                       │
> │ }                                                                            │
> │ table td {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ table tr {                                                                   │
> │     vertical-align: top;                                                     │
> │     margin: 0em 0px;                                                         │
> │ }                                                                            │
> │ table tr td pre                                                              │
> │ {                                                                            │
> │     vertical-align: top !important;                                          │
> │     margin: 0em 0px !important;                                              │
> │ }                                                                            │
> │ table th {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ </style>                                                                     │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ╭─[ 41.84ms - stdout ]─────────────────────────────────────────────────────────╮
> │ JNumber 0.0                                                                  │
> │ JNumber 0.0                                                                  │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let jNumber_ = jNumber .>> spaces1
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jNumber_ "123"
> |> parserEqual (Success (JNumber 123.0))
> 
> ╭─[ 49.29ms - return value ]───────────────────────────────────────────────────╮
> │ <details open="open" class="dni-treeview"><summary><span                     │
> │ class="dni-code-hint"><code>Success (JNumber 123.0, { lines = [              │
> │ |&quot;123&quot;|]<br />                          position = { line = 1<br   │
> │ />                                       column = 0 }                        │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item</td><td><details class="dni-treeview"><summary><span                   │
> │ class="dni-code-hint"><code>(JNumber 123.0, { lines = [|&quot;123&quot;|]<br │
> │ />  position = { line = 1<br />               column = 0 }                   │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item1</td><td><details class="dni-treeview"><summary><span                  │
> │ class="dni-code-hint"><code>JNumber                                          │
> │ 123.0</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr> │
> │ <td>Item</td><td><div class="dni-plaintext"><pre>123.0                       │
> │ </pre></div></td></tr><tr><td>IsJString</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJNumber</td><td><div                         │
> │ class="dni-plaintext"><pre>true                                              │
> │ </pre></div></td></tr><tr><td>IsJBool</td><td><div                           │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJNull</td><td><div                           │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJObject</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJArray</td><td><div                          │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item │
> │ 2</td><td><details class="dni-treeview"><summary><span                       │
> │ class="dni-code-hint"><code>{ lines = [|&quot;123&quot;|]<br />  position =  │
> │ { line = 1<br />               column = 0 }                                  │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ lines</td><td><div class="dni-plaintext"><pre>[ 123                          │
> │ ]</pre></div></td></tr><tr><td>position</td><td><details                     │
> │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line =     │
> │ 1<br />  column = 0                                                          │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ line</td><td><div class="dni-plaintext"><pre>1                               │
> │ </pre></div></td></tr><tr><td>column</td><td><div                            │
> │ class="dni-plaintext"><pre>0                                                 │
> │ </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></ta │
> │ ble></div></details></td></tr></tbody></table></div></details></td></tr><tr> │
> │ <td>IsSuccess</td><td><div class="dni-plaintext"><pre>true                   │
> │ </pre></div></td></tr><tr><td>IsFailure</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr></tbody></table></div></details><style>                │
> │ .dni-code-hint {                                                             │
> │     font-style: italic;                                                      │
> │     overflow: hidden;                                                        │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview {                                                              │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview td {                                                           │
> │     vertical-align: top;                                                     │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ details.dni-treeview {                                                       │
> │     padding-left: 1em;                                                       │
> │ }                                                                            │
> │ table td {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ table tr {                                                                   │
> │     vertical-align: top;                                                     │
> │     margin: 0em 0px;                                                         │
> │ }                                                                            │
> │ table tr td pre                                                              │
> │ {                                                                            │
> │     vertical-align: top !important;                                          │
> │     margin: 0em 0px !important;                                              │
> │ }                                                                            │
> │ table th {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ </style>                                                                     │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ╭─[ 54.67ms - stdout ]─────────────────────────────────────────────────────────╮
> │ JNumber 123.0                                                                │
> │ JNumber 123.0                                                                │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jNumber_ "-123"
> |> parserEqual (Success (JNumber -123.0))
> 
> ╭─[ 45.44ms - return value ]───────────────────────────────────────────────────╮
> │ <details open="open" class="dni-treeview"><summary><span                     │
> │ class="dni-code-hint"><code>Success (JNumber -123.0, { lines = [             │
> │ |&quot;-123&quot;|]<br />                           position = { line = 1<br │
> │ />                                        column = 0 }                       │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item</td><td><details class="dni-treeview"><summary><span                   │
> │ class="dni-code-hint"><code>(JNumber -123.0, { lines = [                     │
> │ |&quot;-123&quot;|]<br />  position = { line = 1<br />               column  │
> │ = 0 }                                                                        │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item1</td><td><details class="dni-treeview"><summary><span                  │
> │ class="dni-code-hint"><code>JNumber                                          │
> │ -123.0</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr │
> │ ><td>Item</td><td><div class="dni-plaintext"><pre>-123.0                     │
> │ </pre></div></td></tr><tr><td>IsJString</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJNumber</td><td><div                         │
> │ class="dni-plaintext"><pre>true                                              │
> │ </pre></div></td></tr><tr><td>IsJBool</td><td><div                           │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJNull</td><td><div                           │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJObject</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJArray</td><td><div                          │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item │
> │ 2</td><td><details class="dni-treeview"><summary><span                       │
> │ class="dni-code-hint"><code>{ lines = [|&quot;-123&quot;|]<br />  position = │
> │ { line = 1<br />               column = 0 }                                  │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ lines</td><td><div class="dni-plaintext"><pre>[ -123                         │
> │ ]</pre></div></td></tr><tr><td>position</td><td><details                     │
> │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line =     │
> │ 1<br />  column = 0                                                          │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ line</td><td><div class="dni-plaintext"><pre>1                               │
> │ </pre></div></td></tr><tr><td>column</td><td><div                            │
> │ class="dni-plaintext"><pre>0                                                 │
> │ </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></ta │
> │ ble></div></details></td></tr></tbody></table></div></details></td></tr><tr> │
> │ <td>IsSuccess</td><td><div class="dni-plaintext"><pre>true                   │
> │ </pre></div></td></tr><tr><td>IsFailure</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr></tbody></table></div></details><style>                │
> │ .dni-code-hint {                                                             │
> │     font-style: italic;                                                      │
> │     overflow: hidden;                                                        │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview {                                                              │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview td {                                                           │
> │     vertical-align: top;                                                     │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ details.dni-treeview {                                                       │
> │     padding-left: 1em;                                                       │
> │ }                                                                            │
> │ table td {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ table tr {                                                                   │
> │     vertical-align: top;                                                     │
> │     margin: 0em 0px;                                                         │
> │ }                                                                            │
> │ table tr td pre                                                              │
> │ {                                                                            │
> │     vertical-align: top !important;                                          │
> │     margin: 0em 0px !important;                                              │
> │ }                                                                            │
> │ table th {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ </style>                                                                     │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ╭─[ 51.19ms - stdout ]─────────────────────────────────────────────────────────╮
> │ JNumber -123.0                                                               │
> │ JNumber -123.0                                                               │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jNumber_ "-123."
> |> parserEqual (
>     Failure (
>         "number andThen many1 whitespace",
>         "Unexpected '.'",
>         { currentLine = "-123."; line = 0; column = 4 }
>     )
> )
> 
> ╭─[ 38.48ms - return value ]───────────────────────────────────────────────────╮
> │ <details open="open" class="dni-treeview"><summary><span                     │
> │ class="dni-code-hint"><code>Failure<br />  (&quot;number andThen many1       │
> │ whitespace&quot;, &quot;Unexpected &#39;.&#39;&quot;, { currentLine =        │
> │ &quot;-123.&quot;<br />                                                      │
> │ line = 0<br />                                                               │
> │ column = 4                                                                   │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item1</td><td><div class="dni-plaintext"><pre>&quot;number andThen many1    │
> │ whitespace&quot;                                                             │
> │ </pre></div></td></tr><tr><td>Item2</td><td><div                             │
> │ class="dni-plaintext"><pre>&quot;Unexpected &#39;.&#39;&quot;                │
> │ </pre></div></td></tr><tr><td>Item3</td><td><details                         │
> │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{            │
> │ currentLine = &quot;-123.&quot;<br />  line = 0<br />  column = 4            │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ currentLine</td><td><div class="dni-plaintext"><pre>&quot;-123.&quot;        │
> │ </pre></div></td></tr><tr><td>line</td><td><div class="dni-plaintext"><pre>0 │
> │ </pre></div></td></tr><tr><td>column</td><td><div                            │
> │ class="dni-plaintext"><pre>4                                                 │
> │ </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>IsSu │
> │ ccess</td><td><div class="dni-plaintext"><pre>false                          │
> │ </pre></div></td></tr><tr><td>IsFailure</td><td><div                         │
> │ class="dni-plaintext"><pre>true                                              │
> │ </pre></div></td></tr></tbody></table></div></details><style>                │
> │ .dni-code-hint {                                                             │
> │     font-style: italic;                                                      │
> │     overflow: hidden;                                                        │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview {                                                              │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview td {                                                           │
> │     vertical-align: top;                                                     │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ details.dni-treeview {                                                       │
> │     padding-left: 1em;                                                       │
> │ }                                                                            │
> │ table td {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ table tr {                                                                   │
> │     vertical-align: top;                                                     │
> │     margin: 0em 0px;                                                         │
> │ }                                                                            │
> │ table tr td pre                                                              │
> │ {                                                                            │
> │     vertical-align: top !important;                                          │
> │     margin: 0em 0px !important;                                              │
> │ }                                                                            │
> │ table th {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ </style>                                                                     │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ╭─[ 42.55ms - stdout ]─────────────────────────────────────────────────────────╮
> │ Line:0 Col:4 Error parsing number andThen many1 whitespace                   │
> │ -123.                                                                        │
> │     ^Unexpected '.'                                                          │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jNumber_ "123.4"
> |> parserEqual (Success (JNumber 123.4))
> 
> ╭─[ 40.64ms - return value ]───────────────────────────────────────────────────╮
> │ <details open="open" class="dni-treeview"><summary><span                     │
> │ class="dni-code-hint"><code>Success (JNumber 123.4, { lines = [              │
> │ |&quot;123.4&quot;|]<br />                          position = { line = 1<br │
> │ />                                       column = 0 }                        │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item</td><td><details class="dni-treeview"><summary><span                   │
> │ class="dni-code-hint"><code>(JNumber 123.4, { lines = [                      │
> │ |&quot;123.4&quot;|]<br />  position = { line = 1<br />               column │
> │ = 0 }                                                                        │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item1</td><td><details class="dni-treeview"><summary><span                  │
> │ class="dni-code-hint"><code>JNumber                                          │
> │ 123.4</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr> │
> │ <td>Item</td><td><div class="dni-plaintext"><pre>123.4                       │
> │ </pre></div></td></tr><tr><td>IsJString</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJNumber</td><td><div                         │
> │ class="dni-plaintext"><pre>true                                              │
> │ </pre></div></td></tr><tr><td>IsJBool</td><td><div                           │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJNull</td><td><div                           │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJObject</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJArray</td><td><div                          │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item │
> │ 2</td><td><details class="dni-treeview"><summary><span                       │
> │ class="dni-code-hint"><code>{ lines = [|&quot;123.4&quot;|]<br />  position  │
> │ = { line = 1<br />               column = 0 }                                │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ lines</td><td><div class="dni-plaintext"><pre>[ 123.4                        │
> │ ]</pre></div></td></tr><tr><td>position</td><td><details                     │
> │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line =     │
> │ 1<br />  column = 0                                                          │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ line</td><td><div class="dni-plaintext"><pre>1                               │
> │ </pre></div></td></tr><tr><td>column</td><td><div                            │
> │ class="dni-plaintext"><pre>0                                                 │
> │ </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></ta │
> │ ble></div></details></td></tr></tbody></table></div></details></td></tr><tr> │
> │ <td>IsSuccess</td><td><div class="dni-plaintext"><pre>true                   │
> │ </pre></div></td></tr><tr><td>IsFailure</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr></tbody></table></div></details><style>                │
> │ .dni-code-hint {                                                             │
> │     font-style: italic;                                                      │
> │     overflow: hidden;                                                        │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview {                                                              │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview td {                                                           │
> │     vertical-align: top;                                                     │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ details.dni-treeview {                                                       │
> │     padding-left: 1em;                                                       │
> │ }                                                                            │
> │ table td {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ table tr {                                                                   │
> │     vertical-align: top;                                                     │
> │     margin: 0em 0px;                                                         │
> │ }                                                                            │
> │ table tr td pre                                                              │
> │ {                                                                            │
> │     vertical-align: top !important;                                          │
> │     margin: 0em 0px !important;                                              │
> │ }                                                                            │
> │ table th {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ </style>                                                                     │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ╭─[ 46.05ms - stdout ]─────────────────────────────────────────────────────────╮
> │ JNumber 123.4                                                                │
> │ JNumber 123.4                                                                │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jNumber_ "00.4"
> |> parserEqual (
>     Failure (
>         "number andThen many1 whitespace",
>         "Unexpected '0'",
>         { currentLine = "00.4"; line = 0; column = 1 }
>     )
> )
> 
> ╭─[ 39.92ms - return value ]───────────────────────────────────────────────────╮
> │ <details open="open" class="dni-treeview"><summary><span                     │
> │ class="dni-code-hint"><code>Failure<br />  (&quot;number andThen many1       │
> │ whitespace&quot;, &quot;Unexpected &#39;0&#39;&quot;, { currentLine =        │
> │ &quot;00.4&quot;<br />                                                       │
> │ line = 0<br />                                                               │
> │ column = 1                                                                   │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item1</td><td><div class="dni-plaintext"><pre>&quot;number andThen many1    │
> │ whitespace&quot;                                                             │
> │ </pre></div></td></tr><tr><td>Item2</td><td><div                             │
> │ class="dni-plaintext"><pre>&quot;Unexpected &#39;0&#39;&quot;                │
> │ </pre></div></td></tr><tr><td>Item3</td><td><details                         │
> │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{            │
> │ currentLine = &quot;00.4&quot;<br />  line = 0<br />  column = 1             │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ currentLine</td><td><div class="dni-plaintext"><pre>&quot;00.4&quot;         │
> │ </pre></div></td></tr><tr><td>line</td><td><div class="dni-plaintext"><pre>0 │
> │ </pre></div></td></tr><tr><td>column</td><td><div                            │
> │ class="dni-plaintext"><pre>1                                                 │
> │ </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>IsSu │
> │ ccess</td><td><div class="dni-plaintext"><pre>false                          │
> │ </pre></div></td></tr><tr><td>IsFailure</td><td><div                         │
> │ class="dni-plaintext"><pre>true                                              │
> │ </pre></div></td></tr></tbody></table></div></details><style>                │
> │ .dni-code-hint {                                                             │
> │     font-style: italic;                                                      │
> │     overflow: hidden;                                                        │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview {                                                              │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview td {                                                           │
> │     vertical-align: top;                                                     │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ details.dni-treeview {                                                       │
> │     padding-left: 1em;                                                       │
> │ }                                                                            │
> │ table td {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ table tr {                                                                   │
> │     vertical-align: top;                                                     │
> │     margin: 0em 0px;                                                         │
> │ }                                                                            │
> │ table tr td pre                                                              │
> │ {                                                                            │
> │     vertical-align: top !important;                                          │
> │     margin: 0em 0px !important;                                              │
> │ }                                                                            │
> │ table th {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ </style>                                                                     │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ╭─[ 43.80ms - stdout ]─────────────────────────────────────────────────────────╮
> │ Line:0 Col:1 Error parsing number andThen many1 whitespace                   │
> │ 00.4                                                                         │
> │  ^Unexpected '0'                                                             │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jNumber_ "123e4"
> |> parserEqual (Success (JNumber 1230000.0))
> 
> ╭─[ 46.72ms - return value ]───────────────────────────────────────────────────╮
> │ <details open="open" class="dni-treeview"><summary><span                     │
> │ class="dni-code-hint"><code>Success (JNumber 1230000.0, { lines = [          │
> │ |&quot;123e4&quot;|]<br />                              position = { line =  │
> │ 1<br />                                           column = 0 }               │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item</td><td><details class="dni-treeview"><summary><span                   │
> │ class="dni-code-hint"><code>(JNumber 1230000.0, { lines = [                  │
> │ |&quot;123e4&quot;|]<br />  position = { line = 1<br />               column │
> │ = 0 }                                                                        │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item1</td><td><details class="dni-treeview"><summary><span                  │
> │ class="dni-code-hint"><code>JNumber                                          │
> │ 1230000.0</code></span></summary><div><table><thead><tr></tr></thead><tbody> │
> │ <tr><td>Item</td><td><div class="dni-plaintext"><pre>1230000.0               │
> │ </pre></div></td></tr><tr><td>IsJString</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJNumber</td><td><div                         │
> │ class="dni-plaintext"><pre>true                                              │
> │ </pre></div></td></tr><tr><td>IsJBool</td><td><div                           │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJNull</td><td><div                           │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJObject</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJArray</td><td><div                          │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item │
> │ 2</td><td><details class="dni-treeview"><summary><span                       │
> │ class="dni-code-hint"><code>{ lines = [|&quot;123e4&quot;|]<br />  position  │
> │ = { line = 1<br />               column = 0 }                                │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ lines</td><td><div class="dni-plaintext"><pre>[ 123e4                        │
> │ ]</pre></div></td></tr><tr><td>position</td><td><details                     │
> │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line =     │
> │ 1<br />  column = 0                                                          │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ line</td><td><div class="dni-plaintext"><pre>1                               │
> │ </pre></div></td></tr><tr><td>column</td><td><div                            │
> │ class="dni-plaintext"><pre>0                                                 │
> │ </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></ta │
> │ ble></div></details></td></tr></tbody></table></div></details></td></tr><tr> │
> │ <td>IsSuccess</td><td><div class="dni-plaintext"><pre>true                   │
> │ </pre></div></td></tr><tr><td>IsFailure</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr></tbody></table></div></details><style>                │
> │ .dni-code-hint {                                                             │
> │     font-style: italic;                                                      │
> │     overflow: hidden;                                                        │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview {                                                              │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview td {                                                           │
> │     vertical-align: top;                                                     │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ details.dni-treeview {                                                       │
> │     padding-left: 1em;                                                       │
> │ }                                                                            │
> │ table td {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ table tr {                                                                   │
> │     vertical-align: top;                                                     │
> │     margin: 0em 0px;                                                         │
> │ }                                                                            │
> │ table tr td pre                                                              │
> │ {                                                                            │
> │     vertical-align: top !important;                                          │
> │     margin: 0em 0px !important;                                              │
> │ }                                                                            │
> │ table th {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ </style>                                                                     │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ╭─[ 51.94ms - stdout ]─────────────────────────────────────────────────────────╮
> │ JNumber 1230000.0                                                            │
> │ JNumber 1230000.0                                                            │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jNumber_ "123.4e5"
> |> parserEqual (Success (JNumber 12340000.0))
> 
> ╭─[ 41.46ms - return value ]───────────────────────────────────────────────────╮
> │ <details open="open" class="dni-treeview"><summary><span                     │
> │ class="dni-code-hint"><code>Success (JNumber 12340000.0, { lines = [         │
> │ |&quot;123.4e5&quot;|]<br />                               position = { line │
> │ = 1<br />                                            column = 0 }            │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item</td><td><details class="dni-treeview"><summary><span                   │
> │ class="dni-code-hint"><code>(JNumber 12340000.0, { lines = [                 │
> │ |&quot;123.4e5&quot;|]<br />  position = { line = 1<br />                    │
> │ column = 0 }                                                                 │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item1</td><td><details class="dni-treeview"><summary><span                  │
> │ class="dni-code-hint"><code>JNumber                                          │
> │ 12340000.0</code></span></summary><div><table><thead><tr></tr></thead><tbody │
> │ ><tr><td>Item</td><td><div class="dni-plaintext"><pre>12340000.0             │
> │ </pre></div></td></tr><tr><td>IsJString</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJNumber</td><td><div                         │
> │ class="dni-plaintext"><pre>true                                              │
> │ </pre></div></td></tr><tr><td>IsJBool</td><td><div                           │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJNull</td><td><div                           │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJObject</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJArray</td><td><div                          │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item │
> │ 2</td><td><details class="dni-treeview"><summary><span                       │
> │ class="dni-code-hint"><code>{ lines = [|&quot;123.4e5&quot;|]<br />          │
> │ position = { line = 1<br />               column = 0 }                       │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ lines</td><td><div class="dni-plaintext"><pre>[ 123.4e5                      │
> │ ]</pre></div></td></tr><tr><td>position</td><td><details                     │
> │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line =     │
> │ 1<br />  column = 0                                                          │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ line</td><td><div class="dni-plaintext"><pre>1                               │
> │ </pre></div></td></tr><tr><td>column</td><td><div                            │
> │ class="dni-plaintext"><pre>0                                                 │
> │ </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></ta │
> │ ble></div></details></td></tr></tbody></table></div></details></td></tr><tr> │
> │ <td>IsSuccess</td><td><div class="dni-plaintext"><pre>true                   │
> │ </pre></div></td></tr><tr><td>IsFailure</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr></tbody></table></div></details><style>                │
> │ .dni-code-hint {                                                             │
> │     font-style: italic;                                                      │
> │     overflow: hidden;                                                        │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview {                                                              │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview td {                                                           │
> │     vertical-align: top;                                                     │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ details.dni-treeview {                                                       │
> │     padding-left: 1em;                                                       │
> │ }                                                                            │
> │ table td {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ table tr {                                                                   │
> │     vertical-align: top;                                                     │
> │     margin: 0em 0px;                                                         │
> │ }                                                                            │
> │ table tr td pre                                                              │
> │ {                                                                            │
> │     vertical-align: top !important;                                          │
> │     margin: 0em 0px !important;                                              │
> │ }                                                                            │
> │ table th {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ </style>                                                                     │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ╭─[ 46.80ms - stdout ]─────────────────────────────────────────────────────────╮
> │ JNumber 12340000.0                                                           │
> │ JNumber 12340000.0                                                           │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jNumber_ "123.4e-5"
> |> parserEqual (Success (JNumber 0.001234))
> 
> ╭─[ 40.37ms - return value ]───────────────────────────────────────────────────╮
> │ <details open="open" class="dni-treeview"><summary><span                     │
> │ class="dni-code-hint"><code>Success (JNumber 0.001234, { lines = [           │
> │ |&quot;123.4e-5&quot;|]<br />                             position = { line  │
> │ = 1<br />                                          column = 0 }              │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item</td><td><details class="dni-treeview"><summary><span                   │
> │ class="dni-code-hint"><code>(JNumber 0.001234, { lines = [                   │
> │ |&quot;123.4e-5&quot;|]<br />  position = { line = 1<br />                   │
> │ column = 0 }                                                                 │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item1</td><td><details class="dni-treeview"><summary><span                  │
> │ class="dni-code-hint"><code>JNumber                                          │
> │ 0.001234</code></span></summary><div><table><thead><tr></tr></thead><tbody>< │
> │ tr><td>Item</td><td><div class="dni-plaintext"><pre>0.001234                 │
> │ </pre></div></td></tr><tr><td>IsJString</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJNumber</td><td><div                         │
> │ class="dni-plaintext"><pre>true                                              │
> │ </pre></div></td></tr><tr><td>IsJBool</td><td><div                           │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJNull</td><td><div                           │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJObject</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJArray</td><td><div                          │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item │
> │ 2</td><td><details class="dni-treeview"><summary><span                       │
> │ class="dni-code-hint"><code>{ lines = [|&quot;123.4e-5&quot;|]<br />         │
> │ position = { line = 1<br />               column = 0 }                       │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ lines</td><td><div class="dni-plaintext"><pre>[ 123.4e-5                     │
> │ ]</pre></div></td></tr><tr><td>position</td><td><details                     │
> │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line =     │
> │ 1<br />  column = 0                                                          │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ line</td><td><div class="dni-plaintext"><pre>1                               │
> │ </pre></div></td></tr><tr><td>column</td><td><div                            │
> │ class="dni-plaintext"><pre>0                                                 │
> │ </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></ta │
> │ ble></div></details></td></tr></tbody></table></div></details></td></tr><tr> │
> │ <td>IsSuccess</td><td><div class="dni-plaintext"><pre>true                   │
> │ </pre></div></td></tr><tr><td>IsFailure</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr></tbody></table></div></details><style>                │
> │ .dni-code-hint {                                                             │
> │     font-style: italic;                                                      │
> │     overflow: hidden;                                                        │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview {                                                              │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview td {                                                           │
> │     vertical-align: top;                                                     │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ details.dni-treeview {                                                       │
> │     padding-left: 1em;                                                       │
> │ }                                                                            │
> │ table td {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ table tr {                                                                   │
> │     vertical-align: top;                                                     │
> │     margin: 0em 0px;                                                         │
> │ }                                                                            │
> │ table tr td pre                                                              │
> │ {                                                                            │
> │     vertical-align: top !important;                                          │
> │     margin: 0em 0px !important;                                              │
> │ }                                                                            │
> │ table th {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ </style>                                                                     │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ╭─[ 45.75ms - stdout ]─────────────────────────────────────────────────────────╮
> │ JNumber 0.001234                                                             │
> │ JNumber 0.001234                                                             │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ### jArray                                                                   │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let jArray =
>     let left = pchar '[[' .>> spaces
>     let right = pchar ']]' .>> spaces
>     let comma = pchar ',' .>> spaces
>     let value = jValue .>> spaces
> 
>     let values = sepBy value comma
> 
>     between left values right
>     |>> JArray
>     <?> "array"
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> jValueRef <|
>     choice
>         [[
>             jNull
>             jBool
>             jString
>             jNumber
>             jArray
>         ]]
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jArray "[[ 1, 2 ]]"
> |> parserEqual (Success (JArray [[ JNumber 1.0; JNumber 2.0 ]]))
> 
> ╭─[ 96.95ms - return value ]───────────────────────────────────────────────────╮
> │ <details open="open" class="dni-treeview"><summary><span                     │
> │ class="dni-code-hint"><code>Success (JArray [JNumber 1.0; JNumber 2.0], {    │
> │ lines = [|&quot;[ 1, 2 ]&quot;|]<br />                                       │
> │ position = { line = 1<br />                                                  │
> │ column = 0 }                                                                 │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item</td><td><details class="dni-treeview"><summary><span                   │
> │ class="dni-code-hint"><code>(JArray [JNumber 1.0; JNumber 2.0], { lines = [  │
> │ |&quot;[ 1, 2 ]&quot;|]<br />  position = { line = 1<br />                   │
> │ column = 0 }                                                                 │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item1</td><td><details class="dni-treeview"><summary><span                  │
> │ class="dni-code-hint"><code>JArray [JNumber 1.0; JNumber                     │
> │ 2.0]</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr>< │
> │ td>Item</td><td><table><thead><tr><th><i>index</i></th><th>value</th></tr></ │
> │ thead><tbody><tr><td>0</td><td><details class="dni-treeview"><summary><span  │
> │ class="dni-code-hint"><code>JNumber                                          │
> │ 1.0</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><t │
> │ d>Item</td><td><div class="dni-plaintext"><pre>1.0                           │
> │ </pre></div></td></tr><tr><td>IsJString</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJNumber</td><td><div                         │
> │ class="dni-plaintext"><pre>true                                              │
> │ </pre></div></td></tr><tr><td>IsJBool</td><td><div                           │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJNull</td><td>...ummary><span                │
> │ class="dni-code-hint"><code>{ lines = [|&quot;[ 1, 2 ]&quot;|]<br />         │
> │ position = { line = 1<br />               column = 0 }                       │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ lines</td><td><div class="dni-plaintext"><pre>[ [ 1, 2 ]                     │
> │ ]</pre></div></td></tr><tr><td>position</td><td><details                     │
> │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line =     │
> │ 1<br />  column = 0                                                          │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ line</td><td><div class="dni-plaintext"><pre>1                               │
> │ </pre></div></td></tr><tr><td>column</td><td><div                            │
> │ class="dni-plaintext"><pre>0                                                 │
> │ </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></ta │
> │ ble></div></details></td></tr></tbody></table></div></details></td></tr><tr> │
> │ <td>IsSuccess</td><td><div class="dni-plaintext"><pre>true                   │
> │ </pre></div></td></tr><tr><td>IsFailure</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr></tbody></table></div></details><style>                │
> │ .dni-code-hint {                                                             │
> │     font-style: italic;                                                      │
> │     overflow: hidden;                                                        │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview {                                                              │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview td {                                                           │
> │     vertical-align: top;                                                     │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ details.dni-treeview {                                                       │
> │     padding-left: 1em;                                                       │
> │ }                                                                            │
> │ table td {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ table tr {                                                                   │
> │     vertical-align: top;                                                     │
> │     margin: 0em 0px;                                                         │
> │ }                                                                            │
> │ table tr td pre                                                              │
> │ {                                                                            │
> │     vertical-align: top !important;                                          │
> │     margin: 0em 0px !important;                                              │
> │ }                                                                            │
> │ table th {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ </style>                                                                     │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ╭─[ 102.23ms - stdout ]────────────────────────────────────────────────────────╮
> │ JArray [JNumber 1.0; JNumber 2.0]                                            │
> │ JArray [JNumber 1.0; JNumber 2.0]                                            │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jArray "[[ 1, 2, ]]"
> |> parserEqual (
>     Failure (
>         "array",
>         "Unexpected ','",
>         { currentLine = "[[ 1, 2, ]]"; line = 0; column = 6 }
>     )
> )
> 
> ╭─[ 48.25ms - return value ]───────────────────────────────────────────────────╮
> │ <details open="open" class="dni-treeview"><summary><span                     │
> │ class="dni-code-hint"><code>Failure (&quot;array&quot;, &quot;Unexpected     │
> │ &#39;,&#39;&quot;, { currentLine = &quot;[ 1, 2, ]&quot;<br />               │
> │ line = 0<br />                                      column = 6               │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item1</td><td><div class="dni-plaintext"><pre>&quot;array&quot;             │
> │ </pre></div></td></tr><tr><td>Item2</td><td><div                             │
> │ class="dni-plaintext"><pre>&quot;Unexpected &#39;,&#39;&quot;                │
> │ </pre></div></td></tr><tr><td>Item3</td><td><details                         │
> │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{            │
> │ currentLine = &quot;[ 1, 2, ]&quot;<br />  line = 0<br />  column = 6        │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ currentLine</td><td><div class="dni-plaintext"><pre>&quot;[ 1, 2, ]&quot;    │
> │ </pre></div></td></tr><tr><td>line</td><td><div class="dni-plaintext"><pre>0 │
> │ </pre></div></td></tr><tr><td>column</td><td><div                            │
> │ class="dni-plaintext"><pre>6                                                 │
> │ </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>IsSu │
> │ ccess</td><td><div class="dni-plaintext"><pre>false                          │
> │ </pre></div></td></tr><tr><td>IsFailure</td><td><div                         │
> │ class="dni-plaintext"><pre>true                                              │
> │ </pre></div></td></tr></tbody></table></div></details><style>                │
> │ .dni-code-hint {                                                             │
> │     font-style: italic;                                                      │
> │     overflow: hidden;                                                        │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview {                                                              │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview td {                                                           │
> │     vertical-align: top;                                                     │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ details.dni-treeview {                                                       │
> │     padding-left: 1em;                                                       │
> │ }                                                                            │
> │ table td {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ table tr {                                                                   │
> │     vertical-align: top;                                                     │
> │     margin: 0em 0px;                                                         │
> │ }                                                                            │
> │ table tr td pre                                                              │
> │ {                                                                            │
> │     vertical-align: top !important;                                          │
> │     margin: 0em 0px !important;                                              │
> │ }                                                                            │
> │ table th {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ </style>                                                                     │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ╭─[ 52.31ms - stdout ]─────────────────────────────────────────────────────────╮
> │ Line:0 Col:6 Error parsing array                                             │
> │ [ 1, 2, ]                                                                    │
> │       ^Unexpected ','                                                        │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ### jObject                                                                  │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let jObject =
>     let left = spaces >>. pchar '{' .>> spaces
>     let right = pchar '}' .>> spaces
>     let colon = pchar ':' .>> spaces
>     let comma = pchar ',' .>> spaces
>     let key = quotedString .>> spaces
>     let value = jValue .>> spaces
> 
>     let keyValue = (key .>> colon) .>>. value
>     let keyValues = sepBy keyValue comma
> 
>     between left keyValues right
>     |>> Map.ofList
>     |>> JObject
>     <?> "object"
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> jValueRef <|
>     choice
>         [[
>             jNull
>             jBool
>             jString
>             jNumber
>             jArray
>             jObject
>         ]]
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jObject """{ "a":1, "b"  :  2 }"""
> |> parserEqual (
>     Success (
>         JObject (
>             Map.ofList [[
>                 "a", JNumber 1.0
>                 "b", JNumber 2.0
>             ]]
>         )
>     )
> )
> 
> ╭─[ 103.11ms - return value ]──────────────────────────────────────────────────╮
> │ <details open="open" class="dni-treeview"><summary><span                     │
> │ class="dni-code-hint"><code>Success<br />  (JObject (map [(&quot;a&quot;,    │
> │ JNumber 1.0); (&quot;b&quot;, JNumber 2.0)]),<br />   { lines = [|&quot;{    │
> │ &quot;a&quot;:1, &quot;b&quot;  :  2 }&quot;|]<br />     position = { line = │
> │ 1<br />                  column = 0 }                                        │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item</td><td><details class="dni-treeview"><summary><span                   │
> │ class="dni-code-hint"><code>(JObject (map [(&quot;a&quot;, JNumber 1.0);     │
> │ (&quot;b&quot;, JNumber 2.0)]), { lines = [|&quot;{ &quot;a&quot;:1,         │
> │ &quot;b&quot;  :  2 }&quot;|]<br />  position = { line = 1<br />             │
> │ column = 0 }                                                                 │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item1</td><td><details class="dni-treeview"><summary><span                  │
> │ class="dni-code-hint"><code>JObject (map [(&quot;a&quot;, JNumber 1.0);      │
> │ (&quot;b&quot;, JNumber                                                      │
> │ 2.0)])</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr │
> │ ><td>Item</td><td><table><thead><tr><th><i>key</i></th><th>value</th></tr></ │
> │ thead><tbody><tr><td><div class="dni-plaintext"><pre>&quot;a&quot;           │
> │ </pre></div></td><td><details class="dni-treeview"><summary><span            │
> │ class="dni-code-hint"><code>JNumber                                          │
> │ 1.0</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><t │
> │ d>Item</td><td><div class="dni-plaintext"><pre>1.0                           │
> │ </pre></div></td></tr><tr><td>IsJString</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJNumber</...ot;a&quot;:1, &quot;b&quot;  :   │
> │ 2 }&quot;|]<br />  position = { line = 1<br />               column = 0 }    │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ lines</td><td><div class="dni-plaintext"><pre>[ { &quot;a&quot;:1,           │
> │ &quot;b&quot;  :  2 }                                                        │
> │ ]</pre></div></td></tr><tr><td>position</td><td><details                     │
> │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line =     │
> │ 1<br />  column = 0                                                          │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ line</td><td><div class="dni-plaintext"><pre>1                               │
> │ </pre></div></td></tr><tr><td>column</td><td><div                            │
> │ class="dni-plaintext"><pre>0                                                 │
> │ </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></ta │
> │ ble></div></details></td></tr></tbody></table></div></details></td></tr><tr> │
> │ <td>IsSuccess</td><td><div class="dni-plaintext"><pre>true                   │
> │ </pre></div></td></tr><tr><td>IsFailure</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr></tbody></table></div></details><style>                │
> │ .dni-code-hint {                                                             │
> │     font-style: italic;                                                      │
> │     overflow: hidden;                                                        │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview {                                                              │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview td {                                                           │
> │     vertical-align: top;                                                     │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ details.dni-treeview {                                                       │
> │     padding-left: 1em;                                                       │
> │ }                                                                            │
> │ table td {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ table tr {                                                                   │
> │     vertical-align: top;                                                     │
> │     margin: 0em 0px;                                                         │
> │ }                                                                            │
> │ table tr td pre                                                              │
> │ {                                                                            │
> │     vertical-align: top !important;                                          │
> │     margin: 0em 0px !important;                                              │
> │ }                                                                            │
> │ table th {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ </style>                                                                     │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ╭─[ 108.74ms - stdout ]────────────────────────────────────────────────────────╮
> │ JObject (map [("a", JNumber 1.0); ("b", JNumber 2.0)])                       │
> │ JObject (map [("a", JNumber 1.0); ("b", JNumber 2.0)])                       │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jObject """{ "a":1, "b"  :  2, }"""
> |> parserEqual (
>     Failure (
>         "object",
>         "Unexpected ','",
>         { currentLine = """{ "a":1, "b"  :  2, }"""; line = 0; column = 18 }
>     )
> )
> 
> ╭─[ 55.16ms - return value ]───────────────────────────────────────────────────╮
> │ <details open="open" class="dni-treeview"><summary><span                     │
> │ class="dni-code-hint"><code>Failure (&quot;object&quot;, &quot;Unexpected    │
> │ &#39;,&#39;&quot;, { currentLine = &quot;{ &quot;a&quot;:1, &quot;b&quot;  : │
> │ 2, }&quot;<br />                                       line = 0<br />        │
> │ column = 18                                                                  │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item1</td><td><div class="dni-plaintext"><pre>&quot;object&quot;            │
> │ </pre></div></td></tr><tr><td>Item2</td><td><div                             │
> │ class="dni-plaintext"><pre>&quot;Unexpected &#39;,&#39;&quot;                │
> │ </pre></div></td></tr><tr><td>Item3</td><td><details                         │
> │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{            │
> │ currentLine = &quot;{ &quot;a&quot;:1, &quot;b&quot;  :  2, }&quot;<br />    │
> │ line = 0<br />  column = 18                                                  │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ currentLine</td><td><div class="dni-plaintext"><pre>&quot;{ &quot;a&quot;:1, │
> │ &quot;b&quot;  :  2, }&quot;                                                 │
> │ </pre></div></td></tr><tr><td>line</td><td><div class="dni-plaintext"><pre>0 │
> │ </pre></div></td></tr><tr><td>column</td><td><div                            │
> │ class="dni-plaintext"><pre>18                                                │
> │ </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>IsSu │
> │ ccess</td><td><div class="dni-plaintext"><pre>false                          │
> │ </pre></div></td></tr><tr><td>IsFailure</td><td><div                         │
> │ class="dni-plaintext"><pre>true                                              │
> │ </pre></div></td></tr></tbody></table></div></details><style>                │
> │ .dni-code-hint {                                                             │
> │     font-style: italic;                                                      │
> │     overflow: hidden;                                                        │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview {                                                              │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview td {                                                           │
> │     vertical-align: top;                                                     │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ details.dni-treeview {                                                       │
> │     padding-left: 1em;                                                       │
> │ }                                                                            │
> │ table td {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ table tr {                                                                   │
> │     vertical-align: top;                                                     │
> │     margin: 0em 0px;                                                         │
> │ }                                                                            │
> │ table tr td pre                                                              │
> │ {                                                                            │
> │     vertical-align: top !important;                                          │
> │     margin: 0em 0px !important;                                              │
> │ }                                                                            │
> │ table th {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ </style>                                                                     │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ╭─[ 59.19ms - stdout ]─────────────────────────────────────────────────────────╮
> │ Line:0 Col:18 Error parsing object                                           │
> │ { "a":1, "b"  :  2, }                                                        │
> │                   ^Unexpected ','                                            │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ### jValue                                                                   │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let example1 = """{
>     "name" : "Scott",
>     "isMale" : true,
>     "bday" : {"year":2001, "month":12, "day":25 },
>     "favouriteColors" : [["blue", "green"]],
>     "emptyArray" : [[]],
>     "emptyObject" : {}
> }"""
> run jValue example1
> |> parserEqual (
>     Success (
>         JObject (
>             Map.ofList [[
>                 "name", JString "Scott"
>                 "isMale", JBool true
>                 "bday", JObject (
>                     Map.ofList [[
>                         "year", JNumber 2001.0
>                         "month", JNumber 12.0
>                         "day", JNumber 25.0
>                     ]]
>                 )
>                 "favouriteColors", JArray [[ JString "blue"; JString "green" ]]
>                 "emptyArray", JArray [[]]
>                 "emptyObject", JObject Map.empty
>             ]]
>         )
>     )
> )
> 
> ╭─[ 177.68ms - return value ]──────────────────────────────────────────────────╮
> │ <details open="open" class="dni-treeview"><summary><span                     │
> │ class="dni-code-hint"><code>Success<br />  (JObject<br />     (map<br />     │
> │ [(&quot;bday&quot;,<br />          JObject<br />            (map<br />       │
> │ [(&quot;day&quot;, JNumber 25.0); (&quot;month&quot;, JNumber 12.0);<br />   │
> │ (&quot;year&quot;, JNumber 2001.0)])); (&quot;emptyArray&quot;, JArray [     │
> │ ]);<br />         (&quot;emptyObject&quot;, JObject (map []));<br />         │
> │ (&quot;favouriteColors&quot;,                                                │
> │ ...</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><t │
> │ d>Item</td><td><details class="dni-treeview"><summary><span                  │
> │ class="dni-code-hint"><code>(JObject<br />  (map<br />     [                 │
> │ (&quot;bday&quot;,<br />       JObject<br />         (map<br />            [ │
> │ (&quot;day&quot;, JNumber 25.0); (&quot;month&quot;, JNumber 12.0);<br />    │
> │ (&quot;year&quot;, JNumber 2001.0)])); (&quot;emptyArray&quot;, JArray [     │
> │ ]);<br />      (&quot;emptyObject&quot;, JObject (map []));<br />            │
> │ (&quot;favouriteColors&quot;, JArray [JString &quot;blue&quot;; JString      │
> │ &quot;gr...</code></span></summary><div><table><thead><tr></tr></thead><tbod │
> │ y><tr><td>Item1</td><td><details class="dni-treeview"><summary><span         │
> │ class="dni-code-hint"><code>JObject<br />  (map<br />     [                  │
> │ (&quot;bday&quot;,<br />       JObject<br />         (map<br />            [ │
> │ (&quot;day&quot;, JNumber 25.0); (&quot;month&quot;, JNumber 12.0);<br />    │
> │ (&quot;year&quot;, JNumber 2001.0)])); (&quot;emptyArray&quot;, JArra...,,   │
> │ &quot;isMale&quot; : true,,     &quot;bday&quot; : {&quot;year&quot;:2001,   │
> │ &quot;month&quot;:12, &quot;day&quot;:25 },,     &quot;favouriteColors&quot; │
> │ : [&quot;blue&quot;, &quot;green&quot;],,     &quot;emptyArray&quot; : [],,  │
> │ &quot;emptyObject&quot; : {}, }                                              │
> │ ]</pre></div></td></tr><tr><td>position</td><td><details                     │
> │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line =     │
> │ 8<br />  column = 0                                                          │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ line</td><td><div class="dni-plaintext"><pre>8                               │
> │ </pre></div></td></tr><tr><td>column</td><td><div                            │
> │ class="dni-plaintext"><pre>0                                                 │
> │ </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></ta │
> │ ble></div></details></td></tr></tbody></table></div></details></td></tr><tr> │
> │ <td>IsSuccess</td><td><div class="dni-plaintext"><pre>true                   │
> │ </pre></div></td></tr><tr><td>IsFailure</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr></tbody></table></div></details><style>                │
> │ .dni-code-hint {                                                             │
> │     font-style: italic;                                                      │
> │     overflow: hidden;                                                        │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview {                                                              │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview td {                                                           │
> │     vertical-align: top;                                                     │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ details.dni-treeview {                                                       │
> │     padding-left: 1em;                                                       │
> │ }                                                                            │
> │ table td {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ table tr {                                                                   │
> │     vertical-align: top;                                                     │
> │     margin: 0em 0px;                                                         │
> │ }                                                                            │
> │ table tr td pre                                                              │
> │ {                                                                            │
> │     vertical-align: top !important;                                          │
> │     margin: 0em 0px !important;                                              │
> │ }                                                                            │
> │ table th {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ </style>                                                                     │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ╭─[ 182.97ms - stdout ]────────────────────────────────────────────────────────╮
> │ JObject                                                                      │
> │   (map                                                                       │
> │      [("bday",                                                               │
> │        JObject                                                               │
> │          (map                                                                │
> │             [("day", JNumber 25.0); ("month", JNumber 12.0);                 │
> │              ("year", JNumber 2001.0)])); ("emptyArray", JArray []);         │
> │       ("emptyObject", JObject (map []));                                     │
> │       ("favouriteColors", JArray [JString "blue"; JString "green"]);         │
> │       ("isMale", JBool true); ("name", JString "Scott")])                    │
> │ JObject                                                                      │
> │   (map                                                                       │
> │      [("bday", JObject (map [("day", JNumber 25.0); ("month", JNumber 12.0); │
> │ ("year", JNumber 2001.0)]));                                                 │
> │       ("emptyArray", JArray []); ("emptyObject", JObject (map []));          │
> │       ("favouriteColors", JArray [JString "blue"; JString "green"]);         │
> │ ("isMale", JBool true); ("name", JString "Scott")])                          │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let example2 = """{"widget": {
>     "debug": "on",
>     "window": {
>         "title": "Sample Konfabulator Widget",
>         "name": "main_window",
>         "width": 500,
>         "height": 500
>     },
>     "image": {
>         "src": "Images/Sun.png",
>         "name": "sun1",
>         "hOffset": 250,
>         "vOffset": 250,
>         "alignment": "center"
>     },
>     "text": {
>         "data": "Click Here",
>         "size": 36,
>         "style": "bold",
>         "name": "text1",
>         "hOffset": 250,
>         "vOffset": 100,
>         "alignment": "center",
>         "onMouseUp": "sun1.opacity = (sun1.opacity / 100) * 90;"
>     }
> }}"""
> 
> run jValue example2
> |> parserEqual (
>     Success (
>         JObject (
>             Map.ofList [[
>                 "widget", JObject (
>                     Map.ofList [[
>                         "debug", JString "on"
>                         "window", JObject (
>                             Map.ofList [[
>                                 "title", JString "Sample Konfabulator Widget"
>                                 "name", JString "main_window"
>                                 "width", JNumber 500.0
>                                 "height", JNumber 500.0
>                             ]]
>                         )
>                         "image", JObject (
>                             Map.ofList [[
>                                 "src", JString "Images/Sun.png"
>                                 "name", JString "sun1"
>                                 "hOffset", JNumber 250.0
>                                 "vOffset", JNumber 250.0
>                                 "alignment", JString "center"
>                             ]]
>                         )
>                         "text", JObject (
>                             Map.ofList [[
>                                 "data", JString "Click Here"
>                                 "size", JNumber 36.0
>                                 "style", JString "bold"
>                                 "name", JString "text1"
>                                 "hOffset", JNumber 250.0
>                                 "vOffset", JNumber 100.0
>                                 "alignment", JString "center"
>                                 "onMouseUp", JString "sun1.opacity = 
> (sun1.opacity / 100) * 90;"
>                             ]]
>                         )
>                     ]]
>                 )
>             ]]
>         )
>     )
> )
> 
> ╭─[ 358.61ms - return value ]──────────────────────────────────────────────────╮
> │ <details open="open" class="dni-treeview"><summary><span                     │
> │ class="dni-code-hint"><code>Success<br />  (JObject<br />     (map<br />     │
> │ [(&quot;widget&quot;,<br />          JObject<br />            (map<br />     │
> │ [(&quot;debug&quot;, JString &quot;on&quot;);<br />                          │
> │ (&quot;image&quot;,<br />                 JObject<br />                      │
> │ (map<br />                      [(&quot;alignment&quot;, JString             │
> │ &quot;center&quot;);<br />                                                   │
> │ (&quot;hOffset&quot;...</code></span></summary><div><table><thead><tr></tr>< │
> │ /thead><tbody><tr><td>Item</td><td><details                                  │
> │ class="dni-treeview"><summary><span class="dni-code-hint"><code>(JObject<br  │
> │ />  (map<br />     [(&quot;widget&quot;,<br />       JObject<br />           │
> │ (map<br />            [(&quot;debug&quot;, JString &quot;on&quot;);<br />    │
> │ (&quot;image&quot;,<br />              JObject<br />                (map<br  │
> │ />                   [(&quot;alignment&quot;, JString &quot;center&quot;);   │
> │ (&quot;hOffset&quot;, JNumber 250.0);<br />                                  │
> │ (&quot;name&quot;, JString                                                   │
> │ &quot;sun1&quot;...</code></span></summary><div><table><thead><tr></tr></the │
> │ ad><tbody><tr><td>Item1</td><td><details class="dni-treeview"><summary><span │
> │ class="dni-code-hint"><code>JObject<br />  (map<br />     [                  │
> │ (&quot;widget&quot;,<br />       JObject<br />         (map<br />            │
> │ [(&quot;debug&quot;, JString &quot;on&quot;);<br />                          │
> │ (&quot;image&quot;,<br />              JObject<br />                (...t;,, │
> │ &quot;name&quot;: &quot;text1&quot;,,         &quot;hOffset&quot;: 250,,     │
> │ &quot;vOffset&quot;: 100,,         &quot;alignment&quot;:                    │
> │ &quot;center&quot;,,         &quot;onMouseUp&quot;: &quot;sun1.opacity =     │
> │ (sun1.opacity / 100) * 90;&quot;,     }, }}                                  │
> │ ]</pre></div></td></tr><tr><td>position</td><td><details                     │
> │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line =     │
> │ 26<br />  column = 0                                                         │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ line</td><td><div class="dni-plaintext"><pre>26                              │
> │ </pre></div></td></tr><tr><td>column</td><td><div                            │
> │ class="dni-plaintext"><pre>0                                                 │
> │ </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></ta │
> │ ble></div></details></td></tr></tbody></table></div></details></td></tr><tr> │
> │ <td>IsSuccess</td><td><div class="dni-plaintext"><pre>true                   │
> │ </pre></div></td></tr><tr><td>IsFailure</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr></tbody></table></div></details><style>                │
> │ .dni-code-hint {                                                             │
> │     font-style: italic;                                                      │
> │     overflow: hidden;                                                        │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview {                                                              │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview td {                                                           │
> │     vertical-align: top;                                                     │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ details.dni-treeview {                                                       │
> │     padding-left: 1em;                                                       │
> │ }                                                                            │
> │ table td {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ table tr {                                                                   │
> │     vertical-align: top;                                                     │
> │     margin: 0em 0px;                                                         │
> │ }                                                                            │
> │ table tr td pre                                                              │
> │ {                                                                            │
> │     vertical-align: top !important;                                          │
> │     margin: 0em 0px !important;                                              │
> │ }                                                                            │
> │ table th {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ </style>                                                                     │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ╭─[ 364.33ms - stdout ]────────────────────────────────────────────────────────╮
> │ JObject                                                                      │
> │   (map                                                                       │
> │      [("widget",                                                             │
> │        JObject                                                               │
> │          (map                                                                │
> │             [("debug", JString "on");                                        │
> │              ("image",                                                       │
> │               JObject                                                        │
> │                 (map                                                         │
> │                    [("alignment", JString "center"); ("hOffset", JNumber     │
> │ 250.0);                                                                      │
> │                     ("name", JString "sun1"); ("src", JString                │
> │ "Images/Sun.png");                                                           │
> │                     ("vOffset", JNumber 250.0)]));                           │
> │              ("text",                                                        │
> │               JObject                                                        │
> │                 (map                                                         │
> │                    [("alignment", JString "center");                         │
> │                     ("data", JString "Click Here"); ("hOffset", JNumber      │
> │ 250.0);                                                                      │
> │                     ("name", JString "text1");                               │
> │                     ("onMouseUp",                                            │
> │                      JString "sun1.opacity = (sun1.opacity / 100) * 90;");   │
> │                     ("size", JNumber 36.0); ("style", JString "bold");       │
> │                     ("vOffset", JNumber 100.0)]));                           │
> │              ("window",                                                      │
> │               JObject                                                        │
> │                 (map                                                         │
> │                    [("height", JNumber 500.0); ("name", JString              │
> │ "main_window");                                                              │
> │                     ("title", JString "Sample Konfabulator Widget");         │
> │                     ("width", JNumber 500.0)]))]))])                         │
> │ JObject                                                                      │
> │   (map                                                                       │
> │      [("widget",                                                             │
> │        JObject                                                               │
> │          (map                                                                │
> │             [("debug", JString "on");                                        │
> │              ("image",                                                       │
> │               JObject                                                        │
> │                 (map                                                         │
> │                    [("alignment", JString "center"); ("hOffset", JNumber     │
> │ 250.0); ("name", JString "sun1");                                            │
> │                     ("src", JString "Images/Sun.png"); ("vOffset", JNumber   │
> │ 250.0)]));                                                                   │
> │              ("text",                                                        │
> │               JObject                                                        │
> │                 (map                                                         │
> │                    [("alignment", JString "center"); ("data", JString "Click │
> │ Here"); ("hOffset", JNumber 250.0);                                          │
> │                     ("name", JString "text1"); ("onMouseUp", JString         │
> │ "sun1.opacity = (sun1.opacity / 100) * 90;");                                │
> │                     ("size", JNumber 36.0); ("style", JString "bold");       │
> │ ("vOffset", JNumber 100.0)]));                                               │
> │              ("window",                                                      │
> │               JObject                                                        │
> │                 (map                                                         │
> │                    [("height", JNumber 500.0); ("name", JString              │
> │ "main_window");                                                              │
> │                     ("title", JString "Sample Konfabulator Widget");         │
> │ ("width", JNumber 500.0)]))]))])                                             │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let example3 = """{
>   "string": "Hello, \"World\"!",
>   "escapedString": "This string contains \\/\\\\\\b\\f\\n\\r\\t\\\"\\'",
>   "number": 42,
>   "scientificNumber": 3.14e-10,
>   "boolean": true,
>   "nullValue": null,
>   "array": [[1, 2, 3, 4, 5]],
>   "unicodeString1": "프리마",
>   "unicodeString2": "\u0048\u0065\u006C\u006C\u006F, 
> \u0022\u0057\u006F\u0072\u006C\u0064\u0022!",
>   "specialCharacters": "!@#$%^&*()",
>   "emptyArray": [[]],
>   "emptyObject": {},
>   "nestedArrays": [[[[1, 2, 3]], [[4, 5, 6]]]],
>   "object": {
>     "nestedString": "Nested Value",
>     "nestedNumber": 3.14,
>     "nestedBoolean": false,
>     "nestedNull": null,
>     "nestedArray": [["a", "b", "c"]],
>     "nestedObject": {
>       "nestedProperty": "Nested Object Value"
>     }
>   },
>   "nestedObjects": [[
>     {"name": "Alice", "age": 25},
>     {"name": "Bob", "age": 30}
>   ]]
> }"""
> run jValue example3
> |> parserEqual (
>     Success (
>         JObject (
>             Map.ofList [[
>                 "string", JString @"Hello, ""World""!"
>                 "escapedString", JString @"This string contains 
> \/\\\b\f\n\r\t\""\'"
>                 "number", JNumber 42.0
>                 "scientificNumber", JNumber 3.14e-10
>                 "boolean", JBool true
>                 "nullValue", JNull
>                 "array", JArray [[
>                     JNumber 1.0; JNumber 2.0; JNumber 3.0; JNumber 4.0; JNumber 
> 5.0
>                 ]]
>                 "unicodeString1", JString "프리마"
>                 "unicodeString2", JString @"Hello, ""World""!"
>                 "specialCharacters", JString "!@#$%^&*()"
>                 "emptyArray", JArray [[]]
>                 "emptyObject", JObject Map.empty
>                 "nestedArrays", JArray [[
>                     JArray [[ JNumber 1.0; JNumber 2.0; JNumber 3.0 ]]
>                     JArray [[ JNumber 4.0; JNumber 5.0; JNumber 6.0 ]]
>                 ]]
>                 "object", JObject (
>                     Map.ofList [[
>                         "nestedString", JString "Nested Value"
>                         "nestedNumber", JNumber 3.14
>                         "nestedBoolean", JBool false
>                         "nestedNull", JNull
>                         "nestedArray", JArray [[JString "a"; JString "b"; 
> JString "c"]]
>                         "nestedObject", JObject (
>                             Map.ofList [[
>                                 "nestedProperty", JString "Nested Object Value"
>                             ]]
>                         )
>                     ]]
>                 )
>                 "nestedObjects", JArray [[
>                   JObject (Map.ofList [[ "name", JString "Alice"; "age", JNumber
> 25.0 ]])
>                   JObject (Map.ofList [[ "name", JString "Bob"; "age", JNumber 
> 30.0 ]])
>                 ]]
>             ]]
>         )
>     )
> )
> 
> ╭─[ 491.62ms - return value ]──────────────────────────────────────────────────╮
> │ <details open="open" class="dni-treeview"><summary><span                     │
> │ class="dni-code-hint"><code>Success<br />  (JObject<br />     (map<br />     │
> │ [(&quot;array&quot;,<br />          JArray<br />            [JNumber 1.0;    │
> │ JNumber 2.0; JNumber 3.0; JNumber 4.0; JNumber 5.0]);<br />                  │
> │ (&quot;boolean&quot;, JBool true); (&quot;emptyArray&quot;, JArray []);<br   │
> │ />         (&quot;emptyObject&quot;, JObject (map []));<br />                │
> │ (&quot;escapedString&quot;, JString &quot;This                               │
> │ s...</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr>< │
> │ td>Item</td><td><details class="dni-treeview"><summary><span                 │
> │ class="dni-code-hint"><code>(JObject<br />  (map<br />     [                 │
> │ (&quot;array&quot;,<br />       JArray [JNumber 1.0; JNumber 2.0; JNumber    │
> │ 3.0; JNumber 4.0; JNumber 5.0]);<br />      (&quot;boolean&quot;, JBool      │
> │ true); (&quot;emptyArray&quot;, JArray []);<br />                            │
> │ (&quot;emptyObject&quot;, JObject (map []));<br />                           │
> │ (&quot;escapedString&quot;, JString &quot;This string contains \/\\\b\f<br   │
> │ />\r\t\&quot;\&#39;&quot;);<br />                                            │
> │ ...</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><t │
> │ d>Item1</td><td><details class="dni-treeview"><summary><span                 │
> │ class="dni-code-hint"><code>JObject<br />  (map<br />     [                  │
> │ (&quot;array&quot;,<br />       JArray [JNumber 1.0; JNumber 2.0; JNumber    │
> │ 3.0; JNumber 4.0; JNumber 5.0]);<br />      (&quot;boolean&quot;, JBool      │
> │ true); (&quot;emptyArray&quot;, JArray []);<br />                            │
> │ (&quot;emptyObject&quot;, JObject (map []));<br />                           │
> │ (&quot;es...nestedObject&quot;: {,       &quot;nestedProperty&quot;:         │
> │ &quot;Nested Object Value&quot;,     },   },,   &quot;nestedObjects&quot;: [ │
> │ ,     {&quot;name&quot;: &quot;Alice&quot;, &quot;age&quot;: 25},,           │
> │ {&quot;name&quot;: &quot;Bob&quot;, &quot;age&quot;: 30},   ], }             │
> │ ]</pre></div></td></tr><tr><td>position</td><td><details                     │
> │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line =     │
> │ 29<br />  column = 0                                                         │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ line</td><td><div class="dni-plaintext"><pre>29                              │
> │ </pre></div></td></tr><tr><td>column</td><td><div                            │
> │ class="dni-plaintext"><pre>0                                                 │
> │ </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></ta │
> │ ble></div></details></td></tr></tbody></table></div></details></td></tr><tr> │
> │ <td>IsSuccess</td><td><div class="dni-plaintext"><pre>true                   │
> │ </pre></div></td></tr><tr><td>IsFailure</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr></tbody></table></div></details><style>                │
> │ .dni-code-hint {                                                             │
> │     font-style: italic;                                                      │
> │     overflow: hidden;                                                        │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview {                                                              │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview td {                                                           │
> │     vertical-align: top;                                                     │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ details.dni-treeview {                                                       │
> │     padding-left: 1em;                                                       │
> │ }                                                                            │
> │ table td {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ table tr {                                                                   │
> │     vertical-align: top;                                                     │
> │     margin: 0em 0px;                                                         │
> │ }                                                                            │
> │ table tr td pre                                                              │
> │ {                                                                            │
> │     vertical-align: top !important;                                          │
> │     margin: 0em 0px !important;                                              │
> │ }                                                                            │
> │ table th {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ </style>                                                                     │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ╭─[ 497.61ms - stdout ]────────────────────────────────────────────────────────╮
> │ JObject                                                                      │
> │   (map                                                                       │
> │      [("array",                                                              │
> │        JArray [JNumber 1.0; JNumber 2.0; JNumber 3.0; JNumber 4.0; JNumber   │
> │ 5.0]);                                                                       │
> │       ("boolean", JBool true); ("emptyArray", JArray []);                    │
> │       ("emptyObject", JObject (map []));                                     │
> │       ("escapedString", JString "This string contains \/\\\b\f\n\r\t\"\'");  │
> │       ("nestedArrays",                                                       │
> │        JArray                                                                │
> │          [JArray [JNumber 1.0; JNumber 2.0; JNumber 3.0];                    │
> │           JArray [JNumber 4.0; JNumber 5.0; JNumber 6.0]]);                  │
> │       ("nestedObjects",                                                      │
> │        JArray                                                                │
> │          [JObject (map [("age", JNumber 25.0); ("name", JString "Alice")]);  │
> │           JObject (map [("age", JNumber 30.0); ("name", JString "Bob")])]);  │
> │       ("nullValue", JNull); ("number", JNumber 42.0); ...])                  │
> │ JObject                                                                      │
> │   (map                                                                       │
> │      [("array", JArray [JNumber 1.0; JNumber 2.0; JNumber 3.0; JNumber 4.0;  │
> │ JNumber 5.0]); ("boolean", JBool true);                                      │
> │       ("emptyArray", JArray []); ("emptyObject", JObject (map []));          │
> │       ("escapedString", JString "This string contains \/\\\b\f\n\r\t\"\'");  │
> │       ("nestedArrays",                                                       │
> │        JArray [JArray [JNumber 1.0; JNumber 2.0; JNumber 3.0]; JArray [      │
> │ JNumber 4.0; JNumber 5.0; JNumber 6.0]]);                                    │
> │       ("nestedObjects",                                                      │
> │        JArray                                                                │
> │          [JObject (map [("age", JNumber 25.0); ("name", JString "Alice")]);  │
> │           JObject (map [("age", JNumber 30.0); ("name", JString "Bob")])]);  │
> │ ("nullValue", JNull);                                                        │
> │       ("number", JNumber 42.0); ...])                                        │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:24 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 266592 }
00:00:24 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/polyglot/apps/parser/JsonParser.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/polyglot/apps/parser/JsonParser.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:00:25 v #5 ! [NbConvertApp] Converting notebook c:/home/git/polyglot/apps/parser/JsonParser.dib.ipynb to html
00:00:25 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:00:25 v #7 !   validate(nb)
00:00:26 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:00:26 v #9 !   return _pygments_highlight(
00:00:27 v #10 ! [NbConvertApp] Writing 534279 bytes to c:\home\git\polyglot\apps\parser\JsonParser.dib.html
00:00:27 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 864 }
00:00:27 d #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 864 }
00:00:27 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/polyglot/apps/parser/JsonParser.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/polyglot/apps/parser/JsonParser.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:00:27 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:00:27 d #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:00:27 d #16 spiral_builder.run / dib / { exit_code = 0; result_length = 267515 }
00:00:00 d #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "Parser.dib"])) }
00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/polyglot/apps/parser/Parser.dib", "--output-path", "c:/home/git/polyglot/apps/parser/Parser.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/polyglot/apps/parser/Parser.dib" --output-path "c:/home/git/polyglot/apps/parser/Parser.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ # Parser (Polyglot)                                                          │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> open Common
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ### TextInput                                                                │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type Position =
>     {
>         line : int
>         column : int
>     }
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let initialPos = { line = 0; column = 0 }
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline incrCol (pos : Position) =
>     { pos with column = pos.column + 1 }
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline incrLine pos =
>     { line = pos.line + 1; column = 0 }
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type InputState =
>     {
>         lines : string[[]]
>         position : Position
>     }
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline fromStr str =
>     {
>         lines =
>             if str |> String.IsNullOrEmpty
>             then [[||]]
>             else str |> SpiralSm.split_string [[| "\r\n"; "\n" |]]
>         position = initialPos
>     }
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> fromStr "" |> _assertEqual {
>     lines = [[||]]
>     position = { line = 0; column = 0 }
> }
> 
> ╭─[ 60.67ms - stdout ]─────────────────────────────────────────────────────────╮
> │ { lines = [||]                                                               │
> │   position = { line = 0                                                      │
> │                column = 0 } }                                                │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> fromStr "Hello \n World" |> _assertEqual {
>     lines = [[| "Hello "; " World" |]]
>     position = { line = 0; column = 0 }
> }
> 
> ╭─[ 25.47ms - stdout ]─────────────────────────────────────────────────────────╮
> │ { lines = [|"Hello "; " World"|]                                             │
> │   position = { line = 0                                                      │
> │                column = 0 } }                                                │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline currentLine inputState =
>     let linePos = inputState.position.line
>     if linePos < inputState.lines.Length
>     then inputState.lines.[[linePos]]
>     else "end of file"
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline nextChar input =
>     let linePos = input.position.line
>     let colPos = input.position.column
> 
>     if linePos >= input.lines.Length
>     then input, None
>     else
>         let currentLine = currentLine input
>         if colPos < currentLine.Length then
>             let char = currentLine.[[colPos]]
>             let newPos = incrCol input.position
>             let newState = { input with position = newPos }
>             newState, Some char
>         else
>             let char = '\n'
>             let newPos = incrLine input.position
>             let newState = { input with position = newPos }
>             newState, Some char
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let newInput, charOpt = fromStr "Hello World" |> nextChar
> 
> newInput |> _assertEqual {
>     lines = [[| "Hello World" |]]
>     position = { line = 0; column = 1 }
> }
> charOpt |> _assertEqual (Some 'H')
> 
> ╭─[ 47.14ms - stdout ]─────────────────────────────────────────────────────────╮
> │ { lines = [|"Hello World"|]                                                  │
> │   position = { line = 0                                                      │
> │                column = 1 } }                                                │
> │                                                                              │
> │ Some 'H'                                                                     │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let newInput, charOpt = fromStr "Hello\n\nWorld" |> nextChar
> 
> newInput |> _assertEqual {
>     lines = [[| "Hello"; ""; "World" |]]
>     position = { line = 0; column = 1 }
> }
> charOpt |> _assertEqual (Some 'H')
> 
> ╭─[ 38.21ms - stdout ]─────────────────────────────────────────────────────────╮
> │ { lines = [|"Hello"; ""; "World"|]                                           │
> │   position = { line = 0                                                      │
> │                column = 1 } }                                                │
> │                                                                              │
> │ Some 'H'                                                                     │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ### Parser                                                                   │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type Input = InputState
> type ParserLabel = string
> type ParserError = string
> 
> type ParserPosition =
>     {
>         currentLine : string
>         line : int
>         column : int
>     }
> 
> type ParseResult<'a> =
>     | Success of 'a
>     | Failure of ParserLabel * ParserError * ParserPosition
> 
> type Parser<'a> =
>     {
>         label : ParserLabel
>         parseFn : Input -> ParseResult<'a * Input>
>     }
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline printResult result =
>     match result with
>     | Success (value, input) ->
>         printfn $"%A{value}"
>     | Failure (label, error, parserPos) ->
>         let errorLine = parserPos.currentLine
>         let colPos = parserPos.column
>         let linePos = parserPos.line
>         let failureCaret = $"{' ' |> string |> String.replicate colPos}^{error}"
>         printfn $"Line:%i{linePos} Col:%i{colPos} Error parsing 
> %s{label}\n%s{errorLine}\n%s{failureCaret}"
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline runOnInput parser input =
>     parser.parseFn input
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline run parser inputStr =
>     runOnInput parser (fromStr inputStr)
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline parserPositionFromInputState (inputState : Input) =
>     {
>         currentLine = currentLine inputState
>         line = inputState.position.line
>         column = inputState.position.column
>     }
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline getLabel parser =
>     parser.label
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline setLabel parser newLabel =
>     {
>         label = newLabel
>         parseFn = fun input ->
>             match parser.parseFn input with
>             | Success s -> Success s
>             | Failure (oldLabel, err, pos) -> Failure (newLabel, err, pos)
>     }
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let (<?>) = setLabel
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline satisfy predicate label =
>     {
>         label = label
>         parseFn = fun input ->
>             let remainingInput, charOpt = nextChar input
>             match charOpt with
>             | None ->
>                 let err = "No more input"
>                 let pos = parserPositionFromInputState input
>                 Failure (label, err, pos)
>             | Some first ->
>                 if predicate first
>                 then Success (first, remainingInput)
>                 else
>                     let err = $"Unexpected '%c{first}'"
>                     let pos = parserPositionFromInputState input
>                     Failure (label, err, pos)
>     }
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let input = fromStr "Hello"
> let parser = satisfy (fun c -> c = 'H') "H"
> runOnInput parser input |> _assertEqual (
>     Success (
>         'H',
>         {
>             lines = [[| "Hello" |]]
>             position = { line = 0; column = 1 }
>         }
>     )
> )
> 
> ╭─[ 46.14ms - stdout ]─────────────────────────────────────────────────────────╮
> │ Success ('H', { lines = [|"Hello"|]                                          │
> │                 position = { line = 0                                        │
> │                              column = 1 } })                                 │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let input = fromStr "World"
> let parser = satisfy (fun c -> c = 'H') "H"
> runOnInput parser input |> _assertEqual (
>     Failure (
>         "H",
>         "Unexpected 'W'",
>         {
>             currentLine = "World"
>             line = 0
>             column = 0
>         }
>     )
> )
> 
> ╭─[ 46.00ms - stdout ]─────────────────────────────────────────────────────────╮
> │ Failure ("H", "Unexpected 'W'", { currentLine = "World"                      │
> │                                   line = 0                                   │
> │                                   column = 0 })                              │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline bindP f p =
>     {
>         label = "unknown"
>         parseFn = fun input ->
>             match runOnInput p input with
>             | Failure (label, err, pos) -> Failure (label, err, pos)
>             | Success (value1, remainingInput) -> runOnInput (f value1) 
> remainingInput
>     }
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline (>>=) p f = bindP f p
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let input = fromStr "Hello"
> let parser = satisfy (fun c -> c = 'H') "H"
> let parser2 = parser >>= fun c -> satisfy (fun c -> c = 'e') "e"
> runOnInput parser2 input |> _assertEqual (
>     Success (
>         'e',
>         {
>             lines = [[| "Hello" |]]
>             position = { line = 0; column = 2 }
>         }
>     )
> )
> 
> ╭─[ 57.37ms - stdout ]─────────────────────────────────────────────────────────╮
> │ Success ('e', { lines = [|"Hello"|]                                          │
> │                 position = { line = 0                                        │
> │                              column = 2 } })                                 │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let input = fromStr "World"
> let parser = satisfy (fun c -> c = 'W') "W"
> let parser2 = parser >>= fun c -> satisfy (fun c -> c = 'e') "e"
> runOnInput parser2 input |> _assertEqual (
>     Failure (
>         "e",
>         "Unexpected 'o'",
>         {
>             currentLine = "World"
>             line = 0
>             column = 1
>         }
>     )
> )
> 
> ╭─[ 55.96ms - stdout ]─────────────────────────────────────────────────────────╮
> │ Failure ("e", "Unexpected 'o'", { currentLine = "World"                      │
> │                                   line = 0                                   │
> │                                   column = 1 })                              │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline returnP x =
>     {
>         label = $"%A{x}"
>         parseFn = fun input -> Success (x, input)
>     }
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let input = fromStr "Hello"
> let parser = returnP "Hello"
> runOnInput parser input |> _assertEqual (
>     Success (
>         "Hello",
>         {
>             lines = [[| "Hello" |]]
>             position = { line = 0; column = 0 }
>         }
>     )
> )
> 
> ╭─[ 32.55ms - stdout ]─────────────────────────────────────────────────────────╮
> │ Success ("Hello", { lines = [|"Hello"|]                                      │
> │                     position = { line = 0                                    │
> │                                  column = 0 } })                             │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline mapP f =
>     bindP (f >> returnP)
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let (<!>) = mapP
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline (|>>) x f = f <!> x
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let input = fromStr "Hello"
> let parser = satisfy (fun c -> c = 'H') "H"
> let parser2 = parser |>> string
> runOnInput parser2 input |> _assertEqual (
>     Success (
>         "H",
>         {
>             lines = [[| "Hello" |]]
>             position = { line = 0; column = 1 }
>         }
>     )
> )
> 
> ╭─[ 50.21ms - stdout ]─────────────────────────────────────────────────────────╮
> │ Success ("H", { lines = [|"Hello"|]                                          │
> │                 position = { line = 0                                        │
> │                              column = 1 } })                                 │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline applyP fP xP =
>     fP >>=
>         fun f ->
>             xP >>=
>                 fun x ->
>                     returnP (f x)
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let (<*>) = applyP
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline lift2 f xP yP =
>     returnP f <*> xP <*> yP
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let input = fromStr "Hello"
> let parser = satisfy (fun c -> c = 'H') "H"
> let parser2 = satisfy (fun c -> c = 'e') "e"
> let parser3 = lift2 (fun c1 c2 -> string c1 + string c2) parser parser2
> runOnInput parser3 input |> _assertEqual (
>     Success (
>         "He",
>         {
>             lines = [[| "Hello" |]]
>             position = { line = 0; column = 2 }
>         }
>     )
> )
> 
> ╭─[ 138.44ms - stdout ]────────────────────────────────────────────────────────╮
> │ Success ("He", { lines = [|"Hello"|]                                         │
> │                  position = { line = 0                                       │
> │                               column = 2 } })                                │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline andThen p1 p2 =
>     p1 >>=
>         fun p1Result ->
>             p2 >>=
>                 fun p2Result ->
>                     returnP (p1Result, p2Result)
>     <?> $"{getLabel p1} andThen {getLabel p2}"
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let (.>>.) = andThen
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let input = fromStr "Hello"
> let parser = satisfy (fun c -> c = 'H') "H"
> let parser2 = satisfy (fun c -> c = 'e') "e"
> let parser3 = parser .>>. parser2
> runOnInput parser3 input |> _assertEqual (
>     Success (
>         ('H', 'e'),
>         {
>             lines = [[| "Hello" |]]
>             position = { line = 0; column = 2 }
>         }
>     )
> )
> 
> ╭─[ 49.46ms - stdout ]─────────────────────────────────────────────────────────╮
> │ Success (('H', 'e'), { lines = [|"Hello"|]                                   │
> │                        position = { line = 0                                 │
> │                                     column = 2 } })                          │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline orElse p1 p2 =
>     {
>         label = $"{getLabel p1} orElse {getLabel p2}"
>         parseFn = fun input ->
>             match runOnInput p1 input with
>             | Success _ as result -> result
>             | Failure _ -> runOnInput p2 input
>     }
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let (<|>) = orElse
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let input = fromStr "hello"
> let parser = satisfy (fun c -> c = 'H') "H"
> let parser2 = satisfy (fun c -> c = 'h') "h"
> let parser3 = parser <|> parser2
> runOnInput parser3 input |> _assertEqual (
>     Success (
>         'h',
>         {
>             lines = [[| "hello" |]]
>             position = { line = 0; column = 1 }
>         }
>     )
> )
> 
> ╭─[ 49.40ms - stdout ]─────────────────────────────────────────────────────────╮
> │ Success ('h', { lines = [|"hello"|]                                          │
> │                 position = { line = 0                                        │
> │                              column = 1 } })                                 │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline choice listOfParsers =
>     listOfParsers |> List.reduce (<|>)
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let input = fromStr "hello"
> let parser = satisfy (fun c -> c = 'H') "H"
> let parser2 = satisfy (fun c -> c = 'h') "h"
> let parser3 = choice [[ parser; parser2 ]]
> runOnInput parser3 input |> _assertEqual (
>     Success (
>         'h',
>         {
>             lines = [[| "hello" |]]
>             position = { line = 0; column = 1 }
>         }
>     )
> )
> 
> ╭─[ 51.04ms - stdout ]─────────────────────────────────────────────────────────╮
> │ Success ('h', { lines = [|"hello"|]                                          │
> │                 position = { line = 0                                        │
> │                              column = 1 } })                                 │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let rec sequence parserList =
>     match parserList with
>     | [[]] -> returnP [[]]
>     | head :: tail -> (lift2 cons) head (sequence tail)
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let input = fromStr "Hello"
> let parser = satisfy (fun c -> c = 'H') "H"
> let parser2 = satisfy (fun c -> c = 'e') "e"
> let parser3 = sequence [[ parser; parser2 ]]
> runOnInput parser3 input |> _assertEqual (
>     Success (
>         [[ 'H'; 'e' ]],
>         {
>             lines = [[| "Hello" |]]
>             position = { line = 0; column = 2 }
>         }
>     )
> )
> 
> ╭─[ 61.35ms - stdout ]─────────────────────────────────────────────────────────╮
> │ Success (['H'; 'e'], { lines = [|"Hello"|]                                   │
> │                        position = { line = 0                                 │
> │                                     column = 2 } })                          │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let rec parseZeroOrMore parser input =
>     match runOnInput parser input with
>     | Failure (_, _, _) ->
>         [[]], input
>     | Success (firstValue, inputAfterFirstParse) ->
>         let subsequentValues, remainingInput = parseZeroOrMore parser 
> inputAfterFirstParse
>         firstValue :: subsequentValues, remainingInput
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline many parser =
>     {
>         label = $"many {getLabel parser}"
>         parseFn = fun input -> Success (parseZeroOrMore parser input)
>     }
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let input = fromStr "hello"
> let parser = satisfy (fun c -> c = 'H') "H"
> let parser2 = many parser
> runOnInput parser2 input |> _assertEqual (
>     Success (
>         [[]],
>         {
>             lines = [[| "hello" |]]
>             position = { line = 0; column = 0 }
>         }
>     )
> )
> 
> ╭─[ 49.85ms - stdout ]─────────────────────────────────────────────────────────╮
> │ Success ([], { lines = [|"hello"|]                                           │
> │                position = { line = 0                                         │
> │                             column = 0 } })                                  │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline many1 p =
>     p >>=
>         fun head ->
>             many p >>=
>                 fun tail ->
>                     returnP (head :: tail)
>     <?> $"many1 {getLabel p}"
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let input = fromStr "hello"
> let parser = satisfy (fun c -> c = 'H') "H"
> let parser2 = many1 parser
> runOnInput parser2 input |> _assertEqual (
>     Failure (
>         "many1 H",
>         "Unexpected 'h'",
>         {
>             currentLine = "hello"
>             line = 0
>             column = 0
>         }
>     )
> )
> 
> ╭─[ 67.09ms - stdout ]─────────────────────────────────────────────────────────╮
> │ Failure ("many1 H", "Unexpected 'h'", { currentLine = "hello"                │
> │                                         line = 0                             │
> │                                         column = 0 })                        │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline opt p =
>     let some = p |>> Some
>     let none = returnP None
>     (some <|> none)
>     <?> $"opt {getLabel p}"
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let input = fromStr "hello"
> let parser = satisfy (fun c -> c = 'H') "H"
> let parser2 = opt parser
> runOnInput parser2 input |> _assertEqual (
>     Success (
>         None,
>         {
>             lines = [[| "hello" |]]
>             position = { line = 0; column = 0 }
>         }
>     )
> )
> 
> ╭─[ 56.34ms - stdout ]─────────────────────────────────────────────────────────╮
> │ Success (None, { lines = [|"hello"|]                                         │
> │                  position = { line = 0                                       │
> │                               column = 0 } })                                │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline (.>>) p1 p2 =
>     p1 .>>. p2
>     |> mapP fst
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline (>>.) p1 p2 =
>     p1 .>>. p2
>     |> mapP snd
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline between p1 p2 p3 =
>     p1 >>. p2 .>> p3
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let input = fromStr "[[Hello]]"
> let parser =
>     between
>         (satisfy (fun c -> c = '[[') "[[")
>         (many (satisfy (fun c -> [[ 'a' .. 'z' ]] @ [[ 'A' .. 'Z' ]] |> 
> List.contains c) "letter"))
>         (satisfy (fun c -> c = ']]') "]]")
> runOnInput parser input |> _assertEqual (
>     Success (
>         [[ 'H'; 'e'; 'l'; 'l'; 'o' ]],
>         {
>             lines = [[| "[[Hello]]" |]]
>             position = { line = 0; column = 7 }
>         }
>     )
> )
> 
> ╭─[ 159.94ms - stdout ]────────────────────────────────────────────────────────╮
> │ Success (['H'; 'e'; 'l'; 'l'; 'o'], { lines = [|"[Hello]"|]                  │
> │                                       position = { line = 0                  │
> │                                                    column = 7 } })           │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline sepBy1 p sep =
>     let sepThenP = sep >>. p
>     p .>>. many sepThenP
>     |>> fun (p, pList) -> p :: pList
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline sepBy p sep =
>     sepBy1 p sep <|> returnP [[]]
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let input = fromStr "Hello,World"
> let parser = sepBy (many (satisfy (fun c -> c <> ',') "not comma")) (satisfy 
> (fun c -> c = ',') "comma")
> runOnInput parser input |> _assertEqual (
>     Success (
>         [[ [[ 'H'; 'e'; 'l'; 'l'; 'o' ]]; [[ 'W'; 'o'; 'r'; 'l'; 'd'; '\n' ]] 
> ]],
>         {
>             lines = [[| "Hello,World" |]]
>             position = { line = 1; column = 0 }
>         }
>     )
> )
> 
> ╭─[ 112.37ms - stdout ]────────────────────────────────────────────────────────╮
> │ Success ([['H'; 'e'; 'l'; 'l'; 'o']; ['W'; 'o'; 'r'; 'l'; 'd'; '\010']], {   │
> │ lines = [|"Hello,World"|]                                                    │
> │                                                                              │
> │ position = { line = 1                                                        │
> │                                                                              │
> │ column = 0 } })                                                              │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline pchar charToMatch =
>     satisfy ((=) charToMatch) $"%c{charToMatch}"
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline anyOf listOfChars =
>     listOfChars
>     |> List.map pchar
>     |> choice
>     <?> $"anyOf %A{listOfChars}"
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let input = fromStr "Hello"
> let parser = anyOf [[ 'H'; 'e'; 'l'; 'o' ]] |> many
> runOnInput parser input |> _assertEqual (
>     Success (
>         [[ 'H'; 'e'; 'l'; 'l'; 'o' ]],
>         {
>             lines = [[| "Hello" |]]
>             position = { line = 0; column = 5 }
>         }
>     )
> )
> 
> ╭─[ 60.34ms - stdout ]─────────────────────────────────────────────────────────╮
> │ Success (['H'; 'e'; 'l'; 'l'; 'o'], { lines = [|"Hello"|]                    │
> │                                       position = { line = 0                  │
> │                                                    column = 5 } })           │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline charListToStr charList =
>     charList |> List.toArray |> String
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline manyChars cp =
>     many cp
>     |>> charListToStr
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline manyChars1 cp =
>     many1 cp
>     |>> charListToStr
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let input = fromStr "Hello"
> let parser = manyChars1 (anyOf [[ 'H'; 'e'; 'l'; 'o' ]])
> runOnInput parser input |> _assertEqual (
>     Success (
>         "Hello",
>         {
>             lines = [[| "Hello" |]]
>             position = { line = 0; column = 5 }
>         }
>     )
> )
> 
> ╭─[ 93.24ms - stdout ]─────────────────────────────────────────────────────────╮
> │ Success ("Hello", { lines = [|"Hello"|]                                      │
> │                     position = { line = 0                                    │
> │                                  column = 5 } })                             │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline pstring str =
>     str
>     |> List.ofSeq
>     |> List.map pchar
>     |> sequence
>     |> mapP charListToStr
>     <?> str
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let input = fromStr "Hello"
> let parser = pstring "Hello"
> runOnInput parser input |> _assertEqual (
>     Success (
>         "Hello",
>         {
>             lines = [[| "Hello" |]]
>             position = { line = 0; column = 5 }
>         }
>     )
> )
> 
> ╭─[ 116.72ms - stdout ]────────────────────────────────────────────────────────╮
> │ Success ("Hello", { lines = [|"Hello"|]                                      │
> │                     position = { line = 0                                    │
> │                                  column = 5 } })                             │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let whitespaceChar =
>     satisfy Char.IsWhiteSpace "whitespace"
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let spaces = many whitespaceChar
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let spaces1 = many1 whitespaceChar
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let input = fromStr "  Hello"
> let parser = spaces1 .>>. pstring "Hello"
> runOnInput parser input |> _assertEqual (
>     Success (
>         ([[ ' '; ' ' ]], "Hello"),
>         {
>             lines = [[| "  Hello" |]]
>             position = { line = 0; column = 7 }
>         }
>     )
> )
> 
> ╭─[ 70.12ms - stdout ]─────────────────────────────────────────────────────────╮
> │ Success (([' '; ' '], "Hello"), { lines = [|"  Hello"|]                      │
> │                                   position = { line = 0                      │
> │                                                column = 7 } })               │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let digitChar =
>     satisfy Char.IsDigit "digit"
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let input = fromStr "Hello"
> let parser = digitChar
> runOnInput parser input |> _assertEqual (
>     Failure (
>         "digit",
>         "Unexpected 'H'",
>         {
>             currentLine = "Hello"
>             line = 0
>             column = 0
>         }
>     )
> )
> 
> ╭─[ 33.03ms - stdout ]─────────────────────────────────────────────────────────╮
> │ Failure ("digit", "Unexpected 'H'", { currentLine = "Hello"                  │
> │                                       line = 0                               │
> │                                       column = 0 })                          │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let pint =
>     let inline resultToInt (sign, digits) =
>         let i = int digits
>         match sign with
>         | Some ch -> -i
>         | None -> i
> 
>     let digits = manyChars1 digitChar
> 
>     opt (pchar '-') .>>. digits
>     |> mapP resultToInt
>     <?> "integer"
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run pint "-123"
> |> _assertEqual (
>     Success (
>         -123,
>         {
>             lines = [[| "-123" |]]
>             position = { line = 0; column = 4 }
>         }
>     )
> )
> 
> ╭─[ 35.80ms - stdout ]─────────────────────────────────────────────────────────╮
> │ Success (-123, { lines = [|"-123"|]                                          │
> │                  position = { line = 0                                       │
> │                               column = 4 } })                                │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let pfloat =
>     let inline resultToFloat (((sign, digits1), point), digits2) =
>         let fl = float $"{digits1}.{digits2}"
>         match sign with
>         | Some ch -> -fl
>         | None -> fl
> 
>     let digits = manyChars1 digitChar
> 
>     opt (pchar '-') .>>. digits .>>. pchar '.' .>>. digits
>     |> mapP resultToFloat
>     <?> "float"
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run pfloat "-123.45"
> |> _assertEqual (
>     Success (
>         -123.45,
>         {
>             lines = [[| "-123.45" |]]
>             position = { line = 0; column = 7 }
>         }
>     )
> )
> 
> ╭─[ 33.22ms - stdout ]─────────────────────────────────────────────────────────╮
> │ Success (-123.45, { lines = [|"-123.45"|]                                    │
> │                     position = { line = 0                                    │
> │                                  column = 7 } })                             │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline createParserForwardedToRef<'a> () =
>     let mutable parserRef : Parser<'a> =
>         {
>             label = "unknown"
>             parseFn = fun _ -> failwith "unfixed forwarded parser"
>         }
> 
>     let wrapperParser =
>         { parserRef with
>             parseFn = fun input -> runOnInput parserRef input
>         }
> 
>     wrapperParser, (fun v -> parserRef <- v)
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline (>>%) p x =
>     p
>     |>> fun _ -> x
00:00:21 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 39314 }
00:00:21 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/polyglot/apps/parser/Parser.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/polyglot/apps/parser/Parser.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:00:22 v #5 ! [NbConvertApp] Converting notebook c:/home/git/polyglot/apps/parser/Parser.dib.ipynb to html
00:00:22 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:00:22 v #7 !   validate(nb)
00:00:23 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:00:23 v #9 !   return _pygments_highlight(
00:00:24 v #10 ! [NbConvertApp] Writing 413747 bytes to c:\home\git\polyglot\apps\parser\Parser.dib.html
00:00:24 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 856 }
00:00:24 d #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 856 }
00:00:24 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/polyglot/apps/parser/Parser.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/polyglot/apps/parser/Parser.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:00:24 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:00:24 d #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:00:24 d #16 spiral_builder.run / dib / { exit_code = 0; result_length = 40229 }
00:00:00 d #1 writeDibCode / output: Fs / path: JsonParser.dib
00:00:00 d #1 writeDibCode / output: Fs / path: Parser.dib
00:00:00 d #2 parseDibCode / output: Fs / file: JsonParser.dib
00:00:00 d #2 parseDibCode / output: Fs / file: Parser.dib
In [ ]:
{ pwsh ../apps/spiral/build.ps1 } | Invoke-Block
00:00:00 d #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "Supervisor.dib", "--retries", "3"])) }
00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/polyglot/apps/spiral/Supervisor.dib", "--output-path", "c:/home/git/polyglot/apps/spiral/Supervisor.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/polyglot/apps/spiral/Supervisor.dib" --output-path "c:/home/git/polyglot/apps/spiral/Supervisor.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ # Supervisor (Polyglot)                                                      │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> #r 
> @"../../../../../../../.nuget/packages/fsharp.control.asyncseq/3.2.1/lib/netstan
> dard2.1/FSharp.Control.AsyncSeq.dll"
> #r 
> @"../../../../../../../.nuget/packages/system.reactive/6.0.1-preview.1/lib/net6.
> 0/System.Reactive.dll"
> #r 
> @"../../../../../../../.nuget/packages/system.reactive.linq/6.0.1-preview.1/lib/
> netstandard2.0/System.Reactive.Linq.dll"
> #r 
> @"../../../../../../../.nuget/packages/argu/6.2.4/lib/netstandard2.0/Argu.dll"
> #r 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.http.connections.com
> mon/7.0.0/lib/net7.0/Microsoft.AspNetCore.Http.Connections.Common.dll"
> #r 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.http.connections.cli
> ent/7.0.0/lib/net7.0/Microsoft.AspNetCore.Http.Connections.Client.dll"
> #r 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.signalr.common/7.0.0
> /lib/net7.0/Microsoft.AspNetCore.SignalR.Common.dll"
> #r 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.signalr.client/7.0.0
> /lib/net7.0/Microsoft.AspNetCore.SignalR.Client.dll"
> #r 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.signalr.client.core/
> 7.0.0/lib/net7.0/Microsoft.AspNetCore.SignalR.Client.Core.dll"
> #r 
> @"../../../../../../../.nuget/packages/fsharp.json/0.4.1/lib/netstandard2.0/FSha
> rp.Json.dll"
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> #if !INTERACTIVE
> open Lib
> #endif
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> open Common
> open SpiralFileSystem.Operators
> open Microsoft.AspNetCore.SignalR.Client
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ### sendJson                                                                 │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline sendJson (port : int) (json : string) = async {
>     let host = "127.0.0.1"
>     let! portOpen = SpiralNetworking.test_port_open host port
>     if portOpen then
>         try
>             let connection = 
> HubConnectionBuilder().WithUrl($"http://{host}:{port}").Build()
>             do! connection.StartAsync () |> Async.AwaitTask
>             let! result = connection.InvokeAsync<string> ("ClientToServerMsg", 
> json) |> Async.AwaitTask
>             do! connection.StopAsync () |> Async.AwaitTask
>             trace Verbose (fun () -> $"Supervisor.sendJson / port: {port} / 
> json: {json |> SpiralSm.ellipsis_end 200} / result: {result |> Option.ofObj |> 
> Option.map (SpiralSm.ellipsis_end 200)}") _locals
>             return Some result
>         with ex ->
>             trace Critical (fun () -> $"Supervisor.sendJson / port: {port} / 
> json: {json |> SpiralSm.ellipsis_end 200} / ex: {ex |> 
> SpiralSm.format_exception}") _locals
>             return None
>     else
>         trace Debug (fun () -> $"Supervisor.sendJson / port: {port} / error: 
> port not open") _locals
>         return None
> }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ### sendObj                                                                  │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline sendObj port obj =
>     obj
>     |> System.Text.Json.JsonSerializer.Serialize
>     |> sendJson port
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ### VSCPos                                                                   │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type VSCPos = {| line : int; character : int |}
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ### VSCRange                                                                 │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type VSCRange = VSCPos * VSCPos
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ### RString                                                                  │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type RString = VSCRange * string
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ### TracedError                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type TracedError = {| trace : string list; message : string |}
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ### ClientErrorsRes                                                          │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type ClientErrorsRes =
>     | FatalError of string
>     | TracedError of TracedError
>     | PackageErrors of {| uri : string; errors : RString list |}
>     | TokenizerErrors of {| uri : string; errors : RString list |}
>     | ParserErrors of {| uri : string; errors : RString list |}
>     | TypeErrors of {| uri : string; errors : RString list |}
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ### workspaceRoot                                                            │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let workspaceRoot = SpiralFileSystem.get_workspace_root ()
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ### awaitCompiler                                                            │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline awaitCompiler port cancellationToken = async {
>     let host = "127.0.0.1"
>     let struct (ct, disposable) = cancellationToken |> 
> SpiralThreading.new_disposable_token
>     let! ct = ct |> SpiralAsync.merge_cancellation_token_with_default_async
> 
>     let compiler = MailboxProcessor.Start (fun inbox -> async {
>         let! availablePort = SpiralNetworking.get_available_port (Some 180) host
> port
>         if availablePort <> port then
>             inbox.Post (port, false)
>         else
>             let compilerPath =
>                 workspaceRoot </> "deps/The-Spiral-Language/The Spiral Language 
> 2/artifacts/bin/The Spiral Language 2/release"
>                 |> System.IO.Path.GetFullPath
> 
>             let dllPath = compilerPath </> "Spiral.dll"
> 
>             let! exitCode, result =
>                 SpiralRuntime.execution_options (fun x ->
>                     { x with
>                         l0 = $@"dotnet ""{dllPath}"" --port {availablePort} 
> --default-int i32 --default-float f64"
>                         l1 = Some ct
>                         l3 = Some (fun struct (_, line, _) -> async {
>                             if line |> SpiralSm.contains 
> $"System.IO.IOException: Failed to bind to address http://{host}:{port}: address
> already in use." then
>                                 inbox.Post (port, false)
> 
>                             if line |> SpiralSm.contains $"Server bound to: 
> http://localhost:{availablePort}" then
>                                 let rec loop retry = async {
>                                     do!
>                                         SpiralNetworking.wait_for_port_access 
> (Some 100) true host availablePort
>                                         |> Async.runWithTimeoutAsync 500
>                                         |> Async.Ignore
> 
>                                     let _locals () = $"port: {availablePort} / 
> retry: {retry} / {_locals ()}"
>                                     try
>                                         let pingObj = {| Ping = true |}
>                                         let! pingResult = pingObj |> sendObj 
> availablePort
>                                         trace Verbose (fun () -> 
> $"Supervisor.awaitCompiler / Ping / result: '%A{pingResult}'") _locals
> 
>                                         match pingResult with
>                                         | Some _ -> inbox.Post (availablePort, 
> true)
>                                         | None -> do! loop (retry + 1)
>                                     with ex ->
>                                         trace Verbose (fun () -> 
> $"Supervisor.awaitCompiler / Ping / ex: {ex |> SpiralSm.format_exception}") 
> _locals
>                                         do! loop (retry + 1)
>                                 }
>                                 do! loop 1
>                         })
>                         l6 = Some workspaceRoot
>                     }
>                 )
>                 |> SpiralRuntime.execute_with_options_async
> 
>             trace Debug (fun () -> $"Supervisor.awaitCompiler / exitCode: 
> {exitCode} / result: {result}") _locals
>             disposable.Dispose ()
>     }, ct)
> 
>     let! serverPort, managed = compiler.Receive ()
> 
>     let connection = 
> HubConnectionBuilder().WithUrl($"http://{host}:{serverPort}").Build ()
>     do! connection.StartAsync () |> Async.AwaitTask
> 
>     let event = Event<_> ()
>     let disposable' = connection.On<string> ("ServerToClientMsg", event.Trigger)
>     let stream =
>         FSharp.Control.AsyncSeq.unfoldAsync
>             (fun () -> async {
>                 let! msg = event.Publish |> Async.AwaitEvent
>                 return Some (msg |> 
> FSharp.Json.Json.deserialize<ClientErrorsRes>, ())
>             })
>             ()
> 
>     let disposable' =
>         new_disposable (fun () ->
>             async {
>                 disposable'.Dispose ()
>                 do! connection.StopAsync () |> Async.AwaitTask
>                 disposable.Dispose ()
>                 if managed
>                 then do!
>                     SpiralNetworking.wait_for_port_access (Some 100) false host 
> serverPort
>                     |> Async.runWithTimeoutAsync 1500
>                     |> Async.Ignore
>             }
>             |> Async.RunSynchronously
>         )
> 
>     return
>         serverPort,
>         stream,
>         ct,
>         disposable'
> }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ### getFilePathFromUri                                                       │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline getFilePathFromUri uri =
>     match System.Uri.TryCreate (uri, System.UriKind.Absolute) with
>     | true, uri -> uri.AbsolutePath |> System.IO.Path.GetFullPath
>     | _ -> failwith "invalid uri"
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ### getCompilerPort                                                          │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline getCompilerPort () =
>     13805
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ### serialize_obj                                                            │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
>     let serializeObj obj =
>         try
>             obj
>             |> FSharp.Json.Json.serialize
>             |> SpiralSm.replace "\\\\" "\\"
>             |> SpiralSm.replace "\\r\\n" "\n"
>             |> SpiralSm.replace "\\n" "\n"
>         with ex ->
>             trace Critical (fun () -> "Supervisor.serialize_obj / obj: %A{obj}")
> _locals
>             ""
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ### Backend                                                                  │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type Backend =
>     | Fsharp
>     | Cuda
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ### buildFile                                                                │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline buildFile backend timeout port cancellationToken path =
>     let rec loop retry = async {
>         let fullPath = path |> System.IO.Path.GetFullPath
>         let fileDir = fullPath |> System.IO.Path.GetDirectoryName
>         let fileName = fullPath |> System.IO.Path.GetFileNameWithoutExtension
>         let! code = fullPath |> SpiralFileSystem.read_all_text_async
> 
>         let stream, disposable = fileDir |> FileSystem.watchDirectory (fun _ -> 
> true)
>         use _ = disposable
> 
>         let struct (token, disposable) = SpiralThreading.new_disposable_token 
> cancellationToken
>         use _ = disposable
> 
>         let port = port |> Option.defaultWith getCompilerPort
>         let! serverPort, errors, ct, disposable = awaitCompiler port (Some 
> token)
>         use _ = disposable
> 
>         let outputFileName =
>             match backend with
>             | Fsharp -> $"{fileName}.fsx"
>             | Cuda -> $"{fileName}.py"
> 
>         let outputContentSeq =
>             stream
>             |> FSharp.Control.AsyncSeq.chooseAsync (function
>                 | _, (FileSystem.FileSystemChange.Changed (path, Some text))
>                     when (path |> System.IO.Path.GetFileName) = outputFileName
>                     ->
>                         // fileDir </> path |> 
> SpiralFileSystem.read_all_text_retry_async
>                         text |> Some |> Async.init
>                 | _ -> None |> Async.init
>             )
>             |> FSharp.Control.AsyncSeq.map (fun content ->
>                 Some (content |> SpiralSm.replace "\r\n" "\n"), None
>             )
> 
>         let inline printErrorData (data : {| uri : string; errors : RString list
> |}) =
>             let fileName = data.uri |> System.IO.Path.GetFileName
>             let errors =
>                 data.errors
>                 |> List.map snd
>                 |> SpiralSm.concat "\n"
>             $"{fileName}:\n{errors}"
> 
>         let errorsSeq =
>             errors
>             |> FSharp.Control.AsyncSeq.choose (fun error ->
>                 match error with
>                 | FatalError message ->
>                     Some (message, error)
>                 | TracedError data ->
>                     Some (data.message, error)
>                 | PackageErrors data when data.errors |> List.isEmpty |> not ->
>                     Some (data |> printErrorData, error)
>                 | TokenizerErrors data when data.errors |> List.isEmpty |> not 
> ->
>                     Some (data |> printErrorData, error)
>                 | ParserErrors data when data.errors |> List.isEmpty |> not ->
>                     Some (data |> printErrorData, error)
>                 | TypeErrors data when data.errors |> List.isEmpty |> not ->
>                     Some (data |> printErrorData, error)
>                 | _ -> None
>             )
>             |> FSharp.Control.AsyncSeq.map (fun (message, error) ->
>                 None, Some (message, error)
>             )
> 
>         let timerSeq =
>             500
>             |> FSharp.Control.AsyncSeq.intervalMs
>             |> FSharp.Control.AsyncSeq.map (fun _ -> None, None)
> 
>         let outputSeq =
>             [[ outputContentSeq; errorsSeq; timerSeq ]]
>             |> FSharp.Control.AsyncSeq.mergeAll
> 
>         let! outputChild =
>             ((None, [[]], 0), outputSeq)
>             ||> FSharp.Control.AsyncSeq.scan (
>                 fun (outputContentResult, errors, typeErrorCount) 
> (outputContent, error) ->
>                     trace Debug (fun () -> $"Supervisor.buildFile / 
> AsyncSeq.scan / outputContent:\n{outputContent |> Option.defaultValue 
> System.String.Empty |> SpiralSm.ellipsis_end 300} / errors: {errors |> 
> serializeObj} / outputContentResult: {outputContentResult} / typeErrorCount: 
> {typeErrorCount} / retry: {retry} / error: {error} / path: {path}") _locals
>                     match outputContent, error with
>                     | Some outputContent, None -> Some outputContent, errors, 
> typeErrorCount
>                     | None, Some (_, FatalError "File main has a type error 
> somewhere in its path.") ->
>                         outputContentResult, errors, typeErrorCount + 1
>                     | None, Some error -> outputContentResult, error :: errors, 
> typeErrorCount
>                     | None, None when typeErrorCount >= 1 ->
>                         outputContentResult, errors, typeErrorCount + 1
>                     | _ -> outputContentResult, errors, typeErrorCount
>             )
>             |> FSharp.Control.AsyncSeq.takeWhileInclusive (fun (outputContent, 
> errors, typeErrorCount) ->
>                 trace Debug (fun () -> $"Supervisor.buildFile / 
> takeWhileInclusive / outputContent:\n{outputContent |> Option.defaultValue 
> System.String.Empty |> SpiralSm.ellipsis_end 300} / errors: {errors |> 
> serializeObj} / typeErrorCount: {typeErrorCount} / retry: {retry} / path: 
> {path}") _locals
>     #if INTERACTIVE
>                 let errorWait = 2
>     #else
>                 let errorWait = 2
>     #endif
>                 match outputContent, errors with
>                 | None, [[]] when typeErrorCount > errorWait -> false
>                 | None, [[]] -> true
>                 | _ -> false
>             )
>             |> FSharp.Control.AsyncSeq.tryLast
>             |> Async.withCancellationToken ct
>             |> Async.catch
>             |> Async.runWithTimeoutAsync timeout
>             |> Async.StartChild
> 
>         // do! Async.Sleep 60
> 
>         let fullPathUri = fullPath |> SpiralFileSystem.normalize_path |> 
> SpiralFileSystem.new_file_uri
> 
>         let fileOpenObj = {| FileOpen = {| uri = fullPathUri; spiText = code |} 
> |}
>         let! _fileOpenResult = fileOpenObj |> sendObj serverPort
> 
>         // do! Async.Sleep 60
> 
>         let backendId =
>             match backend with
>             | Fsharp -> "Fsharp"
>             | Cuda -> "Python + Cuda"
>         let buildFileObj = {| BuildFile = {| uri = fullPathUri; backend = 
> backendId |} |}
>         let! _buildFileResult = buildFileObj |> sendObj serverPort
> 
>         let! result, typeErrorCount =
>             outputChild
>             |> Async.map (function
>                 | Some (Ok (Some (outputCode, errors, typeErrorCount))) ->
>                     (outputCode, errors |> List.distinct |> List.rev), 
> typeErrorCount
>                 | Some (Error ex) ->
>                     trace Critical (fun () -> $"Supervisor.buildFile / error: 
> {ex |> SpiralSm.format_exception} / retry: {retry}") _locals
>                     (None, [[]]), 0
>                 | _ -> (None, [[]]), 0
>             )
>         
>         match result with
>         | None, _ when typeErrorCount > 0 && retry = 0 ->
>             return! loop (retry + 1)
>         | _ ->
>             if fileDir |> SpiralSm.starts_with (workspaceRoot </> "target") then
>                 let fileDirUri = fileDir |> SpiralFileSystem.normalize_path |> 
> SpiralFileSystem.new_file_uri
>                 let fileDeleteObj = {| FileDelete = {| uris = [[| fileDirUri |]]
> |} |}
>                 let! _fileDeleteResult = fileDeleteObj |> sendObj serverPort
>                 ()
> 
>             let outputPath = fileDir </> outputFileName
>             return outputPath, result
>     }
>     loop 0
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ### SpiralInput                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type SpiralInput =
>     | Spi of string * string option
>     | Spir of string
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ### persistCode                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline persistCode (input: {| backend : Backend option; input: SpiralInput; 
> packages: string [[]] |}) = async {
>     let targetDir = workspaceRoot </> "target/spiral_Eval"
> 
>     let packagesDir = targetDir </> "packages"
>     
>     let hashHex = $"%A{input.backend}%A{input.input}" |> SpiralCrypto.hash_text
> 
>     let packageDir = packagesDir </> hashHex
>     packageDir |> System.IO.Directory.CreateDirectory |> ignore
> 
>     let moduleName = "main"
> 
>     let spirModule, spiModule =
>         match input.input with
>         | Spi (spi, Some spir) -> true, true
>         | Spi (spi, None) -> false, true
>         | Spir spir -> true, false
>         |> fun (spir, spi) ->
>             (if spir then $"{moduleName}_real*-" else ""),
>             if spi then moduleName else ""
> 
>     let libLinkTargetPath = workspaceRoot </> "lib/spiral"
>     let libLinkPath = packageDir </> "spiral"
>     
>     let packagesModule =
>         input.packages
>         |> Array.map (fun package ->
>             let path = workspaceRoot </> package
>             let packageName = path |> System.IO.Path.GetFileName
>             let libLinkPath = packageDir </> packageName
>             libLinkPath |> SpiralFileSystem.link_directory path
>             $"{packageName}-"
>         )
>         |> String.concat "\n    "
> 
>     let packageDir' =
>         if input.packages |> Array.isEmpty
>         then workspaceRoot </> "lib"
>         else
>             libLinkPath |> SpiralFileSystem.link_directory libLinkTargetPath
>             packageDir
> 
>     let spiprojPath = packageDir </> "package.spiproj"
>     let spiprojCode =
>         $"""packageDir: {packageDir'}
> packages:
>     |core-
>     spiral-
>     {packagesModule}
> modules:
>     {spirModule}
>     {spiModule}
> """
>     do! spiprojCode |> SpiralFileSystem.write_all_text_exists spiprojPath
> 
>     let spirPath = packageDir </> $"{moduleName}_real.spir"
>     let spiPath = packageDir </> $"{moduleName}.spi"
> 
>     let spirCode, spiCode =
>         match input.input with
>         | Spi (spi, Some spir) -> Some spir, Some spi
>         | Spi (spi, None) -> None, Some spi
>         | Spir spir -> Some spir, None
> 
>     match spirCode with
>     | Some spir -> do! spir |> SpiralFileSystem.write_all_text_exists spirPath
>     | None -> ()
>     match spiCode with
>     | Some spi -> do! spi |> SpiralFileSystem.write_all_text_exists spiPath
>     | None -> ()
> 
>     let spiralPath =
>         match input.input with
>         | Spi _ -> spiPath
>         | Spir _ -> spirPath
>     match input.backend with
>     | None -> return spiralPath, None
>     | Some backend ->
>         let outputFileName =
>             let fileName =
>                 match input.input with
>                 | Spi _ -> moduleName
>                 | Spir _ -> $"{moduleName}_real"
>             match backend with
>             | Fsharp -> $"{fileName}.fsx"
>             | Cuda -> $"{fileName}.py"
>         let outputPath = packageDir </> outputFileName
>         if outputPath |> System.IO.File.Exists |> not
>         then return spiralPath, None
>         else
>             let! oldCode = spiralPath |> SpiralFileSystem.read_all_text_async
>             if oldCode <> (spiCode |> Option.defaultValue (spirCode |> 
> Option.defaultValue ""))
>             then return spiralPath, None
>             else
>                 let! outputCode = outputPath |> 
> SpiralFileSystem.read_all_text_async
>                 return spiralPath, Some (outputPath, outputCode |> 
> SpiralSm.replace "\r\n" "\n")
>     }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ### buildCode                                                                │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let buildCode backend packages isCache timeout cancellationToken input = async {
>     let! mainPath, outputCache =
>         persistCode {| input = input; backend = Some backend; packages = 
> packages |}
>     match outputCache with
>     | Some (outputPath, outputCode) when isCache -> return mainPath, 
> (outputPath, Some outputCode), [[]]
>     | _ ->
>         let! outputPath, (outputCode, errors) = mainPath |> buildFile backend 
> timeout None cancellationToken
>         return mainPath, (outputPath, outputCode), errors
> }
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> """inl app () =
>     console.write_line "text"
>     1i32
> 
> inl main () =
>     app
>     |> dyn
>     |> ignore
> """
> |> fun code -> Spi (code, None)
> |> buildCode Fsharp [[||]] false 15000 None
> |> Async.runWithTimeout 15000
> |> Option.map (fun (_, (_, outputContent), errors) -> outputContent, errors |> 
> List.map fst)
> |> _assertEqual (
>     Some (
>         Some """let rec closure1 () () : unit =
>     let v0 : (string -> unit) = System.Console.WriteLine
>     let v1 : string = "text"
>     v0 v1
> and closure0 () () : int32 =
>     let v0 : unit = ()
>     let v1 : (unit -> unit) = closure1()
>     let v2 : unit = (fun () -> v1 (); v0) ()
>     1
> let v0 : (unit -> int32) = closure0()
> ()
> """,
>         [[]]
>     )
> )
> 
> ╭─[ 8.60s - stdout ]───────────────────────────────────────────────────────────╮
> │ 00:00:16 v #1 async.run_with_timeout_async / { timeout = 180 }          │
> │ 00:00:13 d #1 runtime.execute_with_options_async / { file_name =        │
> │ dotnet; arguments = US5_0                                                    │
> │   ""C:\home\git\polyglot\deps\The-Spiral-Language\The Spiral Language        │
> │ 2\artifacts\bin\The Spiral Language 2\release\Spiral.dll" --port 13805       │
> │ --default-int i32 --default-float f64"; options = { command = dotnet         │
> │ "C:\home\git\polyglot\deps\The-Spiral-Language\The Spiral Language           │
> │ 2\artifacts\bin\The Spiral Language 2\release\Spiral.dll" --port 13805       │
> │ --default-int i32 --default-float f64; cancellation_token = Some             │
> │ System.Threading.CancellationToken; environment_variables = [||]; on_line =  │
> │ Some <fun:buildCode@7-93>; stdin = None; trace = true; working_directory =   │
> │ Some "C:\home\git\polyglot" } }                                              │
> │ 00:00:14 v #2 > 00:00:00 d #1 pwd: C:\home\git\polyglot            │
> │ 00:00:14 v #3 > 00:00:00 d #2 dllPath:                             │
> │ C:\home\git\polyglot\deps\The-Spiral-Language\The Spiral Language            │
> │ 2\artifacts\bin\The Spiral Language 2\release                                │
> │ 00:00:14 v #4 > 00:00:00 d #3 targetDir:                           │
> │ C:\home\git\polyglot\target/spiral_Eval                                      │
> │ 00:00:17 v #2 async.run_with_timeout_async / { timeout = 100 }          │
> │ 00:00:17 v #3 async.run_with_timeout_async / { timeout = 100 }          │
> │ 00:00:17 v #4 async.run_with_timeout_async / { timeout = 100 }          │
> │ 00:00:17 v #5 async.run_with_timeout_async / { timeout = 100 }          │
> │ 00:00:10 d #1 Async.runWithTimeoutAsync / timeout: 500                  │
> │ 00:00:14 v #5 > Starting the Spiral Server. It is bound to:             │
> │ http://localhost:13805                                                       │
> │ 00:00:11 v #2 Supervisor.sendJson / port: 13805 / json: {"Ping":true} / │
> │ result:                                                                      │
> │ 00:00:11 v #3 Supervisor.awaitCompiler / Ping / result: 'Some null' /   │
> │ port: 13805 / retry: 1                                                       │
> │ 00:00:15 v #6 > Server bound to: http://localhost:13805                 │
> │ 00:00:11 d #4 Supervisor.buildFile / takeWhileInclusive /               │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\22ccd04317d5605c65f81c7f777 │
> │ 766f357e85dc69f2d6d04b9dc60aebd08a0d6\main.spi                               │
> │ 00:00:11 d #5 Supervisor.buildFile / AsyncSeq.scan / outputContent:     │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\22ccd04317d5605c65f81c7f777 │
> │ 766f357e85dc69f2d6d04b9dc60aebd08a0d6\main.spi                               │
> │ 00:00:11 d #6 Supervisor.buildFile / takeWhileInclusive /               │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\22ccd04317d5605c65f81c7f777 │
> │ 766f357e85dc69f2d6d04b9dc60aebd08a0d6\main.spi                               │
> │ 00:00:11 v #7 Supervisor.sendJson / port: 13805 / json:                 │
> │ {"FileOpen":{"spiText":"inl app () =\n    console.write_line                 │
> │ \u0022text\u0022\n    1i32\n\ninl main                                       │
> │ ...et/spiral_Eval/packages/22ccd04317d5605c65f81c7f777766f357e85dc69f2d6d04b │
> │ 9dc60aebd08a0d6/main.spi"}} / result:                                        │
> │ 00:00:11 v #8 Supervisor.sendJson / port: 13805 / json:                 │
> │ {"BuildFile":{"backend":"Fsharp","uri":"file:///c:/home/git/polyglot/target/ │
> │ spiral_Eval/packages/22ccd04317d5605c65f81c7f777766f357e85dc69f2d6d04b9dc60a │
> │ ebd08a0d6/main.spi"}} / result:                                              │
> │ 00:00:12 d #9 Supervisor.buildFile / AsyncSeq.scan / outputContent:     │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\22ccd04317d5605c65f81c7f777 │
> │ 766f357e85dc69f2d6d04b9dc60aebd08a0d6\main.spi                               │
> │ 00:00:12 d #10 Supervisor.buildFile / takeWhileInclusive /              │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\22ccd04317d5605c65f81c7f777 │
> │ 766f357e85dc69f2d6d04b9dc60aebd08a0d6\main.spi                               │
> │ 00:00:12 d #11 Supervisor.buildFile / AsyncSeq.scan / outputContent:    │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\22ccd04317d5605c65f81c7f777 │
> │ 766f357e85dc69f2d6d04b9dc60aebd08a0d6\main.spi                               │
> │ 00:00:12 d #12 Supervisor.buildFile / takeWhileInclusive /              │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\22ccd04317d5605c65f81c7f777 │
> │ 766f357e85dc69f2d6d04b9dc60aebd08a0d6\main.spi                               │
> │ 00:00:13 d #13 Supervisor.buildFile / AsyncSeq.scan / outputContent:    │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\22ccd04317d5605c65f81c7f777 │
> │ 766f357e85dc69f2d6d04b9dc60aebd08a0d6\main.spi                               │
> │ 00:00:13 d #14 Supervisor.buildFile / takeWhileInclusive /              │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\22ccd04317d5605c65f81c7f777 │
> │ 766f357e85dc69f2d6d04b9dc60aebd08a0d6\main.spi                               │
> │ 00:00:13 d #15 Supervisor.buildFile / AsyncSeq.scan / outputContent:    │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\22ccd04317d5605c65f81c7f777 │
> │ 766f357e85dc69f2d6d04b9dc60aebd08a0d6\main.spi                               │
> │ 00:00:13 d #16 Supervisor.buildFile / takeWhileInclusive /              │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\22ccd04317d5605c65f81c7f777 │
> │ 766f357e85dc69f2d6d04b9dc60aebd08a0d6\main.spi                               │
> │ 00:00:14 d #17 Supervisor.buildFile / AsyncSeq.scan / outputContent:    │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\22ccd04317d5605c65f81c7f777 │
> │ 766f357e85dc69f2d6d04b9dc60aebd08a0d6\main.spi                               │
> │ 00:00:14 d #18 Supervisor.buildFile / takeWhileInclusive /              │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\22ccd04317d5605c65f81c7f777 │
> │ 766f357e85dc69f2d6d04b9dc60aebd08a0d6\main.spi                               │
> │ 00:00:14 d #19 Supervisor.buildFile / AsyncSeq.scan / outputContent:    │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\22ccd04317d5605c65f81c7f777 │
> │ 766f357e85dc69f2d6d04b9dc60aebd08a0d6\main.spi                               │
> │ 00:00:14 d #20 Supervisor.buildFile / takeWhileInclusive /              │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\22ccd04317d5605c65f81c7f777 │
> │ 766f357e85dc69f2d6d04b9dc60aebd08a0d6\main.spi                               │
> │ 00:00:15 d #21 Supervisor.buildFile / AsyncSeq.scan / outputContent:    │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\22ccd04317d5605c65f81c7f777 │
> │ 766f357e85dc69f2d6d04b9dc60aebd08a0d6\main.spi                               │
> │ 00:00:15 d #22 Supervisor.buildFile / takeWhileInclusive /              │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\22ccd04317d5605c65f81c7f777 │
> │ 766f357e85dc69f2d6d04b9dc60aebd08a0d6\main.spi                               │
> │ 00:00:15 d #23 Supervisor.buildFile / AsyncSeq.scan / outputContent:    │
> │ let rec closure1 () () : unit =                                              │
> │     let v0 : (string -> unit) = System.Console.WriteLine                     │
> │     let v1 : string = "text"                                                 │
> │     v0 v1                                                                    │
> │ and closure0 () () : i...t v0 : unit = ()                                    │
> │     let v1 : (unit -> unit) = closure1()                                     │
> │     let v2 : unit = (fun () -> v1 (); v0) ()                                 │
> │     1                                                                        │
> │ let v0 : (unit -> int32) = closure0()                                        │
> │ ()                                                                           │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\22ccd04317d5605c65f81c7f777 │
> │ 766f357e85dc69f2d6d04b9dc60aebd08a0d6\main.spi                               │
> │ 00:00:15 d #24 Supervisor.buildFile / takeWhileInclusive /              │
> │ outputContent:                                                               │
> │ let rec closure1 () () : unit =                                              │
> │     let v0 : (string -> unit) = System.Console.WriteLine                     │
> │     let v1 : string = "text"                                                 │
> │     v0 v1                                                                    │
> │ and closure0 () () : i...t v0 : unit = ()                                    │
> │     let v1 : (unit -> unit) = closure1()                                     │
> │     let v2 : unit = (fun () -> v1 (); v0) ()                                 │
> │     1                                                                        │
> │ let v0 : (unit -> int32) = closure0()                                        │
> │ ()                                                                           │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\22ccd04317d5605c65f81c7f777 │
> │ 766f357e85dc69f2d6d04b9dc60aebd08a0d6\main.spi                               │
> │ 00:00:17 v #25 Supervisor.sendJson / port: 13805 / json:                │
> │ {"FileDelete":{"uris":[                                                      │
> │ "file:///c:/home/git/polyglot/target/spiral_Eval/packages/22ccd04317d5605c65 │
> │ f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6"]}} / result:                 │
> │ 00:00:24 v #6 async.run_with_timeout_async / { timeout = 100 }          │
> │ 00:00:17 d #26 FileSystem.watchWithFilter / Disposing watch stream /    │
> │ filter: FileName, LastWrite                                                  │
> │ Some                                                                         │
> │   (Some                                                                      │
> │      "let rec closure1 () () : unit =                                        │
> │     let v0 : (string -> unit) = System.Console.WriteLine                     │
> │     let v1 : string = "text"                                                 │
> │     v0 v1                                                                    │
> │ and closure0 () () : int32 =                                                 │
> │     let v0 : unit = ()                                                       │
> │     let v1 : (unit -> unit) = closure1()                                     │
> │     let v2 : unit = (fun () -> v1 (); v0) ()                                 │
> │     1                                                                        │
> │ let v0 : (unit -> int32) = closure0()                                        │
> │ ()                                                                           │
> │ ",                                                                           │
> │    [])                                                                       │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> ""
> |> fun code -> Spi (code, None)
> |> buildCode Fsharp [[||]] false 10000 None
> |> Async.runWithTimeout 10000
> |> Option.map (fun (_, (_, outputContent), errors) -> outputContent, errors |> 
> List.map fst)
> |> _assertEqual (
>     Some (
>         None,
>         [[ "Cannot find `main` in file main." ]]
>     )
> )
> 
> ╭─[ 5.41s - stdout ]───────────────────────────────────────────────────────────╮
> │ 00:00:24 v #7 async.run_with_timeout_async / { timeout = 180 }          │
> │ 00:00:22 d #7 runtime.execute_with_options_async / { file_name =        │
> │ dotnet; arguments = US5_0                                                    │
> │   ""C:\home\git\polyglot\deps\The-Spiral-Language\The Spiral Language        │
> │ 2\artifacts\bin\The Spiral Language 2\release\Spiral.dll" --port 13805       │
> │ --default-int i32 --default-float f64"; options = { command = dotnet         │
> │ "C:\home\git\polyglot\deps\The-Spiral-Language\The Spiral Language           │
> │ 2\artifacts\bin\The Spiral Language 2\release\Spiral.dll" --port 13805       │
> │ --default-int i32 --default-float f64; cancellation_token = Some             │
> │ System.Threading.CancellationToken; environment_variables = [||]; on_line =  │
> │ Some <fun:buildCode@7-93>; stdin = None; trace = true; working_directory =   │
> │ Some "C:\home\git\polyglot" } }                                              │
> │ 00:00:22 v #8 > 00:00:00 d #1 pwd: C:\home\git\polyglot            │
> │ 00:00:22 v #9 > 00:00:00 d #2 dllPath:                             │
> │ C:\home\git\polyglot\deps\The-Spiral-Language\The Spiral Language            │
> │ 2\artifacts\bin\The Spiral Language 2\release                                │
> │ 00:00:22 v #10 > 00:00:00 d #3 targetDir:                          │
> │ C:\home\git\polyglot\target/spiral_Eval                                      │
> │ 00:00:25 v #8 async.run_with_timeout_async / { timeout = 100 }          │
> │ 00:00:25 v #9 async.run_with_timeout_async / { timeout = 100 }          │
> │ 00:00:22 v #11 > Starting the Spiral Server. It is bound to:            │
> │ http://localhost:13805                                                       │
> │ 00:00:25 v #10 async.run_with_timeout_async / { timeout = 100 }         │
> │ 00:00:18 v #27 Supervisor.sendJson / port: 13805 / json: {"Ping":true}  │
> │ / result:                                                                    │
> │ 00:00:18 v #28 Supervisor.awaitCompiler / Ping / result: 'Some null' /  │
> │ port: 13805 / retry: 1                                                       │
> │ 00:00:23 v #12 > Server bound to: http://localhost:13805                │
> │ 00:00:18 d #29 Supervisor.buildFile / takeWhileInclusive /              │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\a65342ccc7da0da967b18d8e705 │
> │ d0260e9a932e5e68c0feb33db55c4d28170aa\main.spi                               │
> │ 00:00:18 d #30 Supervisor.buildFile / AsyncSeq.scan / outputContent:    │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\a65342ccc7da0da967b18d8e705 │
> │ d0260e9a932e5e68c0feb33db55c4d28170aa\main.spi                               │
> │ 00:00:18 d #31 Supervisor.buildFile / takeWhileInclusive /              │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\a65342ccc7da0da967b18d8e705 │
> │ d0260e9a932e5e68c0feb33db55c4d28170aa\main.spi                               │
> │ 00:00:18 v #32 Supervisor.sendJson / port: 13805 / json:                │
> │ {"FileOpen":{"spiText":"","uri":"file:///c:/home/git/polyglot/target/spiral_ │
> │ Eval/packages/a65342ccc7da0da967b18d8e705d0260e9a932e5e68c0feb33db55c4d28170 │
> │ aa/main.spi"}} / result:                                                     │
> │ 00:00:18 v #33 Supervisor.sendJson / port: 13805 / json:                │
> │ {"BuildFile":{"backend":"Fsharp","uri":"file:///c:/home/git/polyglot/target/ │
> │ spiral_Eval/packages/a65342ccc7da0da967b18d8e705d0260e9a932e5e68c0feb33db55c │
> │ 4d28170aa/main.spi"}} / result:                                              │
> │ 00:00:19 d #34 Supervisor.buildFile / AsyncSeq.scan / outputContent:    │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\a65342ccc7da0da967b18d8e705 │
> │ d0260e9a932e5e68c0feb33db55c4d28170aa\main.spi                               │
> │ 00:00:19 d #35 Supervisor.buildFile / takeWhileInclusive /              │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\a65342ccc7da0da967b18d8e705 │
> │ d0260e9a932e5e68c0feb33db55c4d28170aa\main.spi                               │
> │ 00:00:19 d #36 Supervisor.buildFile / AsyncSeq.scan / outputContent:    │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\a65342ccc7da0da967b18d8e705 │
> │ d0260e9a932e5e68c0feb33db55c4d28170aa\main.spi                               │
> │ 00:00:19 d #37 Supervisor.buildFile / takeWhileInclusive /              │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\a65342ccc7da0da967b18d8e705 │
> │ d0260e9a932e5e68c0feb33db55c4d28170aa\main.spi                               │
> │ 00:00:20 d #38 Supervisor.buildFile / AsyncSeq.scan / outputContent:    │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\a65342ccc7da0da967b18d8e705 │
> │ d0260e9a932e5e68c0feb33db55c4d28170aa\main.spi                               │
> │ 00:00:20 d #39 Supervisor.buildFile / takeWhileInclusive /              │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\a65342ccc7da0da967b18d8e705 │
> │ d0260e9a932e5e68c0feb33db55c4d28170aa\main.spi                               │
> │ 00:00:20 d #40 Supervisor.buildFile / AsyncSeq.scan / outputContent:    │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\a65342ccc7da0da967b18d8e705 │
> │ d0260e9a932e5e68c0feb33db55c4d28170aa\main.spi                               │
> │ 00:00:20 d #41 Supervisor.buildFile / takeWhileInclusive /              │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\a65342ccc7da0da967b18d8e705 │
> │ d0260e9a932e5e68c0feb33db55c4d28170aa\main.spi                               │
> │ 00:00:21 d #42 Supervisor.buildFile / AsyncSeq.scan / outputContent:    │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\a65342ccc7da0da967b18d8e705 │
> │ d0260e9a932e5e68c0feb33db55c4d28170aa\main.spi                               │
> │ 00:00:21 d #43 Supervisor.buildFile / takeWhileInclusive /              │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\a65342ccc7da0da967b18d8e705 │
> │ d0260e9a932e5e68c0feb33db55c4d28170aa\main.spi                               │
> │ 00:00:21 d #44 Supervisor.buildFile / AsyncSeq.scan / outputContent:    │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\a65342ccc7da0da967b18d8e705 │
> │ d0260e9a932e5e68c0feb33db55c4d28170aa\main.spi                               │
> │ 00:00:21 d #45 Supervisor.buildFile / takeWhileInclusive /              │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\a65342ccc7da0da967b18d8e705 │
> │ d0260e9a932e5e68c0feb33db55c4d28170aa\main.spi                               │
> │ 00:00:22 d #46 Supervisor.buildFile / AsyncSeq.scan / outputContent:    │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\a65342ccc7da0da967b18d8e705 │
> │ d0260e9a932e5e68c0feb33db55c4d28170aa\main.spi                               │
> │ 00:00:22 d #47 Supervisor.buildFile / takeWhileInclusive /              │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\a65342ccc7da0da967b18d8e705 │
> │ d0260e9a932e5e68c0feb33db55c4d28170aa\main.spi                               │
> │ 00:00:22 d #48 Supervisor.buildFile / AsyncSeq.scan / outputContent:    │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\a65342ccc7da0da967b18d8e705 │
> │ d0260e9a932e5e68c0feb33db55c4d28170aa\main.spi                               │
> │ 00:00:22 d #49 Supervisor.buildFile / takeWhileInclusive /              │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\a65342ccc7da0da967b18d8e705 │
> │ d0260e9a932e5e68c0feb33db55c4d28170aa\main.spi                               │
> │ 00:00:22 d #50 Supervisor.buildFile / AsyncSeq.scan / outputContent:    │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error: Some((Cannot find `main` in file main., FatalError "Cannot find       │
> │ `main` in file main.")) / path:                                              │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\a65342ccc7da0da967b18d8e705 │
> │ d0260e9a932e5e68c0feb33db55c4d28170aa\main.spi                               │
> │ 00:00:22 d #51 Supervisor.buildFile / takeWhileInclusive /              │
> │ outputContent:                                                               │
> │  / errors: [                                                                 │
> │   [                                                                          │
> │     "Cannot find `main` in file main.",                                      │
> │     {                                                                        │
> │       "FatalError": "Cannot find `main` in file main."                       │
> │     }                                                                        │
> │   ]                                                                          │
> │ ] / typeErrorCount: 0 / retry: 0 / path:                                     │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\a65342ccc7da0da967b18d8e705 │
> │ d0260e9a932e5e68c0feb33db55c4d28170aa\main.spi                               │
> │ 00:00:22 v #52 Supervisor.sendJson / port: 13805 / json:                │
> │ {"FileDelete":{"uris":[                                                      │
> │ "file:///c:/home/git/polyglot/target/spiral_Eval/packages/a65342ccc7da0da967 │
> │ b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa"]}} / result:                 │
> │ 00:00:30 v #11 async.run_with_timeout_async / { timeout = 100 }         │
> │ 00:00:23 d #53 FileSystem.watchWithFilter / Disposing watch stream /    │
> │ filter: FileName, LastWrite                                                  │
> │ Some (None, ["Cannot find `main` in file main."])                            │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> """inl main () =
>     1i32 / 0i32
> """
> |> fun code -> Spi (code, None)
> |> buildCode Fsharp [[||]] false 10000 None
> |> Async.runWithTimeout 10000
> |> Option.map (fun (_, (_, outputContent), errors) -> outputContent, errors |> 
> List.map fst)
> |> _assertEqual (
>     Some (
>         None,
>         [[ "An attempt to divide by zero has been detected at compile time." ]]
>     )
> )
> 
> ╭─[ 5.39s - stdout ]───────────────────────────────────────────────────────────╮
> │ 00:00:30 v #12 async.run_with_timeout_async / { timeout = 180 }         │
> │ 00:00:27 d #13 runtime.execute_with_options_async / { file_name =       │
> │ dotnet; arguments = US5_0                                                    │
> │   ""C:\home\git\polyglot\deps\The-Spiral-Language\The Spiral Language        │
> │ 2\artifacts\bin\The Spiral Language 2\release\Spiral.dll" --port 13805       │
> │ --default-int i32 --default-float f64"; options = { command = dotnet         │
> │ "C:\home\git\polyglot\deps\The-Spiral-Language\The Spiral Language           │
> │ 2\artifacts\bin\The Spiral Language 2\release\Spiral.dll" --port 13805       │
> │ --default-int i32 --default-float f64; cancellation_token = Some             │
> │ System.Threading.CancellationToken; environment_variables = [||]; on_line =  │
> │ Some <fun:buildCode@7-93>; stdin = None; trace = true; working_directory =   │
> │ Some "C:\home\git\polyglot" } }                                              │
> │ 00:00:28 v #14 > 00:00:00 d #1 pwd: C:\home\git\polyglot           │
> │ 00:00:28 v #15 > 00:00:00 d #2 dllPath:                            │
> │ C:\home\git\polyglot\deps\The-Spiral-Language\The Spiral Language            │
> │ 2\artifacts\bin\The Spiral Language 2\release                                │
> │ 00:00:28 v #16 > 00:00:00 d #3 targetDir:                          │
> │ C:\home\git\polyglot\target/spiral_Eval                                      │
> │ 00:00:30 v #13 async.run_with_timeout_async / { timeout = 100 }         │
> │ 00:00:30 v #14 async.run_with_timeout_async / { timeout = 100 }         │
> │ 00:00:28 v #17 > Starting the Spiral Server. It is bound to:            │
> │ http://localhost:13805                                                       │
> │ 00:00:31 v #15 async.run_with_timeout_async / { timeout = 100 }         │
> │ 00:00:24 v #54 Supervisor.sendJson / port: 13805 / json: {"Ping":true}  │
> │ / result:                                                                    │
> │ 00:00:24 v #55 Supervisor.awaitCompiler / Ping / result: 'Some null' /  │
> │ port: 13805 / retry: 1                                                       │
> │ 00:00:28 v #18 > Server bound to: http://localhost:13805                │
> │ 00:00:24 d #56 Supervisor.buildFile / takeWhileInclusive /              │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\fef9812d9b06b75b1ab26589e52 │
> │ c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2\main.spi                               │
> │ 00:00:24 d #57 Supervisor.buildFile / AsyncSeq.scan / outputContent:    │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\fef9812d9b06b75b1ab26589e52 │
> │ c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2\main.spi                               │
> │ 00:00:24 d #58 Supervisor.buildFile / takeWhileInclusive /              │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\fef9812d9b06b75b1ab26589e52 │
> │ c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2\main.spi                               │
> │ 00:00:24 v #59 Supervisor.sendJson / port: 13805 / json:                │
> │ {"FileOpen":{"spiText":"inl main () =\n    1i32 /                            │
> │ 0i32\n","uri":"file:///c:/home/git/polyglot/target/spiral_Eval/packages/fef9 │
> │ 812d9b06b75b1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi"}} /   │
> │ result:                                                                      │
> │ 00:00:24 v #60 Supervisor.sendJson / port: 13805 / json:                │
> │ {"BuildFile":{"backend":"Fsharp","uri":"file:///c:/home/git/polyglot/target/ │
> │ spiral_Eval/packages/fef9812d9b06b75b1ab26589e52c6d6ff05910b73ead9e8c4f27f88 │
> │ d2a5cdfb2/main.spi"}} / result:                                              │
> │ 00:00:24 d #61 Supervisor.buildFile / AsyncSeq.scan / outputContent:    │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\fef9812d9b06b75b1ab26589e52 │
> │ c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2\main.spi                               │
> │ 00:00:24 d #62 Supervisor.buildFile / takeWhileInclusive /              │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\fef9812d9b06b75b1ab26589e52 │
> │ c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2\main.spi                               │
> │ 00:00:25 d #63 Supervisor.buildFile / AsyncSeq.scan / outputContent:    │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\fef9812d9b06b75b1ab26589e52 │
> │ c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2\main.spi                               │
> │ 00:00:25 d #64 Supervisor.buildFile / takeWhileInclusive /              │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\fef9812d9b06b75b1ab26589e52 │
> │ c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2\main.spi                               │
> │ 00:00:25 d #65 Supervisor.buildFile / AsyncSeq.scan / outputContent:    │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\fef9812d9b06b75b1ab26589e52 │
> │ c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2\main.spi                               │
> │ 00:00:25 d #66 Supervisor.buildFile / takeWhileInclusive /              │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\fef9812d9b06b75b1ab26589e52 │
> │ c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2\main.spi                               │
> │ 00:00:26 d #67 Supervisor.buildFile / AsyncSeq.scan / outputContent:    │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\fef9812d9b06b75b1ab26589e52 │
> │ c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2\main.spi                               │
> │ 00:00:26 d #68 Supervisor.buildFile / takeWhileInclusive /              │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\fef9812d9b06b75b1ab26589e52 │
> │ c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2\main.spi                               │
> │ 00:00:26 d #69 Supervisor.buildFile / AsyncSeq.scan / outputContent:    │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\fef9812d9b06b75b1ab26589e52 │
> │ c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2\main.spi                               │
> │ 00:00:26 d #70 Supervisor.buildFile / takeWhileInclusive /              │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\fef9812d9b06b75b1ab26589e52 │
> │ c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2\main.spi                               │
> │ 00:00:27 d #71 Supervisor.buildFile / AsyncSeq.scan / outputContent:    │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\fef9812d9b06b75b1ab26589e52 │
> │ c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2\main.spi                               │
> │ 00:00:27 d #72 Supervisor.buildFile / takeWhileInclusive /              │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\fef9812d9b06b75b1ab26589e52 │
> │ c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2\main.spi                               │
> │ 00:00:27 d #73 Supervisor.buildFile / AsyncSeq.scan / outputContent:    │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\fef9812d9b06b75b1ab26589e52 │
> │ c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2\main.spi                               │
> │ 00:00:27 d #74 Supervisor.buildFile / takeWhileInclusive /              │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\fef9812d9b06b75b1ab26589e52 │
> │ c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2\main.spi                               │
> │ 00:00:28 d #75 Supervisor.buildFile / AsyncSeq.scan / outputContent:    │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error: Some((An attempt to divide by zero has been detected at compile       │
> │ time., TracedError                                                           │
> │   { message = "An attempt to divide by zero has been detected at compile     │
> │ time."                                                                       │
> │     trace =                                                                  │
> │      ["Error trace on line: 1, column: 10 in module:                         │
> │ c:/home/git/polyglot/target/spiral_Eval/packages/fef9812d9b06b75b1ab26589e52 │
> │ c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi.                              │
> │ inl main () =                                                                │
> │          ^                                                                   │
> │ ";                                                                           │
> │       "Error trace on line: 2, column: 5 in module:                          │
> │ c:/home/git/polyglot/target/spiral_Eval/packages/fef9812d9b06b75b1ab26589e52 │
> │ c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi.                              │
> │     1i32 / 0i32                                                              │
> │     ^                                                                        │
> │ "] })) / path:                                                               │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\fef9812d9b06b75b1ab26589e52 │
> │ c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2\main.spi                               │
> │ 00:00:28 d #76 Supervisor.buildFile / takeWhileInclusive /              │
> │ outputContent:                                                               │
> │  / errors: [                                                                 │
> │   [                                                                          │
> │     "An attempt to divide by zero has been detected at compile time.",       │
> │     {                                                                        │
> │       "TracedError": {                                                       │
> │         "message": "An attempt to divide by zero has been detected at        │
> │ compile time.",                                                              │
> │         "trace": [                                                           │
> │           "Error trace on line: 1, column: 10 in module:                     │
> │ c:/home/git/polyglot/target/spiral_Eval/packages/fef9812d9b06b75b1ab26589e52 │
> │ c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi.                              │
> │ inl main () =                                                                │
> │          ^                                                                   │
> │ ",                                                                           │
> │           "Error trace on line: 2, column: 5 in module:                      │
> │ c:/home/git/polyglot/target/spiral_Eval/packages/fef9812d9b06b75b1ab26589e52 │
> │ c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi.                              │
> │     1i32 / 0i32                                                              │
> │     ^                                                                        │
> │ "                                                                            │
> │         ]                                                                    │
> │       }                                                                      │
> │     }                                                                        │
> │   ]                                                                          │
> │ ] / typeErrorCount: 0 / retry: 0 / path:                                     │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\fef9812d9b06b75b1ab26589e52 │
> │ c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2\main.spi                               │
> │ 00:00:28 v #77 Supervisor.sendJson / port: 13805 / json:                │
> │ {"FileDelete":{"uris":[                                                      │
> │ "file:///c:/home/git/polyglot/target/spiral_Eval/packages/fef9812d9b06b75b1a │
> │ b26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2"]}} / result:                 │
> │ 00:00:35 v #16 async.run_with_timeout_async / { timeout = 100 }         │
> │ 00:00:28 d #78 FileSystem.watchWithFilter / Disposing watch stream /    │
> │ filter: FileName, LastWrite                                                  │
> │ Some (None, ["An attempt to divide by zero has been detected at compile      │
> │ time."])                                                                     │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> """inl main () =
>     1 + ""
> """
> |> fun code -> Spi (code, None)
> |> buildCode Fsharp [[||]] false 10000 None
> |> Async.runWithTimeout 10000
> |> Option.map (fun (_, (_, outputContent), errors) -> outputContent, errors |> 
> List.map fst)
> |> _assertEqual (
>     Some (
>         None,
>         [[
>             "main.spi:
> Constraint satisfaction error.
> Got: string
> Fails to satisfy: number"
>         ]]
>     )
> )
> 
> ╭─[ 6.02s - stdout ]───────────────────────────────────────────────────────────╮
> │ 00:00:35 v #17 async.run_with_timeout_async / { timeout = 180 }         │
> │ 00:00:33 d #19 runtime.execute_with_options_async / { file_name =       │
> │ dotnet; arguments = US5_0                                                    │
> │   ""C:\home\git\polyglot\deps\The-Spiral-Language\The Spiral Language        │
> │ 2\artifacts\bin\The Spiral Language 2\release\Spiral.dll" --port 13805       │
> │ --default-int i32 --default-float f64"; options = { command = dotnet         │
> │ "C:\home\git\polyglot\deps\The-Spiral-Language\The Spiral Language           │
> │ 2\artifacts\bin\The Spiral Language 2\release\Spiral.dll" --port 13805       │
> │ --default-int i32 --default-float f64; cancellation_token = Some             │
> │ System.Threading.CancellationToken; environment_variables = [||]; on_line =  │
> │ Some <fun:buildCode@7-93>; stdin = None; trace = true; working_directory =   │
> │ Some "C:\home\git\polyglot" } }                                              │
> │ 00:00:33 v #20 > 00:00:00 d #1 pwd: C:\home\git\polyglot           │
> │ 00:00:33 v #21 > 00:00:00 d #2 dllPath:                            │
> │ C:\home\git\polyglot\deps\The-Spiral-Language\The Spiral Language            │
> │ 2\artifacts\bin\The Spiral Language 2\release                                │
> │ 00:00:33 v #22 > 00:00:00 d #3 targetDir:                          │
> │ C:\home\git\polyglot\target/spiral_Eval                                      │
> │ 00:00:36 v #18 async.run_with_timeout_async / { timeout = 100 }         │
> │ 00:00:36 v #19 async.run_with_timeout_async / { timeout = 100 }         │
> │ 00:00:33 v #23 > Starting the Spiral Server. It is bound to:            │
> │ http://localhost:13805                                                       │
> │ 00:00:36 v #20 async.run_with_timeout_async / { timeout = 100 }         │
> │ 00:00:36 v #21 async.run_with_timeout_async / { timeout = 100 }         │
> │ 00:00:29 d #79 Async.runWithTimeoutAsync / timeout: 500                 │
> │ 00:00:30 v #80 Supervisor.sendJson / port: 13805 / json: {"Ping":true}  │
> │ / result:                                                                    │
> │ 00:00:30 v #81 Supervisor.awaitCompiler / Ping / result: 'Some null' /  │
> │ port: 13805 / retry: 1                                                       │
> │ 00:00:34 v #24 > Server bound to: http://localhost:13805                │
> │ 00:00:30 d #82 Supervisor.buildFile / takeWhileInclusive /              │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\c030f84f8e553befcbdd9aabeac │
> │ e67685221d91a46e3655199e42df713504aa0\main.spi                               │
> │ 00:00:30 d #83 Supervisor.buildFile / AsyncSeq.scan / outputContent:    │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\c030f84f8e553befcbdd9aabeac │
> │ e67685221d91a46e3655199e42df713504aa0\main.spi                               │
> │ 00:00:30 d #84 Supervisor.buildFile / takeWhileInclusive /              │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\c030f84f8e553befcbdd9aabeac │
> │ e67685221d91a46e3655199e42df713504aa0\main.spi                               │
> │ 00:00:30 v #85 Supervisor.sendJson / port: 13805 / json:                │
> │ {"FileOpen":{"spiText":"inl main () =\n    1 \u002B                          │
> │ \u0022\u0022\n","uri":"file:///c:/home/git/polyg...et/spiral_Eval/packages/c │
> │ 030f84f8e553befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi"}}  │
> │ / result:                                                                    │
> │ 00:00:30 v #86 Supervisor.sendJson / port: 13805 / json:                │
> │ {"BuildFile":{"backend":"Fsharp","uri":"file:///c:/home/git/polyglot/target/ │
> │ spiral_Eval/packages/c030f84f8e553befcbdd9aabeace67685221d91a46e3655199e42df │
> │ 713504aa0/main.spi"}} / result:                                              │
> │ 00:00:30 d #87 Supervisor.buildFile / AsyncSeq.scan / outputContent:    │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\c030f84f8e553befcbdd9aabeac │
> │ e67685221d91a46e3655199e42df713504aa0\main.spi                               │
> │ 00:00:30 d #88 Supervisor.buildFile / takeWhileInclusive /              │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\c030f84f8e553befcbdd9aabeac │
> │ e67685221d91a46e3655199e42df713504aa0\main.spi                               │
> │ 00:00:31 d #89 Supervisor.buildFile / AsyncSeq.scan / outputContent:    │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\c030f84f8e553befcbdd9aabeac │
> │ e67685221d91a46e3655199e42df713504aa0\main.spi                               │
> │ 00:00:31 d #90 Supervisor.buildFile / takeWhileInclusive /              │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\c030f84f8e553befcbdd9aabeac │
> │ e67685221d91a46e3655199e42df713504aa0\main.spi                               │
> │ 00:00:31 d #91 Supervisor.buildFile / AsyncSeq.scan / outputContent:    │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\c030f84f8e553befcbdd9aabeac │
> │ e67685221d91a46e3655199e42df713504aa0\main.spi                               │
> │ 00:00:31 d #92 Supervisor.buildFile / takeWhileInclusive /              │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\c030f84f8e553befcbdd9aabeac │
> │ e67685221d91a46e3655199e42df713504aa0\main.spi                               │
> │ 00:00:32 d #93 Supervisor.buildFile / AsyncSeq.scan / outputContent:    │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\c030f84f8e553befcbdd9aabeac │
> │ e67685221d91a46e3655199e42df713504aa0\main.spi                               │
> │ 00:00:32 d #94 Supervisor.buildFile / takeWhileInclusive /              │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\c030f84f8e553befcbdd9aabeac │
> │ e67685221d91a46e3655199e42df713504aa0\main.spi                               │
> │ 00:00:32 d #95 Supervisor.buildFile / AsyncSeq.scan / outputContent:    │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\c030f84f8e553befcbdd9aabeac │
> │ e67685221d91a46e3655199e42df713504aa0\main.spi                               │
> │ 00:00:32 d #96 Supervisor.buildFile / takeWhileInclusive /              │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\c030f84f8e553befcbdd9aabeac │
> │ e67685221d91a46e3655199e42df713504aa0\main.spi                               │
> │ 00:00:33 d #97 Supervisor.buildFile / AsyncSeq.scan / outputContent:    │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\c030f84f8e553befcbdd9aabeac │
> │ e67685221d91a46e3655199e42df713504aa0\main.spi                               │
> │ 00:00:33 d #98 Supervisor.buildFile / takeWhileInclusive /              │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\c030f84f8e553befcbdd9aabeac │
> │ e67685221d91a46e3655199e42df713504aa0\main.spi                               │
> │ 00:00:33 d #99 Supervisor.buildFile / AsyncSeq.scan / outputContent:    │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\c030f84f8e553befcbdd9aabeac │
> │ e67685221d91a46e3655199e42df713504aa0\main.spi                               │
> │ 00:00:33 d #100 Supervisor.buildFile / takeWhileInclusive /             │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\c030f84f8e553befcbdd9aabeac │
> │ e67685221d91a46e3655199e42df713504aa0\main.spi                               │
> │ 00:00:34 d #101 Supervisor.buildFile / AsyncSeq.scan / outputContent:   │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\c030f84f8e553befcbdd9aabeac │
> │ e67685221d91a46e3655199e42df713504aa0\main.spi                               │
> │ 00:00:34 d #102 Supervisor.buildFile / takeWhileInclusive /             │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\c030f84f8e553befcbdd9aabeac │
> │ e67685221d91a46e3655199e42df713504aa0\main.spi                               │
> │ 00:00:34 d #103 Supervisor.buildFile / AsyncSeq.scan / outputContent:   │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error: Some((File main has a type error somewhere in its path., FatalError   │
> │ "File main has a type error somewhere in its path.")) / path:                │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\c030f84f8e553befcbdd9aabeac │
> │ e67685221d91a46e3655199e42df713504aa0\main.spi                               │
> │ 00:00:34 d #104 Supervisor.buildFile / takeWhileInclusive /             │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 1 / retry: 0 / path:                         │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\c030f84f8e553befcbdd9aabeac │
> │ e67685221d91a46e3655199e42df713504aa0\main.spi                               │
> │ 00:00:34 d #105 Supervisor.buildFile / AsyncSeq.scan / outputContent:   │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 1 / retry: 0 /       │
> │ error: Some((main.spi:                                                       │
> │ Constraint satisfaction error.                                               │
> │ Got: string                                                                  │
> │ Fails to satisfy: number, TypeErrors                                         │
> │   { errors =                                                                 │
> │      [(({ character = 8                                                      │
> │           line = 1 }, { character = 10                                       │
> │                         line = 1 }),                                         │
> │        "Constraint satisfaction error.                                       │
> │ Got: string                                                                  │
> │ Fails to satisfy: number")]                                                  │
> │     uri =                                                                    │
> │                                                                              │
> │ "file:///c:/home/git/polyglot/target/spiral_Eval/packages/c030f84f8e553befcb │
> │ dd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi" })) / path:         │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\c030f84f8e553befcbdd9aabeac │
> │ e67685221d91a46e3655199e42df713504aa0\main.spi                               │
> │ 00:00:34 d #106 Supervisor.buildFile / takeWhileInclusive /             │
> │ outputContent:                                                               │
> │  / errors: [                                                                 │
> │   [                                                                          │
> │     "main.spi:                                                               │
> │ Constraint satisfaction error.                                               │
> │ Got: string                                                                  │
> │ Fails to satisfy: number",                                                   │
> │     {                                                                        │
> │       "TypeErrors": {                                                        │
> │         "errors": [                                                          │
> │           [                                                                  │
> │             [                                                                │
> │               {                                                              │
> │                 "character": 8,                                              │
> │                 "line": 1                                                    │
> │               },                                                             │
> │               {                                                              │
> │                 "character": 10,                                             │
> │                 "line": 1                                                    │
> │               }                                                              │
> │             ],                                                               │
> │             "Constraint satisfaction error.                                  │
> │ Got: string                                                                  │
> │ Fails to satisfy: number"                                                    │
> │           ]                                                                  │
> │         ],                                                                   │
> │         "uri":                                                               │
> │ "file:///c:/home/git/polyglot/target/spiral_Eval/packages/c030f84f8e553befcb │
> │ dd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi"                     │
> │       }                                                                      │
> │     }                                                                        │
> │   ]                                                                          │
> │ ] / typeErrorCount: 1 / retry: 0 / path:                                     │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\c030f84f8e553befcbdd9aabeac │
> │ e67685221d91a46e3655199e42df713504aa0\main.spi                               │
> │ 00:00:41 v #22 async.run_with_timeout_async / { timeout = 180 }         │
> │ 00:00:34 d #107 Supervisor.buildFile / takeWhileInclusive /             │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 1 / path:                         │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\c030f84f8e553befcbdd9aabeac │
> │ e67685221d91a46e3655199e42df713504aa0\main.spi                               │
> │ 00:00:34 d #108 Supervisor.buildFile / AsyncSeq.scan / outputContent:   │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 1 /       │
> │ error:  / path:                                                              │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\c030f84f8e553befcbdd9aabeac │
> │ e67685221d91a46e3655199e42df713504aa0\main.spi                               │
> │ 00:00:34 d #109 Supervisor.buildFile / takeWhileInclusive /             │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 1 / path:                         │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\c030f84f8e553befcbdd9aabeac │
> │ e67685221d91a46e3655199e42df713504aa0\main.spi                               │
> │ 00:00:34 v #110 Supervisor.sendJson / port: 13805 / json:               │
> │ {"FileOpen":{"spiText":"inl main () =\n    1 \u002B                          │
> │ \u0022\u0022\n","uri":"file:///c:/home/git/polyg...et/spiral_Eval/packages/c │
> │ 030f84f8e553befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi"}}  │
> │ / result:                                                                    │
> │ 00:00:34 v #111 Supervisor.sendJson / port: 13805 / json:               │
> │ {"BuildFile":{"backend":"Fsharp","uri":"file:///c:/home/git/polyglot/target/ │
> │ spiral_Eval/packages/c030f84f8e553befcbdd9aabeace67685221d91a46e3655199e42df │
> │ 713504aa0/main.spi"}} / result:                                              │
> │ 00:00:34 d #112 Supervisor.buildFile / AsyncSeq.scan / outputContent:   │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 1 /       │
> │ error: Some((main.spi:                                                       │
> │ Constraint satisfaction error.                                               │
> │ Got: string                                                                  │
> │ Fails to satisfy: number, TypeErrors                                         │
> │   { errors =                                                                 │
> │      [(({ character = 8                                                      │
> │           line = 1 }, { character = 10                                       │
> │                         line = 1 }),                                         │
> │        "Constraint satisfaction error.                                       │
> │ Got: string                                                                  │
> │ Fails to satisfy: number")]                                                  │
> │     uri =                                                                    │
> │                                                                              │
> │ "file:///c:/home/git/polyglot/target/spiral_Eval/packages/c030f84f8e553befcb │
> │ dd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi" })) / path:         │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\c030f84f8e553befcbdd9aabeac │
> │ e67685221d91a46e3655199e42df713504aa0\main.spi                               │
> │ 00:00:34 d #113 Supervisor.buildFile / takeWhileInclusive /             │
> │ outputContent:                                                               │
> │  / errors: [                                                                 │
> │   [                                                                          │
> │     "main.spi:                                                               │
> │ Constraint satisfaction error.                                               │
> │ Got: string                                                                  │
> │ Fails to satisfy: number",                                                   │
> │     {                                                                        │
> │       "TypeErrors": {                                                        │
> │         "errors": [                                                          │
> │           [                                                                  │
> │             [                                                                │
> │               {                                                              │
> │                 "character": 8,                                              │
> │                 "line": 1                                                    │
> │               },                                                             │
> │               {                                                              │
> │                 "character": 10,                                             │
> │                 "line": 1                                                    │
> │               }                                                              │
> │             ],                                                               │
> │             "Constraint satisfaction error.                                  │
> │ Got: string                                                                  │
> │ Fails to satisfy: number"                                                    │
> │           ]                                                                  │
> │         ],                                                                   │
> │         "uri":                                                               │
> │ "file:///c:/home/git/polyglot/target/spiral_Eval/packages/c030f84f8e553befcb │
> │ dd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi"                     │
> │       }                                                                      │
> │     }                                                                        │
> │   ]                                                                          │
> │ ] / typeErrorCount: 0 / retry: 1 / path:                                     │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\c030f84f8e553befcbdd9aabeac │
> │ e67685221d91a46e3655199e42df713504aa0\main.spi                               │
> │ 00:00:34 v #114 Supervisor.sendJson / port: 13805 / json:               │
> │ {"FileDelete":{"uris":[                                                      │
> │ "file:///c:/home/git/polyglot/target/spiral_Eval/packages/c030f84f8e553befcb │
> │ dd9aabeace67685221d91a46e3655199e42df713504aa0"]}} / result:                 │
> │ 00:00:34 d #115 FileSystem.watchWithFilter / Disposing watch stream /   │
> │ filter: FileName, LastWrite                                                  │
> │ 00:00:41 v #23 async.run_with_timeout_async / { timeout = 100 }         │
> │ 00:00:34 d #116 FileSystem.watchWithFilter / Disposing watch stream /   │
> │ filter: FileName, LastWrite                                                  │
> │ Some (None, ["main.spi:                                                      │
> │ Constraint satisfaction error.                                               │
> │ Got: string                                                                  │
> │ Fails to satisfy: number"])                                                  │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> """inl main () =
>     x + y
> """
> |> fun code -> Spi (code, None)
> |> buildCode Fsharp [[||]] false 10000 None
> |> Async.runWithTimeout 10000
> |> Option.map (fun (_, (_, outputContent), errors) -> outputContent, errors |> 
> List.map fst)
> |> _assertEqual (
>     Some (
>         None,
>         [[
>             "main.spi:
> Unbound variable: x.
> Unbound variable: y."
>         ]]
>     )
> )
> 
> ╭─[ 5.63s - stdout ]───────────────────────────────────────────────────────────╮
> │ 00:00:41 v #24 async.run_with_timeout_async / { timeout = 180 }         │
> │ 00:00:39 d #25 runtime.execute_with_options_async / { file_name =       │
> │ dotnet; arguments = US5_0                                                    │
> │   ""C:\home\git\polyglot\deps\The-Spiral-Language\The Spiral Language        │
> │ 2\artifacts\bin\The Spiral Language 2\release\Spiral.dll" --port 13805       │
> │ --default-int i32 --default-float f64"; options = { command = dotnet         │
> │ "C:\home\git\polyglot\deps\The-Spiral-Language\The Spiral Language           │
> │ 2\artifacts\bin\The Spiral Language 2\release\Spiral.dll" --port 13805       │
> │ --default-int i32 --default-float f64; cancellation_token = Some             │
> │ System.Threading.CancellationToken; environment_variables = [||]; on_line =  │
> │ Some <fun:buildCode@7-93>; stdin = None; trace = true; working_directory =   │
> │ Some "C:\home\git\polyglot" } }                                              │
> │ 00:00:39 v #26 > 00:00:00 d #1 pwd: C:\home\git\polyglot           │
> │ 00:00:39 v #27 > 00:00:00 d #2 dllPath:                            │
> │ C:\home\git\polyglot\deps\The-Spiral-Language\The Spiral Language            │
> │ 2\artifacts\bin\The Spiral Language 2\release                                │
> │ 00:00:39 v #28 > 00:00:00 d #3 targetDir:                          │
> │ C:\home\git\polyglot\target/spiral_Eval                                      │
> │ 00:00:42 v #25 async.run_with_timeout_async / { timeout = 100 }         │
> │ 00:00:42 v #26 async.run_with_timeout_async / { timeout = 100 }         │
> │ 00:00:39 v #29 > Starting the Spiral Server. It is bound to:            │
> │ http://localhost:13805                                                       │
> │ 00:00:42 v #27 async.run_with_timeout_async / { timeout = 100 }         │
> │ 00:00:35 v #117 Supervisor.sendJson / port: 13805 / json: {"Ping":true} │
> │ / result:                                                                    │
> │ 00:00:35 v #118 Supervisor.awaitCompiler / Ping / result: 'Some null' / │
> │ port: 13805 / retry: 1                                                       │
> │ 00:00:40 v #30 > Server bound to: http://localhost:13805                │
> │ 00:00:35 d #119 Supervisor.buildFile / takeWhileInclusive /             │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\6cdeec507f9de5ba9c8429cfa70 │
> │ 49b777a622aa3bf7333b151c767fde35dc5d1\main.spi                               │
> │ 00:00:35 d #120 Supervisor.buildFile / AsyncSeq.scan / outputContent:   │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\6cdeec507f9de5ba9c8429cfa70 │
> │ 49b777a622aa3bf7333b151c767fde35dc5d1\main.spi                               │
> │ 00:00:35 d #121 Supervisor.buildFile / takeWhileInclusive /             │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\6cdeec507f9de5ba9c8429cfa70 │
> │ 49b777a622aa3bf7333b151c767fde35dc5d1\main.spi                               │
> │ 00:00:35 v #122 Supervisor.sendJson / port: 13805 / json:               │
> │ {"FileOpen":{"spiText":"inl main () =\n    x \u002B                          │
> │ y\n","uri":"file:///c:/home/git/polyglot/target/spiral_Eval/packages/6cdeec5 │
> │ 07f9de5ba9c8429cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi"}} /      │
> │ result:                                                                      │
> │ 00:00:35 v #123 Supervisor.sendJson / port: 13805 / json:               │
> │ {"BuildFile":{"backend":"Fsharp","uri":"file:///c:/home/git/polyglot/target/ │
> │ spiral_Eval/packages/6cdeec507f9de5ba9c8429cfa7049b777a622aa3bf7333b151c767f │
> │ de35dc5d1/main.spi"}} / result:                                              │
> │ 00:00:36 d #124 Supervisor.buildFile / AsyncSeq.scan / outputContent:   │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\6cdeec507f9de5ba9c8429cfa70 │
> │ 49b777a622aa3bf7333b151c767fde35dc5d1\main.spi                               │
> │ 00:00:36 d #125 Supervisor.buildFile / takeWhileInclusive /             │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\6cdeec507f9de5ba9c8429cfa70 │
> │ 49b777a622aa3bf7333b151c767fde35dc5d1\main.spi                               │
> │ 00:00:36 d #126 Supervisor.buildFile / AsyncSeq.scan / outputContent:   │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\6cdeec507f9de5ba9c8429cfa70 │
> │ 49b777a622aa3bf7333b151c767fde35dc5d1\main.spi                               │
> │ 00:00:36 d #127 Supervisor.buildFile / takeWhileInclusive /             │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\6cdeec507f9de5ba9c8429cfa70 │
> │ 49b777a622aa3bf7333b151c767fde35dc5d1\main.spi                               │
> │ 00:00:37 d #128 Supervisor.buildFile / AsyncSeq.scan / outputContent:   │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\6cdeec507f9de5ba9c8429cfa70 │
> │ 49b777a622aa3bf7333b151c767fde35dc5d1\main.spi                               │
> │ 00:00:37 d #129 Supervisor.buildFile / takeWhileInclusive /             │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\6cdeec507f9de5ba9c8429cfa70 │
> │ 49b777a622aa3bf7333b151c767fde35dc5d1\main.spi                               │
> │ 00:00:37 d #130 Supervisor.buildFile / AsyncSeq.scan / outputContent:   │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\6cdeec507f9de5ba9c8429cfa70 │
> │ 49b777a622aa3bf7333b151c767fde35dc5d1\main.spi                               │
> │ 00:00:37 d #131 Supervisor.buildFile / takeWhileInclusive /             │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\6cdeec507f9de5ba9c8429cfa70 │
> │ 49b777a622aa3bf7333b151c767fde35dc5d1\main.spi                               │
> │ 00:00:38 d #132 Supervisor.buildFile / AsyncSeq.scan / outputContent:   │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\6cdeec507f9de5ba9c8429cfa70 │
> │ 49b777a622aa3bf7333b151c767fde35dc5d1\main.spi                               │
> │ 00:00:38 d #133 Supervisor.buildFile / takeWhileInclusive /             │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\6cdeec507f9de5ba9c8429cfa70 │
> │ 49b777a622aa3bf7333b151c767fde35dc5d1\main.spi                               │
> │ 00:00:38 d #134 Supervisor.buildFile / AsyncSeq.scan / outputContent:   │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\6cdeec507f9de5ba9c8429cfa70 │
> │ 49b777a622aa3bf7333b151c767fde35dc5d1\main.spi                               │
> │ 00:00:38 d #135 Supervisor.buildFile / takeWhileInclusive /             │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\6cdeec507f9de5ba9c8429cfa70 │
> │ 49b777a622aa3bf7333b151c767fde35dc5d1\main.spi                               │
> │ 00:00:39 d #136 Supervisor.buildFile / AsyncSeq.scan / outputContent:   │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\6cdeec507f9de5ba9c8429cfa70 │
> │ 49b777a622aa3bf7333b151c767fde35dc5d1\main.spi                               │
> │ 00:00:39 d #137 Supervisor.buildFile / takeWhileInclusive /             │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\6cdeec507f9de5ba9c8429cfa70 │
> │ 49b777a622aa3bf7333b151c767fde35dc5d1\main.spi                               │
> │ 00:00:39 d #138 Supervisor.buildFile / AsyncSeq.scan / outputContent:   │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error: Some((File main has a type error somewhere in its path., FatalError   │
> │ "File main has a type error somewhere in its path.")) / path:                │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\6cdeec507f9de5ba9c8429cfa70 │
> │ 49b777a622aa3bf7333b151c767fde35dc5d1\main.spi                               │
> │ 00:00:39 d #139 Supervisor.buildFile / takeWhileInclusive /             │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 1 / retry: 0 / path:                         │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\6cdeec507f9de5ba9c8429cfa70 │
> │ 49b777a622aa3bf7333b151c767fde35dc5d1\main.spi                               │
> │ 00:00:39 d #140 Supervisor.buildFile / AsyncSeq.scan / outputContent:   │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 1 / retry: 0 /       │
> │ error: Some((main.spi:                                                       │
> │ Unbound variable: x.                                                         │
> │ Unbound variable: y., TypeErrors                                             │
> │   { errors =                                                                 │
> │      [(({ character = 4                                                      │
> │           line = 1 }, { character = 5                                        │
> │                         line = 1 }), "Unbound variable: x.");                │
> │       (({ character = 8                                                      │
> │           line = 1 }, { character = 9                                        │
> │                         line = 1 }), "Unbound variable: y.")]                │
> │     uri =                                                                    │
> │                                                                              │
> │ "file:///c:/home/git/polyglot/target/spiral_Eval/packages/6cdeec507f9de5ba9c │
> │ 8429cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi" })) / path:         │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\6cdeec507f9de5ba9c8429cfa70 │
> │ 49b777a622aa3bf7333b151c767fde35dc5d1\main.spi                               │
> │ 00:00:39 d #141 Supervisor.buildFile / takeWhileInclusive /             │
> │ outputContent:                                                               │
> │  / errors: [                                                                 │
> │   [                                                                          │
> │     "main.spi:                                                               │
> │ Unbound variable: x.                                                         │
> │ Unbound variable: y.",                                                       │
> │     {                                                                        │
> │       "TypeErrors": {                                                        │
> │         "errors": [                                                          │
> │           [                                                                  │
> │             [                                                                │
> │               {                                                              │
> │                 "character": 4,                                              │
> │                 "line": 1                                                    │
> │               },                                                             │
> │               {                                                              │
> │                 "character": 5,                                              │
> │                 "line": 1                                                    │
> │               }                                                              │
> │             ],                                                               │
> │             "Unbound variable: x."                                           │
> │           ],                                                                 │
> │           [                                                                  │
> │             [                                                                │
> │               {                                                              │
> │                 "character": 8,                                              │
> │                 "line": 1                                                    │
> │               },                                                             │
> │               {                                                              │
> │                 "character": 9,                                              │
> │                 "line": 1                                                    │
> │               }                                                              │
> │             ],                                                               │
> │             "Unbound variable: y."                                           │
> │           ]                                                                  │
> │         ],                                                                   │
> │         "uri":                                                               │
> │ "file:///c:/home/git/polyglot/target/spiral_Eval/packages/6cdeec507f9de5ba9c │
> │ 8429cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi"                     │
> │       }                                                                      │
> │     }                                                                        │
> │   ]                                                                          │
> │ ] / typeErrorCount: 1 / retry: 0 / path:                                     │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\6cdeec507f9de5ba9c8429cfa70 │
> │ 49b777a622aa3bf7333b151c767fde35dc5d1\main.spi                               │
> │ 00:00:46 v #28 async.run_with_timeout_async / { timeout = 180 }         │
> │ 00:00:39 d #142 Supervisor.buildFile / takeWhileInclusive /             │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 1 / path:                         │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\6cdeec507f9de5ba9c8429cfa70 │
> │ 49b777a622aa3bf7333b151c767fde35dc5d1\main.spi                               │
> │ 00:00:39 d #143 Supervisor.buildFile / AsyncSeq.scan / outputContent:   │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 1 /       │
> │ error:  / path:                                                              │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\6cdeec507f9de5ba9c8429cfa70 │
> │ 49b777a622aa3bf7333b151c767fde35dc5d1\main.spi                               │
> │ 00:00:39 d #144 Supervisor.buildFile / takeWhileInclusive /             │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 1 / path:                         │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\6cdeec507f9de5ba9c8429cfa70 │
> │ 49b777a622aa3bf7333b151c767fde35dc5d1\main.spi                               │
> │ 00:00:39 v #145 Supervisor.sendJson / port: 13805 / json:               │
> │ {"FileOpen":{"spiText":"inl main () =\n    x \u002B                          │
> │ y\n","uri":"file:///c:/home/git/polyglot/target/spiral_Eval/packages/6cdeec5 │
> │ 07f9de5ba9c8429cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi"}} /      │
> │ result:                                                                      │
> │ 00:00:39 v #146 Supervisor.sendJson / port: 13805 / json:               │
> │ {"BuildFile":{"backend":"Fsharp","uri":"file:///c:/home/git/polyglot/target/ │
> │ spiral_Eval/packages/6cdeec507f9de5ba9c8429cfa7049b777a622aa3bf7333b151c767f │
> │ de35dc5d1/main.spi"}} / result:                                              │
> │ 00:00:39 d #147 Supervisor.buildFile / AsyncSeq.scan / outputContent:   │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 1 /       │
> │ error: Some((main.spi:                                                       │
> │ Unbound variable: x.                                                         │
> │ Unbound variable: y., TypeErrors                                             │
> │   { errors =                                                                 │
> │      [(({ character = 4                                                      │
> │           line = 1 }, { character = 5                                        │
> │                         line = 1 }), "Unbound variable: x.");                │
> │       (({ character = 8                                                      │
> │           line = 1 }, { character = 9                                        │
> │                         line = 1 }), "Unbound variable: y.")]                │
> │     uri =                                                                    │
> │                                                                              │
> │ "file:///c:/home/git/polyglot/target/spiral_Eval/packages/6cdeec507f9de5ba9c │
> │ 8429cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi" })) / path:         │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\6cdeec507f9de5ba9c8429cfa70 │
> │ 49b777a622aa3bf7333b151c767fde35dc5d1\main.spi                               │
> │ 00:00:39 d #148 Supervisor.buildFile / takeWhileInclusive /             │
> │ outputContent:                                                               │
> │  / errors: [                                                                 │
> │   [                                                                          │
> │     "main.spi:                                                               │
> │ Unbound variable: x.                                                         │
> │ Unbound variable: y.",                                                       │
> │     {                                                                        │
> │       "TypeErrors": {                                                        │
> │         "errors": [                                                          │
> │           [                                                                  │
> │             [                                                                │
> │               {                                                              │
> │                 "character": 4,                                              │
> │                 "line": 1                                                    │
> │               },                                                             │
> │               {                                                              │
> │                 "character": 5,                                              │
> │                 "line": 1                                                    │
> │               }                                                              │
> │             ],                                                               │
> │             "Unbound variable: x."                                           │
> │           ],                                                                 │
> │           [                                                                  │
> │             [                                                                │
> │               {                                                              │
> │                 "character": 8,                                              │
> │                 "line": 1                                                    │
> │               },                                                             │
> │               {                                                              │
> │                 "character": 9,                                              │
> │                 "line": 1                                                    │
> │               }                                                              │
> │             ],                                                               │
> │             "Unbound variable: y."                                           │
> │           ]                                                                  │
> │         ],                                                                   │
> │         "uri":                                                               │
> │ "file:///c:/home/git/polyglot/target/spiral_Eval/packages/6cdeec507f9de5ba9c │
> │ 8429cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi"                     │
> │       }                                                                      │
> │     }                                                                        │
> │   ]                                                                          │
> │ ] / typeErrorCount: 0 / retry: 1 / path:                                     │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\6cdeec507f9de5ba9c8429cfa70 │
> │ 49b777a622aa3bf7333b151c767fde35dc5d1\main.spi                               │
> │ 00:00:39 v #149 Supervisor.sendJson / port: 13805 / json:               │
> │ {"FileDelete":{"uris":[                                                      │
> │ "file:///c:/home/git/polyglot/target/spiral_Eval/packages/6cdeec507f9de5ba9c │
> │ 8429cfa7049b777a622aa3bf7333b151c767fde35dc5d1"]}} / result:                 │
> │ 00:00:40 d #150 FileSystem.watchWithFilter / Disposing watch stream /   │
> │ filter: FileName, LastWrite                                                  │
> │ 00:00:47 v #29 async.run_with_timeout_async / { timeout = 100 }         │
> │ 00:00:40 d #151 FileSystem.watchWithFilter / Disposing watch stream /   │
> │ filter: FileName, LastWrite                                                  │
> │ Some (None, ["main.spi:                                                      │
> │ Unbound variable: x.                                                         │
> │ Unbound variable: y."])                                                      │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> """
> inl main () =
>     real
>         inl unbox_real forall a. (obj : a) : a =
>             typecase obj with
>             | _ => obj
>         unbox_real ()
>     ()
> """
> |> fun code -> Spi (code, None)
> |> buildCode Fsharp [[||]] false 10000 None
> |> Async.runWithTimeout 10000
> |> Option.map (fun (_, (_, outputContent), errors) -> outputContent, errors |> 
> List.map fst)
> |> _assertEqual (
>     Some (
>         None,
>         [[ "Cannot apply a forall with a term." ]]
>     )
> )
> 
> ╭─[ 5.40s - stdout ]───────────────────────────────────────────────────────────╮
> │ 00:00:47 v #30 async.run_with_timeout_async / { timeout = 180 }         │
> │ 00:00:44 d #31 runtime.execute_with_options_async / { file_name =       │
> │ dotnet; arguments = US5_0                                                    │
> │   ""C:\home\git\polyglot\deps\The-Spiral-Language\The Spiral Language        │
> │ 2\artifacts\bin\The Spiral Language 2\release\Spiral.dll" --port 13805       │
> │ --default-int i32 --default-float f64"; options = { command = dotnet         │
> │ "C:\home\git\polyglot\deps\The-Spiral-Language\The Spiral Language           │
> │ 2\artifacts\bin\The Spiral Language 2\release\Spiral.dll" --port 13805       │
> │ --default-int i32 --default-float f64; cancellation_token = Some             │
> │ System.Threading.CancellationToken; environment_variables = [||]; on_line =  │
> │ Some <fun:buildCode@7-93>; stdin = None; trace = true; working_directory =   │
> │ Some "C:\home\git\polyglot" } }                                              │
> │ 00:00:45 v #32 > 00:00:00 d #1 pwd: C:\home\git\polyglot           │
> │ 00:00:45 v #33 > 00:00:00 d #2 dllPath:                            │
> │ C:\home\git\polyglot\deps\The-Spiral-Language\The Spiral Language            │
> │ 2\artifacts\bin\The Spiral Language 2\release                                │
> │ 00:00:45 v #34 > 00:00:00 d #3 targetDir:                          │
> │ C:\home\git\polyglot\target/spiral_Eval                                      │
> │ 00:00:47 v #31 async.run_with_timeout_async / { timeout = 100 }         │
> │ 00:00:48 v #32 async.run_with_timeout_async / { timeout = 100 }         │
> │ 00:00:45 v #35 > Starting the Spiral Server. It is bound to:            │
> │ http://localhost:13805                                                       │
> │ 00:00:48 v #33 async.run_with_timeout_async / { timeout = 100 }         │
> │ 00:00:41 v #152 Supervisor.sendJson / port: 13805 / json: {"Ping":true} │
> │ / result:                                                                    │
> │ 00:00:41 v #153 Supervisor.awaitCompiler / Ping / result: 'Some null' / │
> │ port: 13805 / retry: 1                                                       │
> │ 00:00:45 v #36 > Server bound to: http://localhost:13805                │
> │ 00:00:41 d #154 Supervisor.buildFile / takeWhileInclusive /             │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\667528659dc2e5af51a6ec17f17 │
> │ 74bd7ffff5b5a47e4e117eec78e740987f29a\main.spi                               │
> │ 00:00:41 d #155 Supervisor.buildFile / AsyncSeq.scan / outputContent:   │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\667528659dc2e5af51a6ec17f17 │
> │ 74bd7ffff5b5a47e4e117eec78e740987f29a\main.spi                               │
> │ 00:00:41 d #156 Supervisor.buildFile / takeWhileInclusive /             │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\667528659dc2e5af51a6ec17f17 │
> │ 74bd7ffff5b5a47e4e117eec78e740987f29a\main.spi                               │
> │ 00:00:41 v #157 Supervisor.sendJson / port: 13805 / json:               │
> │ {"FileOpen":{"spiText":"\ninl main () =\n    real\n        inl unbox_real    │
> │ forall a. (obj : a) : a                                                      │
> │ =\...et/spiral_Eval/packages/667528659dc2e5af51a6ec17f1774bd7ffff5b5a47e4e11 │
> │ 7eec78e740987f29a/main.spi"}} / result:                                      │
> │ 00:00:41 v #158 Supervisor.sendJson / port: 13805 / json:               │
> │ {"BuildFile":{"backend":"Fsharp","uri":"file:///c:/home/git/polyglot/target/ │
> │ spiral_Eval/packages/667528659dc2e5af51a6ec17f1774bd7ffff5b5a47e4e117eec78e7 │
> │ 40987f29a/main.spi"}} / result:                                              │
> │ 00:00:41 d #159 Supervisor.buildFile / AsyncSeq.scan / outputContent:   │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\667528659dc2e5af51a6ec17f17 │
> │ 74bd7ffff5b5a47e4e117eec78e740987f29a\main.spi                               │
> │ 00:00:41 d #160 Supervisor.buildFile / takeWhileInclusive /             │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\667528659dc2e5af51a6ec17f17 │
> │ 74bd7ffff5b5a47e4e117eec78e740987f29a\main.spi                               │
> │ 00:00:42 d #161 Supervisor.buildFile / AsyncSeq.scan / outputContent:   │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\667528659dc2e5af51a6ec17f17 │
> │ 74bd7ffff5b5a47e4e117eec78e740987f29a\main.spi                               │
> │ 00:00:42 d #162 Supervisor.buildFile / takeWhileInclusive /             │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\667528659dc2e5af51a6ec17f17 │
> │ 74bd7ffff5b5a47e4e117eec78e740987f29a\main.spi                               │
> │ 00:00:42 d #163 Supervisor.buildFile / AsyncSeq.scan / outputContent:   │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\667528659dc2e5af51a6ec17f17 │
> │ 74bd7ffff5b5a47e4e117eec78e740987f29a\main.spi                               │
> │ 00:00:42 d #164 Supervisor.buildFile / takeWhileInclusive /             │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\667528659dc2e5af51a6ec17f17 │
> │ 74bd7ffff5b5a47e4e117eec78e740987f29a\main.spi                               │
> │ 00:00:43 d #165 Supervisor.buildFile / AsyncSeq.scan / outputContent:   │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\667528659dc2e5af51a6ec17f17 │
> │ 74bd7ffff5b5a47e4e117eec78e740987f29a\main.spi                               │
> │ 00:00:43 d #166 Supervisor.buildFile / takeWhileInclusive /             │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\667528659dc2e5af51a6ec17f17 │
> │ 74bd7ffff5b5a47e4e117eec78e740987f29a\main.spi                               │
> │ 00:00:43 d #167 Supervisor.buildFile / AsyncSeq.scan / outputContent:   │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\667528659dc2e5af51a6ec17f17 │
> │ 74bd7ffff5b5a47e4e117eec78e740987f29a\main.spi                               │
> │ 00:00:43 d #168 Supervisor.buildFile / takeWhileInclusive /             │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\667528659dc2e5af51a6ec17f17 │
> │ 74bd7ffff5b5a47e4e117eec78e740987f29a\main.spi                               │
> │ 00:00:44 d #169 Supervisor.buildFile / AsyncSeq.scan / outputContent:   │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\667528659dc2e5af51a6ec17f17 │
> │ 74bd7ffff5b5a47e4e117eec78e740987f29a\main.spi                               │
> │ 00:00:44 d #170 Supervisor.buildFile / takeWhileInclusive /             │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\667528659dc2e5af51a6ec17f17 │
> │ 74bd7ffff5b5a47e4e117eec78e740987f29a\main.spi                               │
> │ 00:00:44 d #171 Supervisor.buildFile / AsyncSeq.scan / outputContent:   │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\667528659dc2e5af51a6ec17f17 │
> │ 74bd7ffff5b5a47e4e117eec78e740987f29a\main.spi                               │
> │ 00:00:44 d #172 Supervisor.buildFile / takeWhileInclusive /             │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\667528659dc2e5af51a6ec17f17 │
> │ 74bd7ffff5b5a47e4e117eec78e740987f29a\main.spi                               │
> │ 00:00:45 d #173 Supervisor.buildFile / AsyncSeq.scan / outputContent:   │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error: Some((Cannot apply a forall with a term., TracedError                 │
> │   { message = "Cannot apply a forall with a term."                           │
> │     trace =                                                                  │
> │      ["Error trace on line: 2, column: 10 in module:                         │
> │ c:/home/git/polyglot/target/spiral_Eval/packages/667528659dc2e5af51a6ec17f17 │
> │ 74bd7ffff5b5a47e4e117eec78e740987f29a/main.spi.                              │
> │ inl main () =                                                                │
> │          ^                                                                   │
> │ ";                                                                           │
> │       "Error trace on line: 4, column: 9 in module:                          │
> │ c:/home/git/polyglot/target/spiral_Eval/packages/667528659dc2e5af51a6ec17f17 │
> │ 74bd7ffff5b5a47e4e117eec78e740987f29a/main.spi.                              │
> │         inl unbox_real forall a. (obj : a) : a =                             │
> │         ^                                                                    │
> │ ";                                                                           │
> │       "Error trace on line: 7, column: 9 in module:                          │
> │ c:/home/git/polyglot/target/spiral_Eval/packages/667528659dc2e5af51a6ec17f17 │
> │ 74bd7ffff5b5a47e4e117eec78e740987f29a/main.spi.                              │
> │         unbox_real ()                                                        │
> │         ^                                                                    │
> │ "] })) / path:                                                               │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\667528659dc2e5af51a6ec17f17 │
> │ 74bd7ffff5b5a47e4e117eec78e740987f29a\main.spi                               │
> │ 00:00:45 d #174 Supervisor.buildFile / takeWhileInclusive /             │
> │ outputContent:                                                               │
> │  / errors: [                                                                 │
> │   [                                                                          │
> │     "Cannot apply a forall with a term.",                                    │
> │     {                                                                        │
> │       "TracedError": {                                                       │
> │         "message": "Cannot apply a forall with a term.",                     │
> │         "trace": [                                                           │
> │           "Error trace on line: 2, column: 10 in module:                     │
> │ c:/home/git/polyglot/target/spiral_Eval/packages/667528659dc2e5af51a6ec17f17 │
> │ 74bd7ffff5b5a47e4e117eec78e740987f29a/main.spi.                              │
> │ inl main () =                                                                │
> │          ^                                                                   │
> │ ",                                                                           │
> │           "Error trace on line: 4, column: 9 in module:                      │
> │ c:/home/git/polyglot/target/spiral_Eval/packages/667528659dc2e5af51a6ec17f17 │
> │ 74bd7ffff5b5a47e4e117eec78e740987f29a/main.spi.                              │
> │         inl unbox_real forall a. (obj : a) : a =                             │
> │         ^                                                                    │
> │ ",                                                                           │
> │           "Error trace on line: 7, column: 9 in module:                      │
> │ c:/home/git/polyglot/target/spiral_Eval/packages/667528659dc2e5af51a6ec17f17 │
> │ 74bd7ffff5b5a47e4e117eec78e740987f29a/main.spi.                              │
> │         unbox_real ()                                                        │
> │         ^                                                                    │
> │ "                                                                            │
> │         ]                                                                    │
> │       }                                                                      │
> │     }                                                                        │
> │   ]                                                                          │
> │ ] / typeErrorCount: 0 / retry: 0 / path:                                     │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\667528659dc2e5af51a6ec17f17 │
> │ 74bd7ffff5b5a47e4e117eec78e740987f29a\main.spi                               │
> │ 00:00:45 v #175 Supervisor.sendJson / port: 13805 / json:               │
> │ {"FileDelete":{"uris":[                                                      │
> │ "file:///c:/home/git/polyglot/target/spiral_Eval/packages/667528659dc2e5af51 │
> │ a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a"]}} / result:                 │
> │ 00:00:52 v #34 async.run_with_timeout_async / { timeout = 100 }         │
> │ 00:00:45 d #176 FileSystem.watchWithFilter / Disposing watch stream /   │
> │ filter: FileName, LastWrite                                                  │
> │ Some (None, ["Cannot apply a forall with a term."])                          │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> """
> inl main () =
>     real
>         inl unbox_real forall a. (obj : a) : a =
>             typecase obj with
>             | _ => obj
>         unbox_real `i32 1
> """
> |> fun code -> Spi (code, None)
> |> buildCode Fsharp [[||]] false 10000 None
> |> Async.runWithTimeout 10000
> |> Option.map (fun (_, (_, outputContent), errors) -> outputContent, errors |> 
> List.map fst)
> |> _assertEqual (
>     Some (
>         None,
>         [[ "The main function should not have a forall." ]]
>     )
> )
> 
> ╭─[ 5.42s - stdout ]───────────────────────────────────────────────────────────╮
> │ 00:00:52 v #35 async.run_with_timeout_async / { timeout = 180 }         │
> │ 00:00:50 d #37 runtime.execute_with_options_async / { file_name =       │
> │ dotnet; arguments = US5_0                                                    │
> │   ""C:\home\git\polyglot\deps\The-Spiral-Language\The Spiral Language        │
> │ 2\artifacts\bin\The Spiral Language 2\release\Spiral.dll" --port 13805       │
> │ --default-int i32 --default-float f64"; options = { command = dotnet         │
> │ "C:\home\git\polyglot\deps\The-Spiral-Language\The Spiral Language           │
> │ 2\artifacts\bin\The Spiral Language 2\release\Spiral.dll" --port 13805       │
> │ --default-int i32 --default-float f64; cancellation_token = Some             │
> │ System.Threading.CancellationToken; environment_variables = [||]; on_line =  │
> │ Some <fun:buildCode@7-93>; stdin = None; trace = true; working_directory =   │
> │ Some "C:\home\git\polyglot" } }                                              │
> │ 00:00:50 v #38 > 00:00:00 d #1 pwd: C:\home\git\polyglot           │
> │ 00:00:50 v #39 > 00:00:00 d #2 dllPath:                            │
> │ C:\home\git\polyglot\deps\The-Spiral-Language\The Spiral Language            │
> │ 2\artifacts\bin\The Spiral Language 2\release                                │
> │ 00:00:50 v #40 > 00:00:00 d #3 targetDir:                          │
> │ C:\home\git\polyglot\target/spiral_Eval                                      │
> │ 00:00:53 v #36 async.run_with_timeout_async / { timeout = 100 }         │
> │ 00:00:53 v #37 async.run_with_timeout_async / { timeout = 100 }         │
> │ 00:00:50 v #41 > Starting the Spiral Server. It is bound to:            │
> │ http://localhost:13805                                                       │
> │ 00:00:53 v #38 async.run_with_timeout_async / { timeout = 100 }         │
> │ 00:00:46 v #177 Supervisor.sendJson / port: 13805 / json: {"Ping":true} │
> │ / result:                                                                    │
> │ 00:00:46 v #178 Supervisor.awaitCompiler / Ping / result: 'Some null' / │
> │ port: 13805 / retry: 1                                                       │
> │ 00:00:51 v #42 > Server bound to: http://localhost:13805                │
> │ 00:00:46 d #179 Supervisor.buildFile / takeWhileInclusive /             │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\0ba44c42df309b790acdf4f9fc5 │
> │ 5fcc7912380f5dd2d90fad118bad793251c4f\main.spi                               │
> │ 00:00:46 d #180 Supervisor.buildFile / AsyncSeq.scan / outputContent:   │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\0ba44c42df309b790acdf4f9fc5 │
> │ 5fcc7912380f5dd2d90fad118bad793251c4f\main.spi                               │
> │ 00:00:46 d #181 Supervisor.buildFile / takeWhileInclusive /             │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\0ba44c42df309b790acdf4f9fc5 │
> │ 5fcc7912380f5dd2d90fad118bad793251c4f\main.spi                               │
> │ 00:00:46 v #182 Supervisor.sendJson / port: 13805 / json:               │
> │ {"FileOpen":{"spiText":"\ninl main () =\n    real\n        inl unbox_real    │
> │ forall a. (obj : a) : a                                                      │
> │ =\...et/spiral_Eval/packages/0ba44c42df309b790acdf4f9fc55fcc7912380f5dd2d90f │
> │ ad118bad793251c4f/main.spi"}} / result:                                      │
> │ 00:00:46 v #183 Supervisor.sendJson / port: 13805 / json:               │
> │ {"BuildFile":{"backend":"Fsharp","uri":"file:///c:/home/git/polyglot/target/ │
> │ spiral_Eval/packages/0ba44c42df309b790acdf4f9fc55fcc7912380f5dd2d90fad118bad │
> │ 793251c4f/main.spi"}} / result:                                              │
> │ 00:00:47 d #184 Supervisor.buildFile / AsyncSeq.scan / outputContent:   │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\0ba44c42df309b790acdf4f9fc5 │
> │ 5fcc7912380f5dd2d90fad118bad793251c4f\main.spi                               │
> │ 00:00:47 d #185 Supervisor.buildFile / takeWhileInclusive /             │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\0ba44c42df309b790acdf4f9fc5 │
> │ 5fcc7912380f5dd2d90fad118bad793251c4f\main.spi                               │
> │ 00:00:47 d #186 Supervisor.buildFile / AsyncSeq.scan / outputContent:   │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\0ba44c42df309b790acdf4f9fc5 │
> │ 5fcc7912380f5dd2d90fad118bad793251c4f\main.spi                               │
> │ 00:00:47 d #187 Supervisor.buildFile / takeWhileInclusive /             │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\0ba44c42df309b790acdf4f9fc5 │
> │ 5fcc7912380f5dd2d90fad118bad793251c4f\main.spi                               │
> │ 00:00:48 d #188 Supervisor.buildFile / AsyncSeq.scan / outputContent:   │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\0ba44c42df309b790acdf4f9fc5 │
> │ 5fcc7912380f5dd2d90fad118bad793251c4f\main.spi                               │
> │ 00:00:48 d #189 Supervisor.buildFile / takeWhileInclusive /             │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\0ba44c42df309b790acdf4f9fc5 │
> │ 5fcc7912380f5dd2d90fad118bad793251c4f\main.spi                               │
> │ 00:00:48 d #190 Supervisor.buildFile / AsyncSeq.scan / outputContent:   │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\0ba44c42df309b790acdf4f9fc5 │
> │ 5fcc7912380f5dd2d90fad118bad793251c4f\main.spi                               │
> │ 00:00:48 d #191 Supervisor.buildFile / takeWhileInclusive /             │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\0ba44c42df309b790acdf4f9fc5 │
> │ 5fcc7912380f5dd2d90fad118bad793251c4f\main.spi                               │
> │ 00:00:49 d #192 Supervisor.buildFile / AsyncSeq.scan / outputContent:   │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\0ba44c42df309b790acdf4f9fc5 │
> │ 5fcc7912380f5dd2d90fad118bad793251c4f\main.spi                               │
> │ 00:00:49 d #193 Supervisor.buildFile / takeWhileInclusive /             │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\0ba44c42df309b790acdf4f9fc5 │
> │ 5fcc7912380f5dd2d90fad118bad793251c4f\main.spi                               │
> │ 00:00:49 d #194 Supervisor.buildFile / AsyncSeq.scan / outputContent:   │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\0ba44c42df309b790acdf4f9fc5 │
> │ 5fcc7912380f5dd2d90fad118bad793251c4f\main.spi                               │
> │ 00:00:49 d #195 Supervisor.buildFile / takeWhileInclusive /             │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\0ba44c42df309b790acdf4f9fc5 │
> │ 5fcc7912380f5dd2d90fad118bad793251c4f\main.spi                               │
> │ 00:00:50 d #196 Supervisor.buildFile / AsyncSeq.scan / outputContent:   │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\0ba44c42df309b790acdf4f9fc5 │
> │ 5fcc7912380f5dd2d90fad118bad793251c4f\main.spi                               │
> │ 00:00:50 d #197 Supervisor.buildFile / takeWhileInclusive /             │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\0ba44c42df309b790acdf4f9fc5 │
> │ 5fcc7912380f5dd2d90fad118bad793251c4f\main.spi                               │
> │ 00:00:50 d #198 Supervisor.buildFile / AsyncSeq.scan / outputContent:   │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\0ba44c42df309b790acdf4f9fc5 │
> │ 5fcc7912380f5dd2d90fad118bad793251c4f\main.spi                               │
> │ 00:00:50 d #199 Supervisor.buildFile / takeWhileInclusive /             │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\0ba44c42df309b790acdf4f9fc5 │
> │ 5fcc7912380f5dd2d90fad118bad793251c4f\main.spi                               │
> │ 00:00:50 d #200 Supervisor.buildFile / AsyncSeq.scan / outputContent:   │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error: Some((The main function should not have a forall., TracedError {      │
> │ message = "The main function should not have a forall."                      │
> │               trace = [] })) / path:                                         │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\0ba44c42df309b790acdf4f9fc5 │
> │ 5fcc7912380f5dd2d90fad118bad793251c4f\main.spi                               │
> │ 00:00:50 d #201 Supervisor.buildFile / takeWhileInclusive /             │
> │ outputContent:                                                               │
> │  / errors: [                                                                 │
> │   [                                                                          │
> │     "The main function should not have a forall.",                           │
> │     {                                                                        │
> │       "TracedError": {                                                       │
> │         "message": "The main function should not have a forall.",            │
> │         "trace": []                                                          │
> │       }                                                                      │
> │     }                                                                        │
> │   ]                                                                          │
> │ ] / typeErrorCount: 0 / retry: 0 / path:                                     │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\0ba44c42df309b790acdf4f9fc5 │
> │ 5fcc7912380f5dd2d90fad118bad793251c4f\main.spi                               │
> │ 00:00:50 v #202 Supervisor.sendJson / port: 13805 / json:               │
> │ {"FileDelete":{"uris":[                                                      │
> │ "file:///c:/home/git/polyglot/target/spiral_Eval/packages/0ba44c42df309b790a │
> │ cdf4f9fc55fcc7912380f5dd2d90fad118bad793251c4f"]}} / result:                 │
> │ 00:00:57 v #39 async.run_with_timeout_async / { timeout = 100 }         │
> │ 00:00:50 d #203 FileSystem.watchWithFilter / Disposing watch stream /   │
> │ filter: FileName, LastWrite                                                  │
> │ Some (None, ["The main function should not have a forall."])                 │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> """
> inl init_series start end inc =
>     inl total : f64 = conv ((end - start) / inc) + 1
>     listm.init total (conv >> (*) inc >> (+) start) : list f64
> 
> type integration = (f64 -> f64) -> f64 -> f64 -> f64
> 
> inl integral dt : integration =
>     fun f a b =>
>         init_series (a + dt / 2) (b - dt / 2) dt
>         |> listm.map (f >> (*) dt)
>         |> listm.fold (+) 0
> 
> inl main () =
>     integral 0.1 (fun x => x ** 2) 0 1
> """
> |> fun code -> Spi (code, None)
> |> buildCode Fsharp [[||]] false 10000 None
> |> Async.runWithTimeout 10000
> |> Option.map (fun (_, (_, outputContent), errors) -> outputContent, errors |> 
> List.map fst)
> |> _assertEqual (
>     Some (
>         Some "0.3325000000000001\n",
>         [[]]
>     )
> )
> 
> ╭─[ 5.44s - stdout ]───────────────────────────────────────────────────────────╮
> │ 00:00:58 v #40 async.run_with_timeout_async / { timeout = 180 }         │
> │ 00:00:55 d #43 runtime.execute_with_options_async / { file_name =       │
> │ dotnet; arguments = US5_0                                                    │
> │   ""C:\home\git\polyglot\deps\The-Spiral-Language\The Spiral Language        │
> │ 2\artifacts\bin\The Spiral Language 2\release\Spiral.dll" --port 13805       │
> │ --default-int i32 --default-float f64"; options = { command = dotnet         │
> │ "C:\home\git\polyglot\deps\The-Spiral-Language\The Spiral Language           │
> │ 2\artifacts\bin\The Spiral Language 2\release\Spiral.dll" --port 13805       │
> │ --default-int i32 --default-float f64; cancellation_token = Some             │
> │ System.Threading.CancellationToken; environment_variables = [||]; on_line =  │
> │ Some <fun:buildCode@7-93>; stdin = None; trace = true; working_directory =   │
> │ Some "C:\home\git\polyglot" } }                                              │
> │ 00:00:55 v #44 > 00:00:00 d #1 pwd: C:\home\git\polyglot           │
> │ 00:00:55 v #45 > 00:00:00 d #2 dllPath:                            │
> │ C:\home\git\polyglot\deps\The-Spiral-Language\The Spiral Language            │
> │ 2\artifacts\bin\The Spiral Language 2\release                                │
> │ 00:00:55 v #46 > 00:00:00 d #3 targetDir:                          │
> │ C:\home\git\polyglot\target/spiral_Eval                                      │
> │ 00:00:58 v #41 async.run_with_timeout_async / { timeout = 100 }         │
> │ 00:00:58 v #42 async.run_with_timeout_async / { timeout = 100 }         │
> │ 00:00:56 v #47 > Starting the Spiral Server. It is bound to:            │
> │ http://localhost:13805                                                       │
> │ 00:00:59 v #43 async.run_with_timeout_async / { timeout = 100 }         │
> │ 00:00:52 v #204 Supervisor.sendJson / port: 13805 / json: {"Ping":true} │
> │ / result:                                                                    │
> │ 00:00:52 v #205 Supervisor.awaitCompiler / Ping / result: 'Some null' / │
> │ port: 13805 / retry: 1                                                       │
> │ 00:00:56 v #48 > Server bound to: http://localhost:13805                │
> │ 00:00:52 d #206 Supervisor.buildFile / takeWhileInclusive /             │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\c127414de2a2a92d9fd93ea5a8e │
> │ 9312a6aad9129ffd3cbd56ac7f0327106f1db\main.spi                               │
> │ 00:00:52 d #207 Supervisor.buildFile / AsyncSeq.scan / outputContent:   │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\c127414de2a2a92d9fd93ea5a8e │
> │ 9312a6aad9129ffd3cbd56ac7f0327106f1db\main.spi                               │
> │ 00:00:52 d #208 Supervisor.buildFile / takeWhileInclusive /             │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\c127414de2a2a92d9fd93ea5a8e │
> │ 9312a6aad9129ffd3cbd56ac7f0327106f1db\main.spi                               │
> │ 00:00:52 v #209 Supervisor.sendJson / port: 13805 / json:               │
> │ {"FileOpen":{"spiText":"\ninl init_series start end inc =\n    inl total :   │
> │ f64 = conv ((end -                                                           │
> │ start)...et/spiral_Eval/packages/c127414de2a2a92d9fd93ea5a8e9312a6aad9129ffd │
> │ 3cbd56ac7f0327106f1db/main.spi"}} / result:                                  │
> │ 00:00:52 v #210 Supervisor.sendJson / port: 13805 / json:               │
> │ {"BuildFile":{"backend":"Fsharp","uri":"file:///c:/home/git/polyglot/target/ │
> │ spiral_Eval/packages/c127414de2a2a92d9fd93ea5a8e9312a6aad9129ffd3cbd56ac7f03 │
> │ 27106f1db/main.spi"}} / result:                                              │
> │ 00:00:52 d #211 Supervisor.buildFile / AsyncSeq.scan / outputContent:   │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\c127414de2a2a92d9fd93ea5a8e │
> │ 9312a6aad9129ffd3cbd56ac7f0327106f1db\main.spi                               │
> │ 00:00:52 d #212 Supervisor.buildFile / takeWhileInclusive /             │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\c127414de2a2a92d9fd93ea5a8e │
> │ 9312a6aad9129ffd3cbd56ac7f0327106f1db\main.spi                               │
> │ 00:00:53 d #213 Supervisor.buildFile / AsyncSeq.scan / outputContent:   │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\c127414de2a2a92d9fd93ea5a8e │
> │ 9312a6aad9129ffd3cbd56ac7f0327106f1db\main.spi                               │
> │ 00:00:53 d #214 Supervisor.buildFile / takeWhileInclusive /             │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\c127414de2a2a92d9fd93ea5a8e │
> │ 9312a6aad9129ffd3cbd56ac7f0327106f1db\main.spi                               │
> │ 00:00:53 d #215 Supervisor.buildFile / AsyncSeq.scan / outputContent:   │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\c127414de2a2a92d9fd93ea5a8e │
> │ 9312a6aad9129ffd3cbd56ac7f0327106f1db\main.spi                               │
> │ 00:00:53 d #216 Supervisor.buildFile / takeWhileInclusive /             │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\c127414de2a2a92d9fd93ea5a8e │
> │ 9312a6aad9129ffd3cbd56ac7f0327106f1db\main.spi                               │
> │ 00:00:54 d #217 Supervisor.buildFile / AsyncSeq.scan / outputContent:   │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\c127414de2a2a92d9fd93ea5a8e │
> │ 9312a6aad9129ffd3cbd56ac7f0327106f1db\main.spi                               │
> │ 00:00:54 d #218 Supervisor.buildFile / takeWhileInclusive /             │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\c127414de2a2a92d9fd93ea5a8e │
> │ 9312a6aad9129ffd3cbd56ac7f0327106f1db\main.spi                               │
> │ 00:00:54 d #219 Supervisor.buildFile / AsyncSeq.scan / outputContent:   │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\c127414de2a2a92d9fd93ea5a8e │
> │ 9312a6aad9129ffd3cbd56ac7f0327106f1db\main.spi                               │
> │ 00:00:54 d #220 Supervisor.buildFile / takeWhileInclusive /             │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\c127414de2a2a92d9fd93ea5a8e │
> │ 9312a6aad9129ffd3cbd56ac7f0327106f1db\main.spi                               │
> │ 00:00:55 d #221 Supervisor.buildFile / AsyncSeq.scan / outputContent:   │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\c127414de2a2a92d9fd93ea5a8e │
> │ 9312a6aad9129ffd3cbd56ac7f0327106f1db\main.spi                               │
> │ 00:00:55 d #222 Supervisor.buildFile / takeWhileInclusive /             │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\c127414de2a2a92d9fd93ea5a8e │
> │ 9312a6aad9129ffd3cbd56ac7f0327106f1db\main.spi                               │
> │ 00:00:55 d #223 Supervisor.buildFile / AsyncSeq.scan / outputContent:   │
> │ 0.3325000000000001                                                           │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\c127414de2a2a92d9fd93ea5a8e │
> │ 9312a6aad9129ffd3cbd56ac7f0327106f1db\main.spi                               │
> │ 00:00:55 d #224 Supervisor.buildFile / takeWhileInclusive /             │
> │ outputContent:                                                               │
> │ 0.3325000000000001                                                           │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\c127414de2a2a92d9fd93ea5a8e │
> │ 9312a6aad9129ffd3cbd56ac7f0327106f1db\main.spi                               │
> │ 00:00:56 v #225 Supervisor.sendJson / port: 13805 / json:               │
> │ {"FileDelete":{"uris":[                                                      │
> │ "file:///c:/home/git/polyglot/target/spiral_Eval/packages/c127414de2a2a92d9f │
> │ d93ea5a8e9312a6aad9129ffd3cbd56ac7f0327106f1db"]}} / result:                 │
> │ 00:01:03 v #44 async.run_with_timeout_async / { timeout = 100 }         │
> │ 00:00:56 d #226 FileSystem.watchWithFilter / Disposing watch stream /   │
> │ filter: FileName, LastWrite                                                  │
> │ Some (Some "0.3325000000000001                                               │
> │ ", [])                                                                       │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> """
> inl init_series start end inc =
>     inl total : f64 = conv ((end - start) / inc) + 1
>     listm.init total (conv >> (*) inc >> (+) start) : list f64
> 
> type integration = (f64 -> f64) -> f64 -> f64 -> f64
> 
> inl integral dt : integration =
>     fun f a b =>
>         init_series (a + dt / 2) (b - dt / 2) dt
>         |> listm.map (f >> (*) dt)
>         |> listm.fold (+) 0
> 
> inl main () =
>     integral 0.1 (fun x => x ** 2) 0 1
> """
> |> fun code -> Spi (code, None)
> |> buildCode Cuda [[||]] false 10000 None
> |> Async.runWithTimeout 10000
> |> Option.map (fun (_, (_, outputContent), errors) -> outputContent, errors |> 
> List.map fst)
> |> _assertEqual (
>     Some (
>         Some @"kernel = r""""""
> """"""
> class static_array():
>     def __init__(self, length):
>         self.ptr = [[]]
>         for _ in range(length):
>             self.ptr.append(None)
> 
>     def __getitem__(self, index):
>         assert 0 <= index < len(self.ptr), ""The get index needs to be in 
> range.""
>         return self.ptr[[index]]
>     
>     def __setitem__(self, index, value):
>         assert 0 <= index < len(self.ptr), ""The set index needs to be in 
> range.""
>         self.ptr[[index]] = value
> 
> class static_array_list(static_array):
>     def __init__(self, length):
>         super().__init__(length)
>         self.length = 0
> 
>     def __getitem__(self, index):
>         assert 0 <= index < self.length, ""The get index needs to be in range.""
>         return self.ptr[[index]]
>     
>     def __setitem__(self, index, value):
>         assert 0 <= index < self.length, ""The set index needs to be in range.""
>         self.ptr[[index]] = value
> 
>     def push(self,value):
>         assert (self.length < len(self.ptr)), ""The length before pushing has to
> be less than the maximum length of the array.""
>         self.ptr[[self.length]] = value
>         self.length += 1
> 
>     def pop(self):
>         assert (0 < self.length), ""The length before popping has to be greater 
> than 0.""
>         self.length -= 1
>         return self.ptr[[self.length]]
> 
>     def unsafe_set_length(self,i):
>         assert 0 <= i <= len(self.ptr), ""The new length has to be in range.""
>         self.length = i
> 
> class dynamic_array(static_array): 
>     pass
> 
> class dynamic_array_list(static_array_list):
>     def length_(self): return self.length
> 
> import cupy as cp
> import numpy as np
> from dataclasses import dataclass
> from typing import NamedTuple, Union, Callable, Tuple
> i8 = int; i16 = int; i32 = int; i64 = int; u8 = int; u16 = int; u32 = int; u64 =
> int; f32 = float; f64 = float; char = str; string = str
> cuda = False
> 
> def main_body():
>     return 0.3325000000000001
> 
> def main():
>     r = main_body()
>     if cuda: cp.cuda.get_current_stream().synchronize() # This line is here so 
> the `__trap()` calls on the kernel aren't missed.
>     return r
> 
> if __name__ == '__main__': result = main(); None if result is None else 
> print(result)
> ",
>         [[]]
>     )
> )
> 
> ╭─[ 5.37s - stdout ]───────────────────────────────────────────────────────────╮
> │ 00:01:03 v #45 async.run_with_timeout_async / { timeout = 180 }         │
> │ 00:01:01 d #49 runtime.execute_with_options_async / { file_name =       │
> │ dotnet; arguments = US5_0                                                    │
> │   ""C:\home\git\polyglot\deps\The-Spiral-Language\The Spiral Language        │
> │ 2\artifacts\bin\The Spiral Language 2\release\Spiral.dll" --port 13805       │
> │ --default-int i32 --default-float f64"; options = { command = dotnet         │
> │ "C:\home\git\polyglot\deps\The-Spiral-Language\The Spiral Language           │
> │ 2\artifacts\bin\The Spiral Language 2\release\Spiral.dll" --port 13805       │
> │ --default-int i32 --default-float f64; cancellation_token = Some             │
> │ System.Threading.CancellationToken; environment_variables = [||]; on_line =  │
> │ Some <fun:buildCode@7-93>; stdin = None; trace = true; working_directory =   │
> │ Some "C:\home\git\polyglot" } }                                              │
> │ 00:01:01 v #50 > 00:00:00 d #1 pwd: C:\home\git\polyglot           │
> │ 00:01:01 v #51 > 00:00:00 d #2 dllPath:                            │
> │ C:\home\git\polyglot\deps\The-Spiral-Language\The Spiral Language            │
> │ 2\artifacts\bin\The Spiral Language 2\release                                │
> │ 00:01:01 v #52 > 00:00:00 d #3 targetDir:                          │
> │ C:\home\git\polyglot\target/spiral_Eval                                      │
> │ 00:01:04 v #46 async.run_with_timeout_async / { timeout = 100 }         │
> │ 00:01:04 v #47 async.run_with_timeout_async / { timeout = 100 }         │
> │ 00:01:01 v #53 > Starting the Spiral Server. It is bound to:            │
> │ http://localhost:13805                                                       │
> │ 00:01:04 v #48 async.run_with_timeout_async / { timeout = 100 }         │
> │ 00:00:57 v #227 Supervisor.sendJson / port: 13805 / json: {"Ping":true} │
> │ / result:                                                                    │
> │ 00:00:57 v #228 Supervisor.awaitCompiler / Ping / result: 'Some null' / │
> │ port: 13805 / retry: 1                                                       │
> │ 00:01:01 v #54 > Server bound to: http://localhost:13805                │
> │ 00:00:57 d #229 Supervisor.buildFile / takeWhileInclusive /             │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\ca288d6928a8e761855210f25f9 │
> │ 7fdc056ee1f21be4a24b26e8533ec368831c8\main.spi                               │
> │ 00:00:57 d #230 Supervisor.buildFile / AsyncSeq.scan / outputContent:   │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\ca288d6928a8e761855210f25f9 │
> │ 7fdc056ee1f21be4a24b26e8533ec368831c8\main.spi                               │
> │ 00:00:57 d #231 Supervisor.buildFile / takeWhileInclusive /             │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\ca288d6928a8e761855210f25f9 │
> │ 7fdc056ee1f21be4a24b26e8533ec368831c8\main.spi                               │
> │ 00:00:57 v #232 Supervisor.sendJson / port: 13805 / json:               │
> │ {"FileOpen":{"spiText":"\ninl init_series start end inc =\n    inl total :   │
> │ f64 = conv ((end -                                                           │
> │ start)...et/spiral_Eval/packages/ca288d6928a8e761855210f25f97fdc056ee1f21be4 │
> │ a24b26e8533ec368831c8/main.spi"}} / result:                                  │
> │ 00:00:57 v #233 Supervisor.sendJson / port: 13805 / json:               │
> │ {"BuildFile":{"backend":"Python \u002B                                       │
> │ Cuda","uri":"file:///c:/home/git/polyglot/target/spiral_Eval/packages/ca288d │
> │ 6928a8e761855210f25f97fdc056ee1f21be4a24b26e8533ec368831c8/main.spi"}} /     │
> │ result:                                                                      │
> │ 00:00:58 d #234 Supervisor.buildFile / AsyncSeq.scan / outputContent:   │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\ca288d6928a8e761855210f25f9 │
> │ 7fdc056ee1f21be4a24b26e8533ec368831c8\main.spi                               │
> │ 00:00:58 d #235 Supervisor.buildFile / takeWhileInclusive /             │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\ca288d6928a8e761855210f25f9 │
> │ 7fdc056ee1f21be4a24b26e8533ec368831c8\main.spi                               │
> │ 00:00:58 d #236 Supervisor.buildFile / AsyncSeq.scan / outputContent:   │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\ca288d6928a8e761855210f25f9 │
> │ 7fdc056ee1f21be4a24b26e8533ec368831c8\main.spi                               │
> │ 00:00:58 d #237 Supervisor.buildFile / takeWhileInclusive /             │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\ca288d6928a8e761855210f25f9 │
> │ 7fdc056ee1f21be4a24b26e8533ec368831c8\main.spi                               │
> │ 00:00:59 d #238 Supervisor.buildFile / AsyncSeq.scan / outputContent:   │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\ca288d6928a8e761855210f25f9 │
> │ 7fdc056ee1f21be4a24b26e8533ec368831c8\main.spi                               │
> │ 00:00:59 d #239 Supervisor.buildFile / takeWhileInclusive /             │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\ca288d6928a8e761855210f25f9 │
> │ 7fdc056ee1f21be4a24b26e8533ec368831c8\main.spi                               │
> │ 00:00:59 d #240 Supervisor.buildFile / AsyncSeq.scan / outputContent:   │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\ca288d6928a8e761855210f25f9 │
> │ 7fdc056ee1f21be4a24b26e8533ec368831c8\main.spi                               │
> │ 00:00:59 d #241 Supervisor.buildFile / takeWhileInclusive /             │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\ca288d6928a8e761855210f25f9 │
> │ 7fdc056ee1f21be4a24b26e8533ec368831c8\main.spi                               │
> │ 00:01:00 d #242 Supervisor.buildFile / AsyncSeq.scan / outputContent:   │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\ca288d6928a8e761855210f25f9 │
> │ 7fdc056ee1f21be4a24b26e8533ec368831c8\main.spi                               │
> │ 00:01:00 d #243 Supervisor.buildFile / takeWhileInclusive /             │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\ca288d6928a8e761855210f25f9 │
> │ 7fdc056ee1f21be4a24b26e8533ec368831c8\main.spi                               │
> │ 00:01:00 d #244 Supervisor.buildFile / AsyncSeq.scan / outputContent:   │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\ca288d6928a8e761855210f25f9 │
> │ 7fdc056ee1f21be4a24b26e8533ec368831c8\main.spi                               │
> │ 00:01:00 d #245 Supervisor.buildFile / takeWhileInclusive /             │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\ca288d6928a8e761855210f25f9 │
> │ 7fdc056ee1f21be4a24b26e8533ec368831c8\main.spi                               │
> │ 00:01:01 d #246 Supervisor.buildFile / AsyncSeq.scan / outputContent:   │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\ca288d6928a8e761855210f25f9 │
> │ 7fdc056ee1f21be4a24b26e8533ec368831c8\main.spi                               │
> │ 00:01:01 d #247 Supervisor.buildFile / takeWhileInclusive /             │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\ca288d6928a8e761855210f25f9 │
> │ 7fdc056ee1f21be4a24b26e8533ec368831c8\main.spi                               │
> │ 00:01:01 d #248 Supervisor.buildFile / AsyncSeq.scan / outputContent:   │
> │ kernel = r"""                                                                │
> │ """                                                                          │
> │ class static_array():                                                        │
> │     def __init__(self, length):                                              │
> │         self.ptr = []                                                        │
> │         for _ in range(length):                                              │
> │             self.ptr.app...the `__trap()` calls on the kernel aren't missed. │
> │     return r                                                                 │
> │                                                                              │
> │ if __name__ == '__main__': result = main(); None if result is None else      │
> │ print(result)                                                                │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\ca288d6928a8e761855210f25f9 │
> │ 7fdc056ee1f21be4a24b26e8533ec368831c8\main.spi                               │
> │ 00:01:01 d #249 Supervisor.buildFile / takeWhileInclusive /             │
> │ outputContent:                                                               │
> │ kernel = r"""                                                                │
> │ """                                                                          │
> │ class static_array():                                                        │
> │     def __init__(self, length):                                              │
> │         self.ptr = []                                                        │
> │         for _ in range(length):                                              │
> │             self.ptr.app...the `__trap()` calls on the kernel aren't missed. │
> │     return r                                                                 │
> │                                                                              │
> │ if __name__ == '__main__': result = main(); None if result is None else      │
> │ print(result)                                                                │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\ca288d6928a8e761855210f25f9 │
> │ 7fdc056ee1f21be4a24b26e8533ec368831c8\main.spi                               │
> │ 00:01:01 v #250 Supervisor.sendJson / port: 13805 / json:               │
> │ {"FileDelete":{"uris":[                                                      │
> │ "file:///c:/home/git/polyglot/target/spiral_Eval/packages/ca288d6928a8e76185 │
> │ 5210f25f97fdc056ee1f21be4a24b26e8533ec368831c8"]}} / result:                 │
> │ 00:01:08 v #49 async.run_with_timeout_async / { timeout = 100 }         │
> │ 00:01:01 d #251 FileSystem.watchWithFilter / Disposing watch stream /   │
> │ filter: FileName, LastWrite                                                  │
> │ Some                                                                         │
> │   (Some                                                                      │
> │      "kernel = r"""                                                          │
> │ """                                                                          │
> │ class static_array():                                                        │
> │     def __init__(self, length):                                              │
> │         self.ptr = []                                                        │
> │         for _ in range(length):                                              │
> │             self.ptr.append(None)                                            │
> │                                                                              │
> │     def __getitem__(self, index):                                            │
> │         assert 0 <= index < len(self.ptr), "The get index needs to be in     │
> │ range."                                                                      │
> │         return self.ptr[index]                                               │
> │                                                                              │
> │     def __setitem__(self, index, value):                                     │
> │         assert 0 <= index < len(self.ptr), "The set index needs to be in     │
> │ range."                                                                      │
> │         self.ptr[index] = value                                              │
> │                                                                              │
> │ class static_array_list(static_array):                                       │
> │     def __init__(self, length):                                              │
> │         super().__init__(length)                                             │
> │         self.length = 0                                                      │
> │                                                                              │
> │     def __getitem__(self, index):                                            │
> │         assert 0 <= index < self.length, "The get index needs to be in       │
> │ range."                                                                      │
> │         return self.ptr[index]                                               │
> │                                                                              │
> │     def __setitem__(self, index, value):                                     │
> │         assert 0 <= index < self.length, "The set index needs to be in       │
> │ range."                                                                      │
> │         self.ptr[index] = value                                              │
> │                                                                              │
> │     def push(self,value):                                                    │
> │         assert (self.length < len(self.ptr)), "The length before pushing has │
> │ to be less than the maximum length of the array."                            │
> │         self.ptr[self.length] = value                                        │
> │         self.length += 1                                                     │
> │                                                                              │
> │     def pop(self):                                                           │
> │         assert (0 < self.length), "The length before popping has to be       │
> │ greater than 0."                                                             │
> │         self.length -= 1                                                     │
> │         return self.ptr[self.length]                                         │
> │                                                                              │
> │     def unsafe_set_length(self,i):                                           │
> │         assert 0 <= i <= len(self.ptr), "The new length has to be in range." │
> │         self.length = i                                                      │
> │                                                                              │
> │ class dynamic_array(static_array):                                           │
> │     pass                                                                     │
> │                                                                              │
> │ class dynamic_array_list(static_array_list):                                 │
> │     def length_(self): return self.length                                    │
> │                                                                              │
> │ import cupy as cp                                                            │
> │ import numpy as np                                                           │
> │ from dataclasses import dataclass                                            │
> │ from typing import NamedTuple, Union, Callable, Tuple                        │
> │ i8 = int; i16 = int; i32 = int; i64 = int; u8 = int; u16 = int; u32 = int;   │
> │ u64 = int; f32 = float; f64 = float; char = str; string = str                │
> │ cuda = False                                                                 │
> │                                                                              │
> │ def main_body():                                                             │
> │     return 0.3325000000000001                                                │
> │                                                                              │
> │ def main():                                                                  │
> │     r = main_body()                                                          │
> │     if cuda: cp.cuda.get_current_stream().synchronize() # This line is here  │
> │ so the `__trap()` calls on the kernel aren't missed.                         │
> │     return r                                                                 │
> │                                                                              │
> │ if __name__ == '__main__': result = main(); None if result is None else      │
> │ print(result)                                                                │
> │ ",                                                                           │
> │    [])                                                                       │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> """
> inl init_series start end inc =
>     inl total : f64 = conv ((end - start) / inc) + 1
>     listm.init total (conv >> (*) inc >> (+) start) : list f64
> 
> type integration = (f64 -> f64) -> f64 -> f64 -> f64
> 
> inl integral dt : integration =
>     fun f a b =>
>         init_series (a + dt / 2) (b - dt / 2) dt
>         |> listm.map (f >> (*) dt)
>         |> listm.fold (+) 0
> 
> inl main () =
>     integral 0.01 (fun x => x ** 2) 0 1
> """
> |> fun code -> Spi (code, None)
> |> buildCode Fsharp [[||]] false 10000 None
> |> Async.runWithTimeout 10000
> |> Option.map (fun (_, (_, outputContent), errors) -> outputContent, errors |> 
> List.map fst)
> |> _assertEqual (
>     Some (
>         Some "0.33332500000000004\n",
>         [[]]
>     )
> )
> // |> _assertEqual None
> // |> fun x -> printfn $"{x.ToDisplayString ()}"
> 
> ╭─[ 5.46s - stdout ]───────────────────────────────────────────────────────────╮
> │ 00:01:09 v #50 async.run_with_timeout_async / { timeout = 180 }         │
> │ 00:01:06 d #55 runtime.execute_with_options_async / { file_name =       │
> │ dotnet; arguments = US5_0                                                    │
> │   ""C:\home\git\polyglot\deps\The-Spiral-Language\The Spiral Language        │
> │ 2\artifacts\bin\The Spiral Language 2\release\Spiral.dll" --port 13805       │
> │ --default-int i32 --default-float f64"; options = { command = dotnet         │
> │ "C:\home\git\polyglot\deps\The-Spiral-Language\The Spiral Language           │
> │ 2\artifacts\bin\The Spiral Language 2\release\Spiral.dll" --port 13805       │
> │ --default-int i32 --default-float f64; cancellation_token = Some             │
> │ System.Threading.CancellationToken; environment_variables = [||]; on_line =  │
> │ Some <fun:buildCode@7-93>; stdin = None; trace = true; working_directory =   │
> │ Some "C:\home\git\polyglot" } }                                              │
> │ 00:01:06 v #56 > 00:00:00 d #1 pwd: C:\home\git\polyglot           │
> │ 00:01:06 v #57 > 00:00:00 d #2 dllPath:                            │
> │ C:\home\git\polyglot\deps\The-Spiral-Language\The Spiral Language            │
> │ 2\artifacts\bin\The Spiral Language 2\release                                │
> │ 00:01:06 v #58 > 00:00:00 d #3 targetDir:                          │
> │ C:\home\git\polyglot\target/spiral_Eval                                      │
> │ 00:01:09 v #51 async.run_with_timeout_async / { timeout = 100 }         │
> │ 00:01:09 v #52 async.run_with_timeout_async / { timeout = 100 }         │
> │ 00:01:07 v #59 > Starting the Spiral Server. It is bound to:            │
> │ http://localhost:13805                                                       │
> │ 00:01:09 v #53 async.run_with_timeout_async / { timeout = 100 }         │
> │ 00:01:03 v #252 Supervisor.sendJson / port: 13805 / json: {"Ping":true} │
> │ / result:                                                                    │
> │ 00:01:03 v #253 Supervisor.awaitCompiler / Ping / result: 'Some null' / │
> │ port: 13805 / retry: 1                                                       │
> │ 00:01:07 v #60 > Server bound to: http://localhost:13805                │
> │ 00:01:03 d #254 Supervisor.buildFile / takeWhileInclusive /             │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\2acc44d97e6b50ce3caf39a0b93 │
> │ 135633484d22c3ef6e7797ce64875a41451f4\main.spi                               │
> │ 00:01:03 d #255 Supervisor.buildFile / AsyncSeq.scan / outputContent:   │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\2acc44d97e6b50ce3caf39a0b93 │
> │ 135633484d22c3ef6e7797ce64875a41451f4\main.spi                               │
> │ 00:01:03 d #256 Supervisor.buildFile / takeWhileInclusive /             │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\2acc44d97e6b50ce3caf39a0b93 │
> │ 135633484d22c3ef6e7797ce64875a41451f4\main.spi                               │
> │ 00:01:03 v #257 Supervisor.sendJson / port: 13805 / json:               │
> │ {"FileOpen":{"spiText":"\ninl init_series start end inc =\n    inl total :   │
> │ f64 = conv ((end -                                                           │
> │ start)...et/spiral_Eval/packages/2acc44d97e6b50ce3caf39a0b93135633484d22c3ef │
> │ 6e7797ce64875a41451f4/main.spi"}} / result:                                  │
> │ 00:01:03 v #258 Supervisor.sendJson / port: 13805 / json:               │
> │ {"BuildFile":{"backend":"Fsharp","uri":"file:///c:/home/git/polyglot/target/ │
> │ spiral_Eval/packages/2acc44d97e6b50ce3caf39a0b93135633484d22c3ef6e7797ce6487 │
> │ 5a41451f4/main.spi"}} / result:                                              │
> │ 00:01:03 d #259 Supervisor.buildFile / AsyncSeq.scan / outputContent:   │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\2acc44d97e6b50ce3caf39a0b93 │
> │ 135633484d22c3ef6e7797ce64875a41451f4\main.spi                               │
> │ 00:01:03 d #260 Supervisor.buildFile / takeWhileInclusive /             │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\2acc44d97e6b50ce3caf39a0b93 │
> │ 135633484d22c3ef6e7797ce64875a41451f4\main.spi                               │
> │ 00:01:04 d #261 Supervisor.buildFile / AsyncSeq.scan / outputContent:   │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\2acc44d97e6b50ce3caf39a0b93 │
> │ 135633484d22c3ef6e7797ce64875a41451f4\main.spi                               │
> │ 00:01:04 d #262 Supervisor.buildFile / takeWhileInclusive /             │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\2acc44d97e6b50ce3caf39a0b93 │
> │ 135633484d22c3ef6e7797ce64875a41451f4\main.spi                               │
> │ 00:01:04 d #263 Supervisor.buildFile / AsyncSeq.scan / outputContent:   │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\2acc44d97e6b50ce3caf39a0b93 │
> │ 135633484d22c3ef6e7797ce64875a41451f4\main.spi                               │
> │ 00:01:04 d #264 Supervisor.buildFile / takeWhileInclusive /             │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\2acc44d97e6b50ce3caf39a0b93 │
> │ 135633484d22c3ef6e7797ce64875a41451f4\main.spi                               │
> │ 00:01:05 d #265 Supervisor.buildFile / AsyncSeq.scan / outputContent:   │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\2acc44d97e6b50ce3caf39a0b93 │
> │ 135633484d22c3ef6e7797ce64875a41451f4\main.spi                               │
> │ 00:01:05 d #266 Supervisor.buildFile / takeWhileInclusive /             │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\2acc44d97e6b50ce3caf39a0b93 │
> │ 135633484d22c3ef6e7797ce64875a41451f4\main.spi                               │
> │ 00:01:05 d #267 Supervisor.buildFile / AsyncSeq.scan / outputContent:   │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\2acc44d97e6b50ce3caf39a0b93 │
> │ 135633484d22c3ef6e7797ce64875a41451f4\main.spi                               │
> │ 00:01:05 d #268 Supervisor.buildFile / takeWhileInclusive /             │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\2acc44d97e6b50ce3caf39a0b93 │
> │ 135633484d22c3ef6e7797ce64875a41451f4\main.spi                               │
> │ 00:01:06 d #269 Supervisor.buildFile / AsyncSeq.scan / outputContent:   │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\2acc44d97e6b50ce3caf39a0b93 │
> │ 135633484d22c3ef6e7797ce64875a41451f4\main.spi                               │
> │ 00:01:06 d #270 Supervisor.buildFile / takeWhileInclusive /             │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\2acc44d97e6b50ce3caf39a0b93 │
> │ 135633484d22c3ef6e7797ce64875a41451f4\main.spi                               │
> │ 00:01:06 d #271 Supervisor.buildFile / AsyncSeq.scan / outputContent:   │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\2acc44d97e6b50ce3caf39a0b93 │
> │ 135633484d22c3ef6e7797ce64875a41451f4\main.spi                               │
> │ 00:01:06 d #272 Supervisor.buildFile / takeWhileInclusive /             │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\2acc44d97e6b50ce3caf39a0b93 │
> │ 135633484d22c3ef6e7797ce64875a41451f4\main.spi                               │
> │ 00:01:07 d #273 Supervisor.buildFile / AsyncSeq.scan / outputContent:   │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\2acc44d97e6b50ce3caf39a0b93 │
> │ 135633484d22c3ef6e7797ce64875a41451f4\main.spi                               │
> │ 00:01:07 d #274 Supervisor.buildFile / takeWhileInclusive /             │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\2acc44d97e6b50ce3caf39a0b93 │
> │ 135633484d22c3ef6e7797ce64875a41451f4\main.spi                               │
> │ 00:01:07 d #275 Supervisor.buildFile / AsyncSeq.scan / outputContent:   │
> │ 0.33332500000000004                                                          │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\2acc44d97e6b50ce3caf39a0b93 │
> │ 135633484d22c3ef6e7797ce64875a41451f4\main.spi                               │
> │ 00:01:07 d #276 Supervisor.buildFile / takeWhileInclusive /             │
> │ outputContent:                                                               │
> │ 0.33332500000000004                                                          │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ C:\home\git\polyglot\target/spiral_Eval\packages\2acc44d97e6b50ce3caf39a0b93 │
> │ 135633484d22c3ef6e7797ce64875a41451f4\main.spi                               │
> │ 00:01:07 v #277 Supervisor.sendJson / port: 13805 / json:               │
> │ {"FileDelete":{"uris":[                                                      │
> │ "file:///c:/home/git/polyglot/target/spiral_Eval/packages/2acc44d97e6b50ce3c │
> │ af39a0b93135633484d22c3ef6e7797ce64875a41451f4"]}} / result:                 │
> │ 00:01:14 v #54 async.run_with_timeout_async / { timeout = 100 }         │
> │ 00:01:07 d #278 FileSystem.watchWithFilter / Disposing watch stream /   │
> │ filter: FileName, LastWrite                                                  │
> │ Some (Some "0.33332500000000004                                              │
> │ ", [])                                                                       │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ## getFileTokenRange                                                         │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline getFileTokenRange port cancellationToken path = async {
>     let fullPath = path |> System.IO.Path.GetFullPath
>     let! code = fullPath |> SpiralFileSystem.read_all_text_async
>     let lines = code |> SpiralSm.split "\n"
> 
>     let struct (token, disposable) = SpiralThreading.new_disposable_token 
> cancellationToken
>     use _ = disposable
> 
>     let port = port |> Option.defaultWith getCompilerPort
>     let! serverPort, _errors, ct, disposable = awaitCompiler port (Some token)
>     use _ = disposable
> 
>     let fullPathUri = fullPath |> SpiralFileSystem.normalize_path |> 
> SpiralFileSystem.new_file_uri
> 
>     let fileOpenObj = {| FileOpen = {| uri = fullPathUri; spiText = code |} |}
>     let! _fileOpenResult = fileOpenObj |> sendObj serverPort
> 
>     // do! Async.Sleep 60
> 
>     let fileTokenRangeObj =
>         {|
>             FileTokenRange =
>                 {|
>                     uri = fullPathUri
>                     range =
>                         [[|
>                             {| line = 0; character = 0 |}
>                             {| line = lines.Length - 1; character = 
> lines.[[lines.Length - 1]].Length |}
>                         |]]
>                 |}
>         |}
>     let! fileTokenRangeResult =
>         fileTokenRangeObj
>         |> sendObj serverPort
>         |> Async.withCancellationToken ct
> 
>     let fileDir = fullPath |> System.IO.Path.GetDirectoryName
>     if fileDir |> SpiralSm.starts_with (workspaceRoot </> "target") then
>         let fileDirUri = fileDir |> SpiralFileSystem.normalize_path |> 
> SpiralFileSystem.new_file_uri
>         let fileDeleteObj = {| FileDelete = {| uris = [[| fileDirUri |]] |} |}
>         let! _fileDeleteResult = fileDeleteObj |> sendObj serverPort
>         ()
> 
>     return fileTokenRangeResult |> Option.map FSharp.Json.Json.deserialize<int 
> array>
> }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ## getCodeTokenRange                                                         │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline getCodeTokenRange cancellationToken code = async {
>     let! mainPath, _ =
>         persistCode {| input = Spi (code, None); backend = None; packages = 
> [[||]] |}
> 
>     let codeDir = mainPath |> System.IO.Path.GetDirectoryName
>     let tokensPath = codeDir </> "tokens.json"
>     let! tokens = async {
>         if tokensPath |> System.IO.File.Exists |> not
>         then return None
>         else
>             let! text = tokensPath |> SpiralFileSystem.read_all_text_async
> 
>             return
>                 if text.Length > 2
>                 then text |> FSharp.Json.Json.deserialize<int array> |> Some
>                 else None
>     }
>     match tokens with
>     | Some tokens ->
>         return tokens |> Some
>     | None -> return! mainPath |> getFileTokenRange None cancellationToken
> }
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> """inl main () = ()"""
> |> getCodeTokenRange None
> |> Async.runWithTimeout 10000
> |> Option.flatten
> |> _assertEqual (Some [[| 0; 0; 3; 7; 0; 0; 4; 4; 0; 0; 0; 5; 1; 8; 0; 0; 1; 1; 
> 8; 0; 0; 2; 1; 4; 0; 0;
> 2; 1; 8; 0; 0; 1; 1; 8; 0 |]])
> 
> ╭─[ 4.31s - stdout ]───────────────────────────────────────────────────────────╮
> │ 00:01:20 v #55 async.run_with_timeout_async / { timeout = 180 }         │
> │ 00:01:17 d #61 runtime.execute_with_options_async / { file_name =       │
> │ dotnet; arguments = US5_0                                                    │
> │   ""C:\home\git\polyglot\deps\The-Spiral-Language\The Spiral Language        │
> │ 2\artifacts\bin\The Spiral Language 2\release\Spiral.dll" --port 13805       │
> │ --default-int i32 --default-float f64"; options = { command = dotnet         │
> │ "C:\home\git\polyglot\deps\The-Spiral-Language\The Spiral Language           │
> │ 2\artifacts\bin\The Spiral Language 2\release\Spiral.dll" --port 13805       │
> │ --default-int i32 --default-float f64; cancellation_token = Some             │
> │ System.Threading.CancellationToken; environment_variables = [||]; on_line =  │
> │ Some <fun:it@4-194>; stdin = None; trace = true; working_directory = Some    │
> │ "C:\home\git\polyglot" } }                                                   │
> │ 00:01:17 v #62 > 00:00:00 d #1 pwd: C:\home\git\polyglot           │
> │ 00:01:17 v #63 > 00:00:00 d #2 dllPath:                            │
> │ C:\home\git\polyglot\deps\The-Spiral-Language\The Spiral Language            │
> │ 2\artifacts\bin\The Spiral Language 2\release                                │
> │ 00:01:17 v #64 > 00:00:00 d #3 targetDir:                          │
> │ C:\home\git\polyglot\target/spiral_Eval                                      │
> │ 00:01:20 v #56 async.run_with_timeout_async / { timeout = 100 }         │
> │ 00:01:20 v #57 async.run_with_timeout_async / { timeout = 100 }         │
> │ 00:01:18 v #65 > Starting the Spiral Server. It is bound to:            │
> │ http://localhost:13805                                                       │
> │ 00:01:20 v #58 async.run_with_timeout_async / { timeout = 100 }         │
> │ 00:01:14 v #279 Supervisor.sendJson / port: 13805 / json: {"Ping":true} │
> │ / result:                                                                    │
> │ 00:01:14 v #280 Supervisor.awaitCompiler / Ping / result: 'Some null' / │
> │ port: 13805 / retry: 1                                                       │
> │ 00:01:18 v #66 > Server bound to: http://localhost:13805                │
> │ 00:01:14 v #281 Supervisor.sendJson / port: 13805 / json:               │
> │ {"FileOpen":{"spiText":"inl main () =                                        │
> │ ()","uri":"file:///c:/home/git/polyglot/target/spiral_Eval/packages/20e725d4 │
> │ 6cfdc99c0f307f1933a76ec7da4570c1b757721164d86f19feaf821e/main.spi"}} /       │
> │ result:                                                                      │
> │ 00:01:14 v #282 Supervisor.sendJson / port: 13805 / json:               │
> │ {"FileTokenRange":{"range":[                                                 │
> │ {"character":0,"line":0},{"character":16,"line":0}],"uri":"file:///c:/ho...e │
> │ t/spiral_Eval/packages/20e725d46cfdc99c0f307f1933a76ec7da4570c1b757721164d86 │
> │ f19feaf821e/main.spi"}} / result: Some([                                     │
> │   0,                                                                         │
> │   0,                                                                         │
> │   3,                                                                         │
> │   7,                                                                         │
> │   0,                                                                         │
> │   0,                                                                         │
> │   4,                                                                         │
> │   4,                                                                         │
> │   0,                                                                         │
> │   0,                                                                         │
> │   0,                                                                         │
> │   5,                                                                         │
> │   1,                                                                         │
> │   8,                                                                         │
> │   0,                                                                         │
> │   0,                                                                         │
> │  ...8,                                                                       │
> │   0,                                                                         │
> │   0,                                                                         │
> │   2,                                                                         │
> │   1,                                                                         │
> │   4,                                                                         │
> │   0,                                                                         │
> │   0,                                                                         │
> │   2,                                                                         │
> │   1,                                                                         │
> │   8,                                                                         │
> │   0,                                                                         │
> │   0,                                                                         │
> │   1,                                                                         │
> │   1,                                                                         │
> │   8,                                                                         │
> │   0                                                                          │
> │ ])                                                                           │
> │ 00:01:15 v #283 Supervisor.sendJson / port: 13805 / json:               │
> │ {"FileDelete":{"uris":[                                                      │
> │ "file:///c:/home/git/polyglot/target/spiral_Eval/packages/20e725d46cfdc99c0f │
> │ 307f1933a76ec7da4570c1b757721164d86f19feaf821e"]}} / result:                 │
> │ 00:01:22 v #59 async.run_with_timeout_async / { timeout = 100 }         │
> │ Some [|0; 0; 3; 7; 0; 0; 4; 4; 0; 0; 0; 5; 1; 8; 0; 0; 1; 1; 8; 0; 0; 2; 1;  │
> │ 4; 0; 0; 2; 1; 8; 0; 0; 1; 1; 8; 0|]                                         │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> """inl main () = 1i32"""
> |> getCodeTokenRange None
> |> Async.runWithTimeout 10000
> |> Option.flatten
> |> _assertEqual (Some [[| 0; 0; 3; 7; 0; 0; 4; 4; 0; 0; 0; 5; 1; 8; 0; 0; 1; 1; 
> 8; 0; 0; 2; 1; 4; 0; 0;
> 2; 1; 3; 0; 0; 1; 3; 12; 0 |]])
> 
> ╭─[ 4.17s - stdout ]───────────────────────────────────────────────────────────╮
> │ 00:01:24 v #60 async.run_with_timeout_async / { timeout = 180 }         │
> │ 00:01:21 d #67 runtime.execute_with_options_async / { file_name =       │
> │ dotnet; arguments = US5_0                                                    │
> │   ""C:\home\git\polyglot\deps\The-Spiral-Language\The Spiral Language        │
> │ 2\artifacts\bin\The Spiral Language 2\release\Spiral.dll" --port 13805       │
> │ --default-int i32 --default-float f64"; options = { command = dotnet         │
> │ "C:\home\git\polyglot\deps\The-Spiral-Language\The Spiral Language           │
> │ 2\artifacts\bin\The Spiral Language 2\release\Spiral.dll" --port 13805       │
> │ --default-int i32 --default-float f64; cancellation_token = Some             │
> │ System.Threading.CancellationToken; environment_variables = [||]; on_line =  │
> │ Some <fun:it@4-426>; stdin = None; trace = true; working_directory = Some    │
> │ "C:\home\git\polyglot" } }                                                   │
> │ 00:01:22 v #68 > 00:00:00 d #1 pwd: C:\home\git\polyglot           │
> │ 00:01:22 v #69 > 00:00:00 d #2 dllPath:                            │
> │ C:\home\git\polyglot\deps\The-Spiral-Language\The Spiral Language            │
> │ 2\artifacts\bin\The Spiral Language 2\release                                │
> │ 00:01:22 v #70 > 00:00:00 d #3 targetDir:                          │
> │ C:\home\git\polyglot\target/spiral_Eval                                      │
> │ 00:01:24 v #61 async.run_with_timeout_async / { timeout = 100 }         │
> │ 00:01:25 v #62 async.run_with_timeout_async / { timeout = 100 }         │
> │ 00:01:22 v #71 > Starting the Spiral Server. It is bound to:            │
> │ http://localhost:13805                                                       │
> │ 00:01:25 v #63 async.run_with_timeout_async / { timeout = 100 }         │
> │ 00:01:18 v #284 Supervisor.sendJson / port: 13805 / json: {"Ping":true} │
> │ / result:                                                                    │
> │ 00:01:18 v #285 Supervisor.awaitCompiler / Ping / result: 'Some null' / │
> │ port: 13805 / retry: 1                                                       │
> │ 00:01:22 v #72 > Server bound to: http://localhost:13805                │
> │ 00:01:18 v #286 Supervisor.sendJson / port: 13805 / json:               │
> │ {"FileOpen":{"spiText":"inl main () =                                        │
> │ 1i32","uri":"file:///c:/home/git/polyglot/target/spiral_Eval/packages/537082 │
> │ 9508ddefc7386d6b4d280722b47d97cb925585525bee733a187ff8f18b/main.spi"}} /     │
> │ result:                                                                      │
> │ 00:01:19 v #287 Supervisor.sendJson / port: 13805 / json:               │
> │ {"FileTokenRange":{"range":[                                                 │
> │ {"character":0,"line":0},{"character":18,"line":0}],"uri":"file:///c:/ho...e │
> │ t/spiral_Eval/packages/5370829508ddefc7386d6b4d280722b47d97cb925585525bee733 │
> │ a187ff8f18b/main.spi"}} / result: Some([                                     │
> │   0,                                                                         │
> │   0,                                                                         │
> │   3,                                                                         │
> │   7,                                                                         │
> │   0,                                                                         │
> │   0,                                                                         │
> │   4,                                                                         │
> │   4,                                                                         │
> │   0,                                                                         │
> │   0,                                                                         │
> │   0,                                                                         │
> │   5,                                                                         │
> │   1,                                                                         │
> │   8,                                                                         │
> │   0,                                                                         │
> │   0,                                                                         │
> │  ...,                                                                        │
> │   0,                                                                         │
> │   0,                                                                         │
> │   2,                                                                         │
> │   1,                                                                         │
> │   4,                                                                         │
> │   0,                                                                         │
> │   0,                                                                         │
> │   2,                                                                         │
> │   1,                                                                         │
> │   3,                                                                         │
> │   0,                                                                         │
> │   0,                                                                         │
> │   1,                                                                         │
> │   3,                                                                         │
> │   12,                                                                        │
> │   0                                                                          │
> │ ])                                                                           │
> │ 00:01:19 v #288 Supervisor.sendJson / port: 13805 / json:               │
> │ {"FileDelete":{"uris":[                                                      │
> │ "file:///c:/home/git/polyglot/target/spiral_Eval/packages/5370829508ddefc738 │
> │ 6d6b4d280722b47d97cb925585525bee733a187ff8f18b"]}} / result:                 │
> │ 00:01:26 v #64 async.run_with_timeout_async / { timeout = 100 }         │
> │ Some [|0; 0; 3; 7; 0; 0; 4; 4; 0; 0; 0; 5; 1; 8; 0; 0; 1; 1; 8; 0; 0; 2; 1;  │
> │ 4; 0; 0; 2; 1; 3; 0; 0; 1; 3; 12; 0|]                                        │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ## Arguments                                                                 │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> [[<RequireQualifiedAccess>]]
> type Arguments =
>     | Build_File of string * string
>     | File_Token_Range of string * string
>     | Execute_Command of string
>     | [[<Argu.ArguAttributes.Unique>]] Timeout of int
>     | [[<Argu.ArguAttributes.Unique>]] Port of int
>     | [[<Argu.ArguAttributes.Unique>]] Parallel
>     | [[<Argu.ArguAttributes.Unique>]] Exit_On_Error
> 
>     interface Argu.IArgParserTemplate with
>         member s.Usage =
>             match s with
>             | Build_File _ -> nameof Build_File
>             | File_Token_Range _ -> nameof File_Token_Range
>             | Execute_Command _ -> nameof Execute_Command
>             | Timeout _ -> nameof Timeout
>             | Port _ -> nameof Port
>             | Parallel -> nameof Parallel
>             | Exit_On_Error-> nameof Exit_On_Error
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> Argu.ArgumentParser.Create<Arguments>().PrintUsage ()
> 
> ╭─[ 132.06ms - return value ]──────────────────────────────────────────────────╮
> │ "USAGE: dotnet-repl [--help] [--build-file <string> <string>]                │
> │                    [--file-token-range <string> <string>]                    │
> │                    [--execute-command <string>] [--timeout <int>] [--port    │
> │ <int>]                                                                       │
> │                    [--parallel] [--exit-on-error]                            │
> │                                                                              │
> │ OPTIONS:                                                                     │
> │                                                                              │
> │     --build-file <string> <string>                                           │
> │                           Build_File                                         │
> │     --file-token-range <string> <string>                                     │
> │                           File_Token_Range                                   │
> │     --execute-command <string>                                               │
> │                           Execute_Command                                    │
> │     --timeout <int>       Timeout                                            │
> │     --port <int>          Port                                               │
> │     --parallel            Parallel                                           │
> │     --exit-on-error       Exit_On_Error                                      │
> │     --help                display this list of options.                      │
> │ "                                                                            │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ## main                                                                      │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let main args =
>     let argsMap = args |> Runtime.parseArgsMap<Arguments>
> 
>     let buildFileActions =
>         argsMap
>         |> Map.tryFind (nameof Arguments.Build_File)
>         |> Option.defaultValue [[]]
>         |> List.choose (function
>             | Arguments.Build_File (inputPath, outputPath) -> Some (inputPath, 
> outputPath)
>             | _ -> None
>         )
> 
>     let fileTokenRangeActions =
>         argsMap
>         |> Map.tryFind (nameof Arguments.File_Token_Range)
>         |> Option.defaultValue [[]]
>         |> List.choose (function
>             | Arguments.File_Token_Range (inputPath, outputPath) -> Some 
> (inputPath, outputPath)
>             | _ -> None
>         )
> 
>     let executeCommandActions =
>         argsMap
>         |> Map.tryFind (nameof Arguments.Execute_Command)
>         |> Option.defaultValue [[]]
>         |> List.choose (function
>             | Arguments.Execute_Command command -> Some command
>             | _ -> None
>         )
> 
>     let timeout =
>         match argsMap |> Map.tryFind (nameof Arguments.Timeout) with
>         | Some [[ Arguments.Timeout timeout ]] -> timeout
>         | _ -> 60000 * 60
> 
>     let port =
>         match argsMap |> Map.tryFind (nameof Arguments.Port) with
>         | Some [[ Arguments.Port port ]] -> Some port
>         | _ -> None
> 
>     let isParallel = argsMap |> Map.containsKey (nameof Arguments.Parallel)
> 
>     let isExitOnError = argsMap |> Map.containsKey (nameof 
> Arguments.Exit_On_Error)
> 
>     async {
>         let port =
>             port
>             |> Option.defaultWith getCompilerPort
>         let struct (localToken, disposable) = 
> SpiralThreading.new_disposable_token None
>         let! serverPort, _errors, compilerToken, disposable = awaitCompiler port
> (Some localToken)
>         use _ = disposable
> 
>         let buildFileAsync =
>             buildFileActions
>             |> List.map (fun (inputPath, outputPath) -> async {
>                 let! _outputPath, (outputCode, errors) =
>                     let backend =
>                         if outputPath |> SpiralSm.ends_with ".fsx"
>                         then Fsharp
>                         elif outputPath |> SpiralSm.ends_with ".py"
>                         then Cuda
>                         else failwith $"Supervisor.main / invalid backend / 
> outputPath: {outputPath}"
>                     let isReal = inputPath |> SpiralSm.ends_with ".spir"
>                     inputPath |> buildFile backend timeout (Some serverPort) 
> None
> 
>                 errors
>                 |> List.map snd
>                 |> List.iter (fun error ->
>                     trace Critical (fun () -> $"main / error: {error |> 
> serializeObj}") _locals
>                 )
> 
>                 match outputCode with
>                 | Some outputCode ->
>                     do! outputCode |> SpiralFileSystem.write_all_text_exists 
> outputPath
>                     return 0
>                 | None ->
>                     if isExitOnError
>                     then SpiralRuntime.current_process_kill ()
> 
>                     return 1
>             })
> 
>         let fileTokenRangeAsync =
>             fileTokenRangeActions
>             |> List.map (fun (inputPath, outputPath) -> async {
>                 let! tokenRange = inputPath |> getFileTokenRange (Some 
> serverPort) None
>                 match tokenRange with
>                 | Some tokenRange ->
>                     do! tokenRange |> FSharp.Json.Json.serialize |> 
> SpiralFileSystem.write_all_text_exists outputPath
>                     return 0
>                 | None ->
>                     if isExitOnError
>                     then SpiralRuntime.current_process_kill ()
> 
>                     return 1
>             })
> 
>         let executeCommandAsync =
>             executeCommandActions
>             |> List.map (fun command -> async {
>                 let! exitCode, result =
>                     SpiralRuntime.execution_options (fun x ->
>                         { x with
>                             l0 = command
>                             l1 = Some compilerToken
>                         }
>                     )
>                     |> SpiralRuntime.execute_with_options_async
> 
>                 trace Debug (fun () -> $"main / executeCommand / exitCode: 
> {exitCode} / command: {command}") _locals
> 
>                 if isExitOnError && exitCode <> 0
>                 then SpiralRuntime.current_process_kill ()
> 
>                 return exitCode
>             })
> 
>         return!
>             [[| buildFileAsync; fileTokenRangeAsync; executeCommandAsync |]]
>             |> Seq.collect id
>             |> fun x ->
>                 if isParallel
>                 then Async.Parallel (x, float System.Environment.ProcessorCount 
> * 0.51 |> ceil |> int)
>                 else Async.Sequential x
>             |> Async.map Array.sum
>     }
>     |> Async.runWithTimeout timeout
>     |> Option.defaultValue 1
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let args =
>     System.Environment.GetEnvironmentVariable "ARGS"
>     |> SpiralRuntime.split_args
>     |> Result.toArray
>     |> Array.collect id
> 
> match args with
> | [[||]] -> 0
> | args -> if main args = 0 then 0 else failwith "main failed"
> 
> ╭─[ 86.30ms - return value ]───────────────────────────────────────────────────╮
> │ <div class="dni-plaintext"><pre>0                                            │
> │ </pre></div><style>                                                          │
> │ .dni-code-hint {                                                             │
> │     font-style: italic;                                                      │
> │     overflow: hidden;                                                        │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview {                                                              │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview td {                                                           │
> │     vertical-align: top;                                                     │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ details.dni-treeview {                                                       │
> │     padding-left: 1em;                                                       │
> │ }                                                                            │
> │ table td {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ table tr {                                                                   │
> │     vertical-align: top;                                                     │
> │     margin: 0em 0px;                                                         │
> │ }                                                                            │
> │ table tr td pre                                                              │
> │ {                                                                            │
> │     vertical-align: top !important;                                          │
> │     margin: 0em 0px !important;                                              │
> │ }                                                                            │
> │ table th {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ </style>                                                                     │
> ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:45 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 229714 }
00:01:45 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/polyglot/apps/spiral/Supervisor.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/polyglot/apps/spiral/Supervisor.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:01:46 v #5 ! [NbConvertApp] Converting notebook c:/home/git/polyglot/apps/spiral/Supervisor.dib.ipynb to html
00:01:46 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:01:46 v #7 !   validate(nb)
00:01:47 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:01:47 v #9 !   return _pygments_highlight(
00:01:48 v #10 ! [NbConvertApp] Writing 576665 bytes to c:\home\git\polyglot\apps\spiral\Supervisor.dib.html
00:01:49 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 864 }
00:01:49 d #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 864 }
00:01:49 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/polyglot/apps/spiral/Supervisor.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/polyglot/apps/spiral/Supervisor.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:01:49 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:01:49 d #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:01:49 d #16 spiral_builder.run / dib / { exit_code = 0; result_length = 230637 }
00:00:00 d #1 writeDibCode / output: Fs / path: Supervisor.dib
00:00:00 d #2 parseDibCode / output: Fs / file: Supervisor.dib
00:00:00 d #1 persistCodeProject / packages: [Argu; FSharp.Control.AsyncSeq; FSharp.Json; ... ] / modules: [lib/spiral/common.fsx; lib/spiral/sm.fsx; lib/spiral/crypto.fsx; ... ] / name: Supervisor / hash:  / code.Length: 28671
00:00:00 d #2 buildProject / fullPath: C:\home\git\polyglot\target\Builder\Supervisor\Supervisor.fsproj
00:00:00 d #1 runtime.execute_with_options_async / { file_name = dotnet; arguments = US5_0
  "publish "C:\home\git\polyglot\target/Builder\Supervisor\Supervisor.fsproj" --configuration Release --output "C:\home\git\polyglot\apps\spiral\dist" --runtime linux-x64"; options = { command = dotnet publish "C:\home\git\polyglot\target/Builder\Supervisor\Supervisor.fsproj" --configuration Release --output "C:\home\git\polyglot\apps\spiral\dist" --runtime linux-x64; cancellation_token = None; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = Some "C:\home\git\polyglot\target\Builder\Supervisor" } }
00:00:00 v #2 > MSBuild version 17.10.0-preview-24101-01+07fd5d51f for .NET
00:00:01 v #3 >   Determining projects to restore...
00:00:01 v #4 >   Restored C:\home\git\polyglot\target\Builder\Supervisor\Supervisor.fsproj (in 409 ms).
00:00:01 v #5 > C:\Users\i574n\scoop\apps\dotnet-sdk-preview\current\sdk\9.0.100-preview.1.24101.2\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.RuntimeIdentifierInference.targets(313,5): message NETSDK1057: You are using a preview version of .NET. See: https://aka.ms/dotnet-support-policy [C:\home\git\polyglot\target\Builder\Supervisor\Supervisor.fsproj]
00:00:16 v #6 >   Supervisor -> C:\home\git\polyglot\target\Builder\Supervisor\bin\Release\net9.0\linux-x64\Supervisor.dll
00:00:17 v #7 >   Supervisor -> C:\home\git\polyglot\apps\spiral\dist\
00:00:17 d #8 runtime.execute_with_options_async / { exit_code = 0; output_length = 688 }
00:00:17 d #9 runtime.execute_with_options_async / { file_name = dotnet; arguments = US5_0
  "publish "C:\home\git\polyglot\target/Builder\Supervisor\Supervisor.fsproj" --configuration Release --output "C:\home\git\polyglot\apps\spiral\dist" --runtime win-x64"; options = { command = dotnet publish "C:\home\git\polyglot\target/Builder\Supervisor\Supervisor.fsproj" --configuration Release --output "C:\home\git\polyglot\apps\spiral\dist" --runtime win-x64; cancellation_token = None; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = Some "C:\home\git\polyglot\target\Builder\Supervisor" } }
00:00:17 v #10 > MSBuild version 17.10.0-preview-24101-01+07fd5d51f for .NET
00:00:18 v #11 >   Determining projects to restore...
00:00:19 v #12 >   Restored C:\home\git\polyglot\target\Builder\Supervisor\Supervisor.fsproj (in 425 ms).
00:00:19 v #13 > C:\Users\i574n\scoop\apps\dotnet-sdk-preview\current\sdk\9.0.100-preview.1.24101.2\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.RuntimeIdentifierInference.targets(313,5): message NETSDK1057: You are using a preview version of .NET. See: https://aka.ms/dotnet-support-policy [C:\home\git\polyglot\target\Builder\Supervisor\Supervisor.fsproj]
00:00:32 v #14 >   Supervisor -> C:\home\git\polyglot\target\Builder\Supervisor\bin\Release\net9.0\win-x64\Supervisor.dll
00:00:33 v #15 >   Supervisor -> C:\home\git\polyglot\apps\spiral\dist\
00:00:33 d #16 runtime.execute_with_options_async / { exit_code = 0; output_length = 686 }
00:00:00 d #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "Eval.dib", "--retries", "3"])) }
00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/polyglot/apps/spiral/Eval.dib", "--output-path", "c:/home/git/polyglot/apps/spiral/Eval.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/polyglot/apps/spiral/Eval.dib" --output-path "c:/home/git/polyglot/apps/spiral/Eval.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ # Eval (Polyglot)                                                            │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> #r 
> @"../../../../../../../.nuget/packages/fsharp.control.asyncseq/3.2.1/lib/netstan
> dard2.1/FSharp.Control.AsyncSeq.dll"
> #r 
> @"../../../../../../../.nuget/packages/system.reactive/6.0.1-preview.1/lib/net6.
> 0/System.Reactive.dll"
> #r 
> @"../../../../../../../.nuget/packages/system.reactive.linq/6.0.1-preview.1/lib/
> netstandard2.0/System.Reactive.Linq.dll"
> #r 
> @"../../../../../../../.nuget/packages/argu/6.2.4/lib/netstandard2.0/Argu.dll"
> #r 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.http.connections.com
> mon/7.0.0/lib/net7.0/Microsoft.AspNetCore.Http.Connections.Common.dll"
> #r 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.http.connections.cli
> ent/7.0.0/lib/net7.0/Microsoft.AspNetCore.Http.Connections.Client.dll"
> #r 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.signalr.common/7.0.0
> /lib/net7.0/Microsoft.AspNetCore.SignalR.Common.dll"
> #r 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.signalr.client/7.0.0
> /lib/net7.0/Microsoft.AspNetCore.SignalR.Client.dll"
> #r 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.signalr.client.core/
> 7.0.0/lib/net7.0/Microsoft.AspNetCore.SignalR.Client.Core.dll"
> #r 
> @"../../../../../../../.nuget/packages/fsharp.json/0.4.1/lib/netstandard2.0/FSha
> rp.Json.dll"
> #r 
> @"../../../../../../../.nuget/packages/system.management/7.0.0/lib/netstandard2.
> 0/System.Management.dll"
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> #if !INTERACTIVE
> open Lib
> #endif
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> open Common
> open SpiralFileSystem.Operators
> open Microsoft.AspNetCore.SignalR.Client
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> open System
> open System.Collections.Generic
> open System.IO
> open System.Text
> open System.Threading
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ## mapErrors                                                                 │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline mapErrors (severity, errors, lastTopLevelIndex) allCode =
>     let allCodeLineLength =
>         allCode |> SpiralSm.split "\n" |> Array.length
> 
>     errors
>     |> List.map (fun (_, error) ->
>         match error with
>         | Supervisor.FatalError message ->
>             (
>                 severity, message, 0, ("", (0, 0), (0, 0))
>             )
>             |> List.singleton
>         | Supervisor.TracedError data ->
>             data.trace
>             |> List.truncate 5
>             |> List.append [[ data.message ]]
>             |> List.map (fun message ->
>                 (
>                     severity, message, 0, ("", (0, 0), (0, 0))
>                 )
>             )
>         | Supervisor.PackageErrors data
>         | Supervisor.TokenizerErrors data
>         | Supervisor.ParserErrors data
>         | Supervisor.TypeErrors data ->
>             data.errors
>             |> List.filter (fun ((rangeStart, _), _) ->
>                 trace Debug (fun () -> $"Eval.mapErrors / rangeStart.line: 
> {rangeStart.line} / lastTopLevelIndex: {lastTopLevelIndex} / allCodeLineLength: 
> {allCodeLineLength} / filtered: {rangeStart.line > allCodeLineLength}") _locals
>                 rangeStart.line > allCodeLineLength
>             )
>             |> List.map (fun ((rangeStart, rangeEnd), message) ->
>                 (
>                     severity,
>                     message,
>                     0,
>                     (
>                         (data.uri |> System.IO.Path.GetFileName),
>                         (
>                             (match lastTopLevelIndex with
>                             | Some i when rangeStart.line >= i + 
> allCodeLineLength + 3 ->
>                                 rangeStart.line - allCodeLineLength - 2
>                             | _ -> rangeStart.line - allCodeLineLength),
>                             (match lastTopLevelIndex with
>                             | Some i when rangeStart.line >= i + 
> allCodeLineLength + 3 ->
>                                 rangeStart.character - 4
>                             | _ -> rangeStart.character)
>                         ),
>                         (
>                             (match lastTopLevelIndex with
>                             | Some i when rangeStart.line >= i + 
> allCodeLineLength + 3 ->
>                                 rangeEnd.line - allCodeLineLength - 2
>                             | _ -> rangeEnd.line - allCodeLineLength),
>                             (match lastTopLevelIndex with
>                             | Some i when rangeStart.line >= i + 
> allCodeLineLength + 3 ->
>                                 rangeEnd.character - 4
>                             | _ -> rangeEnd.character)
>                         )
>                     )
>                 )
>             )
>     )
>     |> List.collect id
>     |> List.toArray
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ### workspaceRoot                                                            │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let workspaceRoot = SpiralFileSystem.get_workspace_root ()
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ### targetDir                                                                │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let targetDir = workspaceRoot </> "target/spiral_Eval"
> [[ targetDir ]]
> |> List.iter (fun dir -> if Directory.Exists dir |> not then 
> Directory.CreateDirectory dir |> ignore)
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ### assemblyName                                                             │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let assemblyName = Reflection.Assembly.GetEntryAssembly().GetName().Name
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ## allCode                                                                   │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let mutable allCode = ""
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ### allPackages                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let mutable allPackages : string [[]] = [[||]]
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ## allCodeReal                                                               │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let mutable allCodeReal = ""
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ## traceToggle                                                               │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let mutable traceToggle = false
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ## getParentProcessId                                                        │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let getParentProcessId () =
>     if SpiralPlatform.is_windows () |> not
>     then 0u
>     else
>         let pid = System.Diagnostics.Process.GetCurrentProcess().Id
>         let query = $"SELECT ParentProcessId FROM Win32_Process WHERE ProcessId 
> = {pid}"
>         use searcher = new System.Management.ManagementObjectSearcher (query)
>         use results = searcher.Get ()
>         let data = results |> Seq.cast<System.Management.ManagementObject>
>         if data |> Seq.isEmpty
>         then 0u
>         else data |> Seq.head |> (fun mo -> mo.[["ParentProcessId"]] :?> uint32)
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ## startTokenRangeWatcher                                                    │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline startTokenRangeWatcher () =
>     if [[ "dotnet-repl" ]] |> List.contains assemblyName |> not then
>         let tokensDir = targetDir </> "tokens"
> 
>         [[ tokensDir ]]
>         |> List.iter (fun dir -> if Directory.Exists dir |> not then 
> Directory.CreateDirectory dir |> ignore)
> 
>         let stream, disposable = FileSystem.watchDirectory (fun _ -> false) 
> tokensDir
> 
>         try
>             let existingFilesChild =
>                 tokensDir
>                 |> System.IO.Directory.GetDirectories
>                 |> Array.map (fun codeDir -> async {
>                     try
>                         let tokensPath = codeDir </> "tokens.json"
>                         if tokensPath |> File.Exists |> not then
>                             let spiralCodePath = codeDir </> "main.spi"
>                             let spiralRealCodePath = codeDir </> 
> "main_real.spir"
>                             let spiralExists = spiralCodePath |> 
> System.IO.File.Exists
>                             let spiralRealExists = spiralRealCodePath |> 
> System.IO.File.Exists
>                             if spiralExists |> not && spiralRealExists |> not
>                             then do! codeDir |> 
> SpiralFileSystem.delete_directory_async |> Async.Ignore
>                             else
>                                 let! tokens =
>                                     if spiralExists then spiralCodePath else 
> spiralRealCodePath
>                                     |> Supervisor.getFileTokenRange None None
>                                 match tokens with
>                                 | Some tokens ->
>                                     do!
>                                         tokens
>                                         |> FSharp.Json.Json.serialize
>                                         |> SpiralFileSystem.write_all_text_async
> tokensPath
>                                 | None ->
>                                     trace Verbose (fun () -> 
> $"Eval.startTokenRangeWatcher / GetDirectories / tokens: None") _locals
>                     with ex ->
>                         trace Critical (fun () -> $"Eval.startTokenRangeWatcher 
> / GetDirectories / ex: {ex |> SpiralSm.format_exception}") _locals
>                 })
>                 |> Async.Parallel
>                 |> Async.Ignore
> 
>             let streamAsyncChild =
>                 stream
>                 |> FSharp.Control.AsyncSeq.iterAsyncParallel (fun (ticks, event)
> ->
>                     match event with
>                     | FileSystem.FileSystemChange.Changed (codePath, _)
>                         when [[ "main.spi"; "main_real.spir" ]]
>                             |> List.contains (System.IO.Path.GetFileName 
> codePath)
>                         ->
>                         async {
>                             let hashDir = codePath |> 
> System.IO.Directory.GetParent
>                             let hashHex = hashDir.Name
>                             let codePath = tokensDir </> codePath
>                             let tokensPath = tokensDir </> hashHex </> 
> "tokens.json"
>                             // do! Async.Sleep 30
>                             let rec loop retry = async {
>                                 let! tokens = codePath |> 
> Supervisor.getFileTokenRange None None
>                                 if retry = 3 || tokens <> Some [[||]]
>                                 then return tokens, retry
>                                 else
>                                     trace Debug
>                                         (fun () -> $"Eval.startTokenRangeWatcher
> / iterAsyncParallel")
>                                         (fun () -> $"retry: {retry} / tokens: 
> %A{tokens}")
>                                     do! Async.Sleep 30
>                                     return! loop (retry + 1)
>                             }
>                             let! tokens, retries = loop 1
>                             match tokens with
>                             | Some tokens ->
>                                 do!
>                                     tokens
>                                     |> FSharp.Json.Json.serialize
>                                     |> SpiralFileSystem.write_all_text_exists 
> tokensPath
>                             | None ->
>                                 trace Debug
>                                     (fun () -> $"Eval.startTokenRangeWatcher / 
> iterAsyncParallel")
>                                     (fun () -> $"retries: {retries} / tokens: 
> {tokens}")
>                         }
>                         |> Async.retryAsync 3
>                         |> Async.map (Result.toOption >> Option.defaultValue ())
>                     | _ -> () |> Async.init
>                 )
> 
>             let parentAsyncChild = async {
>                 let parentProcessId = getParentProcessId ()
>                 trace Verbose
>                     (fun () -> "Eval.parentAsyncChild")
>                     (fun () -> $"parentProcessId: {parentProcessId} / {_locals 
> ()}")
> 
>                 if parentProcessId > 0u then
>                     let parentProcess = parentProcessId |> int |> 
> System.Diagnostics.Process.GetProcessById
>                     do! parentProcess.WaitForExitAsync () |> Async.AwaitTask
>                     trace Debug
>                         (fun () -> "Eval.parentAsyncChild / Parent process has 
> exited. Performing cleanup...")
>                         (fun () -> $"{_locals ()}")
>                     System.Threading.Thread.Sleep 1000
>                     System.Environment.Exit 1
>             }
> 
>             async {
>                 do! Async.Sleep 3000
>                 existingFilesChild |> Async.StartImmediate
>                 streamAsyncChild |> Async.Start
>                 parentAsyncChild |> Async.Start
>             }
>             |> Async.Start
>         with ex ->
>             trace Critical (fun () -> $"Eval.startTokenRangeWatcher / ex: {ex |>
> SpiralSm.format_exception}") _locals
> 
>         disposable
>     else new_disposable (fun () -> ())
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ## startCommandsWatcher                                                      │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let startCommandsWatcher (uriServer : string) =
>     let commandsDir = targetDir </> "eval_commands"
>     let commandHistoryDir = targetDir </> "eval_command_history"
>     [[ commandsDir; commandHistoryDir ]]
>     |> List.iter (fun dir -> if Directory.Exists dir |> not then 
> Directory.CreateDirectory dir |> ignore)
> 
>     Directory.EnumerateFiles commandsDir |> Seq.iter File.Delete
> 
>     let stream, disposable =
>         commandsDir
>         |> FileSystem.watchDirectory (function
>             | FileSystem.FileSystemChange.Created _ -> true
>             | _ -> false
>         )
> 
>     let connection = HubConnectionBuilder().WithUrl(uriServer).Build()
>     connection.StartAsync() |> Async.AwaitTask |> Async.Start
>     // let _ = connection.On<string>("ServerToClientMsg", fun x ->
>     //     printfn $"ServerToClientMsg: '{x}'"
>     // )
> 
>     stream
>     |> FSharp.Control.AsyncSeq.iterAsyncParallel (fun (ticks, event) -> async {
>         let _locals () = $"ticks: {ticks} / event: {event} / {_locals ()}"
>         trace Verbose (fun () -> "Eval.startCommandsWatcher / 
> iterAsyncParallel") _locals
> 
>         match event with
>         | FileSystem.FileSystemChange.Created (path, Some json) ->
>             try
>                 let fullPath = commandsDir </> path
>                 let! result = 
> connection.InvokeAsync<string>("ClientToServerMsg", json) |> Async.AwaitTask
>                 let commandHistoryPath = commandHistoryDir </> path
>                 do! fullPath |> SpiralFileSystem.move_file_async 
> commandHistoryPath |> Async.Ignore
>                 if result |> SpiralSm.trim |> String.length > 0 then
>                     let resultPath = commandHistoryDir </> 
> $"{Path.GetFileNameWithoutExtension path}_result.json"
>                     do! result |> SpiralFileSystem.write_all_text_async 
> resultPath
>             with ex ->
>                 let _locals () = $"ex: {ex |> SpiralSm.format_exception} / 
> {_locals ()}"
>                 trace Critical (fun () -> "Eval.startCommandsWatcher / 
> iterAsyncParallel") _locals
>         | _ -> ()
>     })
>     |> Async.StartChild
>     |> Async.Ignore
>     |> Async.Start
> 
>     new_disposable (fun () ->
>         disposable.Dispose ()
>     )
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ## prepareSpiral                                                             │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let prepareSpiral rawCellCode lines =
>     let lastBlock =
>         lines
>         |> Array.tryFindBack (fun line ->
>             line |> String.length > 0
>             && line.[[0]] <> ' '
>         )
> 
>     let hasMain =
>         lastBlock
>         |> Option.exists (fun line ->
>             line |> SpiralSm.starts_with "inl main "
>             || line |> SpiralSm.starts_with "let main "
>         )
> 
>     if hasMain
>     then rawCellCode, None
>     else
>         let lastTopLevelIndex, _ =
>             (lines |> Array.indexed, (None, false))
>             ||> Array.foldBack (fun (i, line) (lastTopLevelIndex, finished) ->
>                 // trace Verbose (fun () -> $"Eval.prepareSpiral / i: {i} / 
> line: '{line}' / lastTopLevelIndex: {lastTopLevelIndex} / finished: {finished}")
> _locals
>                 match line with
>                 | _ when finished -> lastTopLevelIndex, true
>                 | "" -> lastTopLevelIndex, false
>                 | line when
>                     line |> SpiralSm.starts_with " "
>                     || line |> SpiralSm.starts_with "// " -> lastTopLevelIndex, 
> false
>                 | line when
>                     line |> SpiralSm.starts_with "open "
>                     || line |> SpiralSm.starts_with "prototype "
>                     || line |> SpiralSm.starts_with "instance "
>                     || line |> SpiralSm.starts_with "type "
>                     || line |> SpiralSm.starts_with "union "
>                     || line |> SpiralSm.starts_with "nominal " -> 
> lastTopLevelIndex, true
>                 | line when
>                     line |> SpiralSm.starts_with "inl "
>                     || line |> SpiralSm.starts_with "and "
>                     || line |> SpiralSm.starts_with "let " ->
>                     let m =
>                         System.Text.RegularExpressions.Regex.Match (
>                             line,
>                             @"^(?:and +)?(inl|let) +((?:[[{( 
> ]]*)?[[~\(\w]]+[[\w\d']]*(?:|[[\w\d']]+[[ }]]*(?:&? *[[\w\d']]*\))?| 
> *[[~\w]][[\w\d']]*\)|, *[[~\w]][[\w\d']]*)) +[[:=]](?! +function)"
>                         )
>                     trace Verbose (fun () -> $"Eval.prepareSpi / m: '{m}' / 
> m.Groups.Count: {m.Groups.Count}") _locals
>                     if m.Groups.Count = 3
>                     then Some i, false
>                     else lastTopLevelIndex, true
>                 | _ -> Some i, false
>             )
>         let code =
>             match lastTopLevelIndex with
>             | Some lastTopLevelIndex ->
>                 lines
>                 |> Array.mapi (fun i line ->
>                     match i with
>                     | i when i < lastTopLevelIndex -> line
>                     | i when i = lastTopLevelIndex -> $"\nlet main () =\n    
> {line}"
>                     | _ when line |> SpiralSm.trim = "" -> ""
>                     | _ -> $"    {line}"
>                 )
>                 |> SpiralSm.concat "\n"
>             | None -> $"{rawCellCode}\n\ninl main () = ()\n"
>         code, lastTopLevelIndex
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ## processSpiralOutput                                                       │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let processSpiralOutput
>     (props : {|
>         printCode: bool
>         traceLevel: TraceLevel
>         builderCommands: string array
>         lastTopLevelIndex: int option
>         backend: Supervisor.Backend
>         cancellationToken: _
>         spiralErrors: _
>         code: string
>         outputPath: string
>         isReal: bool
>     |})
>     = async {
>     let inline _trace (fn : unit -> string) =
>         if props.traceLevel = Verbose
>         then trace Info (fun () -> $"Eval.processSpiralOutput / props: {props |>
> FSharp.Json.Json.serialize |> SpiralSm.ellipsis_end 400} / {fn ()}") _locals
>         else fn () |> System.Console.WriteLine
> 
>     if props.printCode && props.backend <> Supervisor.Cuda then
>         let ext = props.outputPath |> System.IO.Path.GetExtension
>         _trace (fun () -> if props.builderCommands.Length > 0 then 
> $"{ext}:\n{props.code}\n" else props.code)
> 
>     let workspaceRootExternal =
>         let currentDir = System.IO.Directory.GetCurrentDirectory () |> 
> SpiralSm.to_lower
>         let workspaceRoot = workspaceRoot |> SpiralSm.to_lower
>         if currentDir |> SpiralSm.starts_with workspaceRoot
>         then None
>         else Some workspaceRoot
> 
>     let! spiralBuilderResults =
>         match props.builderCommands, props.lastTopLevelIndex with
>         | [[||]], _ | _, None -> [[||]] |> Async.init
>         | builderCommands, _ ->
>             builderCommands
>             |> Array.map (fun builderCommand ->
>                 let path =
>                     workspaceRoot </> 
> $@"workspace/target/release/spiral_builder{SpiralPlatform.get_executable_suffix 
> ()}"
>                     |> System.IO.Path.GetFullPath
>                 let commands =
>                     if props.backend = Supervisor.Fsharp
>                         && (
>                             builderCommand |> SpiralSm.starts_with "rust"
>                             || builderCommand |> SpiralSm.starts_with 
> "typescript"
>                             || builderCommand |> SpiralSm.starts_with "python"
>                         )
>                     then [[| $"{path} fable --fs-path \"{props.outputPath}\" 
> --command \"{builderCommand}\"" |]]
>                     elif props.backend = Supervisor.Cuda
>                         && builderCommand |> SpiralSm.starts_with "cuda"
>                     then [[| $"{path} {builderCommand} --py-path 
> \"{props.outputPath}\"" |]]
>                     else [[||]]
>                 builderCommand, commands
>             )
>             |> Array.filter (fun (_, commands) -> commands.Length > 0)
>             |> Array.collect (fun (builderCommand, commands) ->
>                 commands
>                 |> Array.map (fun command -> async {
>                     let! exitCode, result =
>                         SpiralRuntime.execution_options (fun x ->
>                             { x with
>                                 l0 = command
>                                 l1 = props.cancellationToken
>                                 l2 = [[|
>                                     "AUTOMATION", assemblyName = "dotnet-repl" 
> |> string
>                                     "TRACE_LEVEL", $"%A{if props.printCode then 
> props.traceLevel else Info}"
>                                 |]]
>                                 l6 = workspaceRootExternal
>                             }
>                         )
>                         |> SpiralRuntime.execute_with_options_async
>                     trace Debug
>                         (fun () -> $"Eval.processSpiralOutput / spiral_builder")
>                         (fun () -> $"exitCode: {exitCode} / builderCommand: 
> {builderCommand} / command: {command} / result: {result |> SpiralSm.ellipsis_end
> 400} / {_locals ()}")
>                     return
>                         if exitCode = 0
>                         then {| code = result; eval = false; builderCommand = 
> builderCommand |} |> Ok
>                         else result |> Error
>                 })
>             )
>             |> Async.Parallel
> 
>     let hasEval =
>         props.backend = Supervisor.Fsharp
>         && props.builderCommands |> Array.exists (fun x -> x |> 
> SpiralSm.starts_with "fsharp")
> 
>     let outputResult =
>         if props.builderCommands.Length > 0 && not hasEval
>         then None
>         else
>             let code =
>                 if props.builderCommands.Length > 1
>                 then
>                     let header = "System.Console.WriteLine \".fsx output:\"\n"
>                     $"{header}{props.code}"
>                 else props.code
>             Some (Ok [[ {| code = code; eval = true; builderCommand = "" |} ]])
> 
>     match outputResult, spiralBuilderResults with
>     | Some outputResult, [[||]] ->
>         return outputResult, [[||]]
>     | None, [[||]] ->
>         return Ok [[ {| code = "()"; eval = true; builderCommand = "" |} ]], 
> [[||]]
>     | _, spiralBuilderResults ->
>         try
>             let spiralResults =
>                 match outputResult with
>                 | Some (Ok code) ->
>                     spiralBuilderResults
>                     |> Array.append (code |> List.map Ok |> List.toArray)
>                 | _ -> spiralBuilderResults
>             let codes =
>                 spiralResults
>                 |> Array.map (fun spiralBuilderResult' ->
>                     let commandResult, errors =
>                         match spiralBuilderResult' with
>                         | Ok result when result.eval = false ->
>                             let result' =
>                                 result.code
>                                 |> 
> FSharp.Json.Json.deserialize<Map<string,string>>
>                             let result =
>                                 match result' |> Map.tryFind "command_result" 
> with
>                                 | Some result'' ->
>                                     result''
>                                     |> 
> FSharp.Json.Json.deserialize<Map<string,string>>
>                                     |> Map.add "builderCommand" 
> result.builderCommand
>                                 | None -> Map.empty
>                             result, [[||]]
>                         | Ok result when result.eval = true ->
>                             let result =
>                                 [[
>                                     "extension", "fsx"
>                                     "code", result.code
>                                     "output", ""
>                                 ]]
>                                 |> Map.ofList
>                             result, [[||]]
>                         | Error error ->
>                             Map.empty,
>                             [[|
>                                 (
>                                     TraceLevel.Critical, 
> $"Eval.processSpiralOutput / evalResult error / errors[[0]] / outputPath: 
> {props.outputPath} / builderCommands: %A{props.builderCommands} / 
> spiralBuilderResult': %A{spiralBuilderResult'} / error: %A{error}", 0, ("", (0, 
> 0), (0, 0))
>                                 )
>                             |]]
>                         | _ ->
>                             Map.empty, [[||]]
> 
>                     if errors |> Array.isEmpty |> not
>                     then Error (Exception $"Eval.processSpiralOutput / 
> evalResult errors / Exception / commandResult: %A{commandResult}"), errors
>                     else
>                         let extension = commandResult.[["extension"]]
>                         let code = commandResult.[["code"]]
>                         let output = commandResult.[["output"]]
>                         let builderCommand =
>                             commandResult
>                             |> Map.tryFind "builderCommand"
>                             |> Option.defaultValue ""
> 
>                         let backendInfo =
>                             match props.backend, builderCommand with
>                             | Supervisor.Fsharp, builderCommand
>                                 when builderCommand |> SpiralSm.contains " " -> 
> $" ({builderCommand})"
>                             | Supervisor.Fsharp, _ -> ""
>                             | _ -> $" ({props.backend})"
> 
>                         let eval = output = "" && extension = "fsx"
> 
>                         if props.printCode && not eval
>                         then _trace (fun () -> 
> $""".{extension}{backendInfo}:{'\n'}{code}""")
> 
>                         trace Debug
>                             (fun () -> $"Eval.processSpiralOutput / result")
>                             (fun () -> $"builderCommand: {builderCommand} / 
> extension: {extension} / commandResult: {commandResult |> 
> FSharp.Json.Json.serialize |> SpiralSm.ellipsis_end 400}/ {_locals ()}")
> 
>                         let code =
>                             if props.printCode
>                                 || spiralResults.Length > 1
>                                 || props.builderCommands.Length > 1
>                             then
>                                 if eval
>                                 then code
>                                 else
>                                     let header = $".{extension} 
> output{backendInfo}:\n"
>                                     $"""{if output |> SpiralSm.contains "\n" 
> then "\n" else ""}{header}{output}"""
>                             elif eval
>                             then code
>                             else output
>                         Ok {| code = code; eval = eval; builderCommand = 
> builderCommand |}, [[||]]
>                 )
>             trace Debug
>                 (fun () -> $"Eval.processSpiralOutput / codes")
>                 (fun () ->
>                     let props = {| props with cancellationToken = None |}
>                     $"codes: {codes |> FSharp.Json.Json.serialize |> 
> SpiralSm.ellipsis_end 400} / spiralResults: {spiralResults |> 
> FSharp.Json.Json.serialize |> SpiralSm.ellipsis_end 400} / spiralBuilderResults:
> {spiralBuilderResults |> FSharp.Json.Json.serialize |> SpiralSm.ellipsis_end 
> 400} / props: {props |> FSharp.Json.Json.serialize |> SpiralSm.ellipsis_end 400}
> / {_locals ()}")
>             return
>                 (((Ok [[]]), [[||]]), codes)
>                 ||> Array.fold (fun (acc_code, acc_errors) (code, errors) ->
>                     match code, acc_code with
>                     | Ok code, Ok acc_code ->
>                         let errors =
>                             acc_errors
>                             |> Array.append errors
>                             |> Array.append props.spiralErrors
>                         let errors =
>                             if errors |> Array.isEmpty
>                             then errors
>                             else
>                                 let code = $"%A{code}"
>                                 errors
>                                 |> Array.append [[|
>                                     TraceLevel.Critical, 
> $"Eval.processSpiralOutput / errors / errors[[-1]] / outputPath: 
> {props.outputPath} / builderCommands: %A{props.builderCommands} / code: {code |>
> SpiralSm.ellipsis_end 400}", 0, ("", (0, 0), (0, 0))
>                                 |]]
>                         Ok (code :: acc_code), errors
>                     | Error ex, _
>                     | _, Error ex ->
>                         Error (Exception $"Eval.processSpiralOutput / -1 / 
> Exception / spiralBuilderResults: %A{spiralBuilderResults} / ex: {ex |> 
> SpiralSm.format_exception}"),
>                         acc_errors |> Array.append errors
>                 )
>         with ex ->
>             trace Critical (fun () -> $"Eval.processSpiralOutput / try 2 ex / 
> spiralBuilderResults: %A{spiralBuilderResults} / ex: {ex |> 
> SpiralSm.format_exception}") _locals
>             return
>                 Error (Exception $"Eval.processSpiralOutput / try 2 ex / 
> Exception / spiralBuilderResults: %A{spiralBuilderResults} / ex: {ex |> 
> SpiralSm.format_exception}"),
>                 [[|
>                     (
>                         TraceLevel.Critical, $"Eval.processSpiralOutput / try 2 
> ex / errors[[0]] / spiralBuilderResults: %A{spiralBuilderResults} / ex: {ex |> 
> SpiralSm.format_exception}", 0, ("", (0, 0), (0, 0))
>                     )
>                 |]]
> }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ## tryGetPropertyValue                                                       │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let tryGetPropertyValue (propertyName: string) (obj: obj) =
>     let objType = obj.GetType ()
>     let propertyInfo = propertyName |> objType.GetProperty
>     if propertyInfo <> null
>     then propertyInfo.GetValue (obj, null) |> Some
>     else None
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ## evalAsync                                                                 │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let rec evalAsync
>     retry
>     (props : {|
>         rawCellCode: _
>         lines: _
>         isReal: _
>         builderCommands: _ array
>         isCache: _
>         timeout: _
>         cancellationToken: _
>         printCode: _
>         traceLevel: _
>         fsi_eval: _
>     |})
>     = async {
>     try
>         let cellCode, lastTopLevelIndex = prepareSpiral props.rawCellCode 
> props.lines
>         let newAllCode =
>             if props.isReal
>             then $"{allCodeReal}\n\n{cellCode}"
>             else $"{allCode}\n\n{cellCode}"
> 
>         let buildBackends =
>             if props.builderCommands.Length = 0
>             then [[| Supervisor.Fsharp |]]
>             else
>                 props.builderCommands
>                 |> Array.map (fun x ->
>                     if x |> SpiralSm.starts_with "cuda"
>                     then Supervisor.Cuda
>                     else Supervisor.Fsharp
>                 )
>                 |> Array.distinct
> 
>         trace Verbose
>             (fun () -> $"Eval.eval")
>             (fun () -> $"lastTopLevelIndex: {lastTopLevelIndex} / 
> builderCommands: %A{props.builderCommands} / buildBackends: %A{buildBackends} / 
> isReal: {props.isReal} / {_locals ()}")
> 
>         let! buildCodeResults =
>             buildBackends
>             |> Array.map (fun backend -> async {
>                 let! result =
>                     if props.isReal
>                     then Supervisor.Spir newAllCode
>                     else
>                         Supervisor.Spi
>                             (newAllCode, if allCodeReal = "" then None else Some
> allCodeReal)
>                     |> Supervisor.buildCode backend allPackages props.isCache 
> props.timeout props.cancellationToken
>                 return backend, result
>             })
>             |> Async.Parallel
>             |> Async.catch
>             |> Async.runWithTimeoutAsync props.timeout
> 
>         match buildCodeResults with
>         | Some (Ok buildCodeResults) ->
>             let! result, errors =
>                 ((Ok [[]], [[||]]), buildCodeResults)
>                 ||> Async.fold (fun acc buildCodeResult -> async {
>                     match buildCodeResult with
>                     | backend, (_, (outputPath, Some code), spiralErrors) ->
>                         let spiralErrors =
>                             mapErrors (Warning, spiralErrors, lastTopLevelIndex)
> allCode
>                         let! result =
>                             processSpiralOutput
>                                 {|
>                                     printCode = props.printCode
>                                     traceLevel = props.traceLevel
>                                     builderCommands = props.builderCommands
>                                     lastTopLevelIndex = lastTopLevelIndex
>                                     backend = backend
>                                     cancellationToken = props.cancellationToken
>                                     spiralErrors = spiralErrors
>                                     code = code
>                                     outputPath = outputPath
>                                     isReal = props.isReal
>                                 |}
>                         match result, acc with
>                         | (Ok code, errors), (Ok acc_code, acc_errors) ->
>                             return Ok (acc_code @ code), acc_errors |> 
> Array.append errors
>                         | (Error ex, errors), _ | _, (Error ex, errors) ->
>                             return
>                                 Error (Exception $"Eval.evalAsync / 
> processSpiralOutput / Exception / buildCodeResult: %A{buildCodeResult |> 
> FSharp.Json.Json.serialize |> SpiralSm.ellipsis_end 400} / ex: {ex |> 
> SpiralSm.format_exception}"),
>                                 errors |> Array.append errors
>                     | _, (_, _, errors) when errors |> List.isEmpty |> not ->
>                         return errors.[[0]] |> fst |> Exception |> Error,
>                         mapErrors (TraceLevel.Critical, errors, 
> lastTopLevelIndex) allCode
>                     | _ -> return acc
>                 })
>             let cancellationToken = defaultArg props.cancellationToken 
> System.Threading.CancellationToken.None
>             match result, errors with
>             | Ok code, [[||]] ->
>                 let code, eval =
>                     code
>                     |> List.map (fun code ->
>                         if code.eval
>                         then None, Some code.code
>                         else Some code.code, None
>                     )
>                     |> List.unzip
>                 let code = code |> List.choose id
>                 let eval = eval |> List.choose id
> 
>                 trace Debug
>                     (fun () -> $"Eval.eval")
>                     (fun () -> $"eval: {eval |> FSharp.Json.Json.serialize |> 
> SpiralSm.ellipsis_end 400} / code: {code |> FSharp.Json.Json.serialize |> 
> SpiralSm.ellipsis_end 400} / {_locals ()}")
> 
>                 let ch, errors =
>                     match eval, code with
>                     | [[]], [[]] ->
>                         Choice2Of2 (Exception $"Eval.evalAsync / eval=[[]] / 
> code=[[]] / buildCodeResults: %A{buildCodeResults} / code: %A{code}"), errors
>                     | [[ eval ]], [[]] ->
>                         let ch, errors2 = props.fsi_eval eval cancellationToken
>                         let errors =
>                             errors2
>                             // |> Array.map (fun (e1, e2, e3, _) ->
>                             //     (e1, e2, e3, ("", (0, 0), (0, 0)))
>                             // )
>                             |> Array.append errors
>                         ch, errors
>                     | [[]], _ ->
>                         let code = code |> List.rev |> String.concat "\n\n"
>                         let code =
>                             if props.printCode
>                             then $"\"\"\"{code}\n\n\"\"\""
>                             else $"\"\"\"{code}\n\"\"\""
>                         let ch, errors2 = props.fsi_eval code cancellationToken
>                         let errors =
>                             errors2
>                             // |> Array.map (fun (e1, e2, e3, _) ->
>                             //     (e1, e2, e3, ("", (0, 0), (0, 0)))
>                             // )
>                             |> Array.append errors
>                         ch, errors
>                     | _ ->
>                         let code, errors =
>                             ((Ok (code |> List.rev), [[||]]), eval)
>                             ||> List.fold (fun (acc, acc_errors) eval ->
>                                 match acc with
>                                 | Error ch -> Error ch, acc_errors
>                                 | Ok acc ->
>                                     let ch, errors = props.fsi_eval eval 
> cancellationToken
>                                     let errors =
>                                         errors
>                                         // |> Array.map (fun (e1, e2, e3, _) ->
>                                         //     (e1, e2, e3, ("", (0, 0), (0, 
> 0)))
>                                         // )
>                                         |> Array.append acc_errors
>                                     match ch with
>                                     | Choice1Of2 v ->
>                                         let v =
>                                             v
>                                             |> tryGetPropertyValue 
> "ReflectionValue"
>                                             |> Option.map (fun x -> $"%A{x}")
>                                             |> Option.defaultValue ""
>                                         Ok (v :: acc), errors
>                                     | Choice2Of2 ex ->
>                                         trace Critical (fun () -> 
> $"Eval.evalAsync / fsi_eval fold Choice error / buildCodeResults: 
> %A{buildCodeResults} / ex: {ex |> SpiralSm.format_exception}") _locals
>                                         Error ch, errors
>                             )
>                         match code with
>                         | Error ch -> ch, errors
>                         | Ok code ->
>                             let code =
>                                 code
>                                 |> List.filter ((<>) "")
>                                 |> String.concat "\n\n"
> 
>                             let code =
>                                 if props.builderCommands.Length > 0 && 
> eval.Length = 0
>                                 then code
>                                 elif code |> SpiralSm.contains "\n\n\n"
>                                 then $"{code}\n\n"
>                                 else $"{code}\n"
> 
>                             let code =
>                                 if props.printCode
>                                 then $"\"\"\"{code}\n\n\n\"\"\""
>                                 else $"\"\"\"{code}\n\"\"\""
>                             let ch, errors2 = props.fsi_eval code 
> cancellationToken
>                             let errors =
>                                 errors2
>                                 // |> Array.map (fun (e1, e2, e3, _) ->
>                                 //     (e1, e2, e3, ("", (0, 0), (0, 0)))
>                                 // )
>                                 |> Array.append errors
>                             ch, errors
>                 match ch with
>                 | Choice1Of2 v ->
>                     if props.isReal
>                     then allCodeReal <- newAllCode
>                     else allCode <- newAllCode
>                     return Ok(v), errors
>                 | Choice2Of2 ex ->
>                     return
>                         Error (Exception $"Eval.evalAsync / -2 / Exception / ex:
> {ex |> SpiralSm.format_exception} / buildCodeResults: {buildCodeResults |> 
> FSharp.Json.Json.serialize |> SpiralSm.ellipsis_end 400}"),
>                         errors
>             | Ok code, errors ->
>                 return
>                     Error (Exception "Eval.evalAsync / errors / 
> buildCodeResults: %A{buildCodeResults} / code: %A{code}"),
>                     errors
>             | Error ex, errors ->
>                 let ex = ex |> SpiralSm.format_exception
>                 if retry <= 3 && ex |> SpiralSm.contains "Expected one of: inl, 
> let, union, nominal, prototype, type, instance, and, open"
>                 then return! evalAsync (retry + 1) props
>                 else
>                     return
>                         Error (Exception $"Eval.evalAsync / -1 / Exception / ex:
> {ex} / buildCodeResults: {buildCodeResults |> FSharp.Json.Json.serialize |> 
> SpiralSm.ellipsis_end 1500}"),
>                         errors
>         | Some (Error ex) ->
>             trace Critical (fun () -> $"Eval.evalAsync / buildCodeResults Error 
> / buildCodeResults: %A{buildCodeResults} / ex: {ex |> 
> SpiralSm.format_exception}") _locals
>             return
>                 Error (Exception $"Eval.evalAsync / buildCodeResults Error / 
> Exception / buildCodeResults: %A{buildCodeResults} / ex: {ex |> 
> SpiralSm.format_exception}"),
>                 [[|
>                     (
>                         TraceLevel.Critical, $"Eval.evalAsync / buildCodeResults
> Error / errors[[0]] / ex: {ex |> SpiralSm.format_exception} / buildCodeResults: 
> %A{buildCodeResults}", 0, ("", (0, 0), (0, 0))
>                     )
>                 |]]
>         | _ ->
>             return
>                 Error (Exception $"Eval.evalAsync / buildCodeResults / Exception
> / buildCodeResults: %A{buildCodeResults}"),
>                 [[|
>                     (
>                         TraceLevel.Critical, $"Eval.evalAsync / buildCodeResults
> / errors[[0]] / buildCodeResults: %A{buildCodeResults}", 0, ("", (0, 0), (0, 0))
>                     )
>                 |]]
>     with ex ->
>         trace Critical (fun () -> $"Eval.evalAsync / try 1 ex / ex: {ex |> 
> SpiralSm.format_exception} / lines: %A{props.lines}") _locals
>         return
>             Error (Exception $"Eval.evalAsync / try 1 ex / Exception / ex: {ex 
> |> SpiralSm.format_exception} / lines: %A{props.lines}"),
>             [[|
>                 (
>                     TraceLevel.Critical, $"Eval.evalAsync / try 1 ex / 
> errors[[0]] / ex: {ex |> SpiralSm.format_exception} / lines: %A{props.lines}", 
> 0, ("", (0, 0), (0, 0))
>                 )
>             |]]
> }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ## eval                                                                      │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline eval
>     (fsi_eval:
>         string
>         -> System.Threading.CancellationToken
>         -> Choice<'a, Exception> * (TraceLevel * string * int * (string * (int *
> int) * (int * int))) array)
>     (cancellationToken: Option<System.Threading.CancellationToken>)
>     (code: string)
>     =
>     trace Verbose
>         (fun () -> $"Eval.eval")
>         (fun () -> $"code: {code |> SpiralSm.ellipsis_end 400} / {_locals ()}")
> 
>     let rawCellCode =
>         code |> SpiralSm.replace "\r\n" "\n"
> 
>     let lines = rawCellCode |> SpiralSm.split "\n"
> 
>     if lines |> Array.exists (fun line -> line |> SpiralSm.starts_with "#r " && 
> line |> SpiralSm.ends_with "\"") then
>         let cancellationToken = defaultArg cancellationToken 
> System.Threading.CancellationToken.None
>         let ch, errors = fsi_eval code cancellationToken
>         trace Verbose (fun () -> $"Eval.eval / fsi_eval 1 / ch: %A{ch} / errors:
> {errors}") _locals
>         match ch with
>         | Choice1Of2 v -> Ok(v), errors
>         | Choice2Of2 ex -> Error(ex), errors
>     else
>         let builderCommands =
>             lines
>             |> Array.choose (fun line ->
>                 if line |> SpiralSm.starts_with "///! "
>                 then line |> SpiralSm.split "///! " |> Array.tryItem 1
>                 else None
>             )
> 
>         let packages =
>             lines
>             |> Array.choose (fun line ->
>                 if line |> SpiralSm.starts_with "//// package="
>                 then line |> SpiralSm.split "=" |> Array.skip 1 |> 
> SpiralSm.concat "" |> Some
>                 else None
>             )
>         
>         allPackages <- packages |> Array.append allPackages |> Array.distinct
> 
>         let timeout =
>             lines
>             |> Array.tryPick (fun line ->
>                 if line |> SpiralSm.starts_with "//// timeout="
>                 then line |> SpiralSm.split "=" |> Array.tryItem 1 |> Option.map
> int
>                 else None
>             )
>             |> Option.defaultValue (60000 * 60)
> 
>         let boolArg def command =
>             lines
>             |> Array.tryPick (fun line ->
>                 let text = $"//// {command}"
>                 match line.[[0..text.Length-1]], line.[[text.Length..]] with
>                 | head, "" when head = text ->
>                     Some true
>                 | head, _ when head = text ->
>                     line |> SpiralSm.split "=" |> Array.tryItem 1 |> Option.map 
> ((<>) "false")
>                 | _ -> None
>             )
>             |> Option.defaultValue def
> 
>         let printCode = "print_code" |> boolArg false
>         let isTraceToggle = "trace_toggle" |> boolArg false
>         let isTrace = "trace" |> boolArg false
>         let isCache = "cache" |> boolArg false
>         let isReal = "real" |> boolArg false
> 
>         if isTraceToggle
>         then traceToggle <- not traceToggle
> 
>         let oldLevel = get_trace_level ()
>         let traceLevel =
>             if isTrace || traceToggle
>             then Verbose
>             else Info
>         traceLevel
>         |> to_trace_level
>         |> set_trace_level
>         use _ = (new_disposable (fun () ->
>             oldLevel |> set_trace_level
>         ))
> 
>         evalAsync 1
>             {|
>                 rawCellCode = rawCellCode
>                 lines = lines
>                 isReal = isReal
>                 builderCommands = builderCommands
>                 isCache = isCache
>                 timeout = timeout
>                 cancellationToken = cancellationToken
>                 printCode = printCode
>                 traceLevel = traceLevel
>                 fsi_eval = fsi_eval
>             |}
>         |> Async.runWithTimeout timeout
>         |> Option.defaultValue (
>             Error (Exception $"Eval.eval / Async.runWithTimeout / Exception / 
> timeout: {timeout} / lines: %A{lines}"),
>             [[|
>                 (
>                     TraceLevel.Critical, $"Eval.eval / Async.runWithTimeout / 
> errors[[0]] / timeout: {timeout} / lines: %A{lines}", 0, ("", (0, 0), (0, 0))
>                 )
>             |]]
>         )
00:00:52 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 52256 }
00:00:52 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/polyglot/apps/spiral/Eval.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/polyglot/apps/spiral/Eval.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:00:53 v #5 ! [NbConvertApp] Converting notebook c:/home/git/polyglot/apps/spiral/Eval.dib.ipynb to html
00:00:53 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:00:53 v #7 !   validate(nb)
00:00:54 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:00:54 v #9 !   return _pygments_highlight(
00:00:55 v #10 ! [NbConvertApp] Writing 455963 bytes to c:\home\git\polyglot\apps\spiral\Eval.dib.html
00:00:55 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 852 }
00:00:55 d #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 852 }
00:00:55 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/polyglot/apps/spiral/Eval.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/polyglot/apps/spiral/Eval.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:00:56 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:00:56 d #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:00:56 d #16 spiral_builder.run / dib / { exit_code = 0; result_length = 53167 }
00:00:00 d #1 writeDibCode / output: Fs / path: Eval.dib
00:00:00 d #2 parseDibCode / output: Fs / file: Eval.dib
In [ ]:
{ pwsh ../lib/fsharp/build.ps1 -sequential 1 } | Invoke-Block
00:00:00 v #1 async.run_with_timeout_async / { timeout = 180 }
00:00:00 d #1 runtime.execute_with_options_async / { file_name = dotnet; arguments = US5_0
  ""C:\home\git\polyglot\deps\The-Spiral-Language\The Spiral Language 2\artifacts\bin\The Spiral Language 2\release\Spiral.dll" --port 13805 --default-int i32 --default-float f64"; options = { command = dotnet "C:\home\git\polyglot\deps\The-Spiral-Language\The Spiral Language 2\artifacts\bin\The Spiral Language 2\release\Spiral.dll" --port 13805 --default-int i32 --default-float f64; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = Some <fun:main@595-7>; stdin = None; trace = true; working_directory = Some "C:\home\git\polyglot" } }
00:00:00 v #2 > 00:00:00 d #1 pwd: C:\home\git\polyglot
00:00:00 v #3 > 00:00:00 d #2 dllPath: C:\home\git\polyglot\deps\The-Spiral-Language\The Spiral Language 2\artifacts\bin\The Spiral Language 2\release
00:00:00 v #4 > 00:00:00 d #3 targetDir: C:\home\git\polyglot\target/spiral_Eval
00:00:01 v #2 async.run_with_timeout_async / { timeout = 100 }
00:00:01 v #3 async.run_with_timeout_async / { timeout = 100 }
00:00:01 v #5 > Starting the Spiral Server. It is bound to: http://localhost:13805
00:00:01 v #4 async.run_with_timeout_async / { timeout = 100 }
00:00:01 v #1 Supervisor.sendJson / port: 13805 / json: {"Ping":true} / result:
00:00:01 v #2 Supervisor.awaitCompiler / Ping / result: 'Some null' / port: 13805 / retry: 1
00:00:01 v #6 > Server bound to: http://localhost:13805
00:00:01 d #7 runtime.execute_with_options_async / { file_name = ../../workspace/target/release/spiral_builder.exe; arguments = US5_0 "dib --path Async.dib --retries 3"; options = { command = ../../workspace/target/release/spiral_builder.exe dib --path Async.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:00:01 v #8 > 00:00:00 d #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "Async.dib", "--retries", "3"])) }
00:00:01 v #9 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/polyglot/lib/fsharp/Async.dib", "--output-path", "c:/home/git/polyglot/lib/fsharp/Async.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/polyglot/lib/fsharp/Async.dib" --output-path "c:/home/git/polyglot/lib/fsharp/Async.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:00:03 v #10 > >
00:00:03 v #11 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:03 v #12 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:03 v #13 > > │ # Async (Polyglot)                                                           │
00:00:03 v #14 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:20 v #15 > >
00:00:20 v #16 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:20 v #17 > > #if !INTERACTIVE
00:00:20 v #18 > > open Lib
00:00:20 v #19 > > #endif
00:00:20 v #20 > >
00:00:20 v #21 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:20 v #22 > > open Common
00:00:20 v #23 > >
00:00:20 v #24 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:20 v #25 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:20 v #26 > > │ ## choice                                                                    │
00:00:20 v #27 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:20 v #28 > >
00:00:20 v #29 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:20 v #30 > > let inline choice asyncs = async {
00:00:20 v #31 > >     let e = Event<_> ()
00:00:20 v #32 > >     use cts = new System.Threading.CancellationTokenSource ()
00:00:20 v #33 > >     let fn =
00:00:20 v #34 > >         asyncs
00:00:20 v #35 > >         |> Seq.map (fun a -> async {
00:00:20 v #36 > >             let! x = a
00:00:20 v #37 > >             e.Trigger x
00:00:20 v #38 > >         })
00:00:20 v #39 > >         |> Async.Parallel
00:00:20 v #40 > >         |> Async.Ignore
00:00:20 v #41 > >     Async.Start (fn, cts.Token)
00:00:20 v #42 > >     let! result = Async.AwaitEvent e.Publish
00:00:20 v #43 > >     cts.Cancel ()
00:00:20 v #44 > >     return result
00:00:20 v #45 > > }
00:00:20 v #46 > >
00:00:20 v #47 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:20 v #48 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:20 v #49 > > │ ## map                                                                       │
00:00:20 v #50 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:20 v #51 > >
00:00:20 v #52 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:20 v #53 > > let inline map fn a = async {
00:00:20 v #54 > >     let! x = a
00:00:20 v #55 > >     return fn x
00:00:20 v #56 > > }
00:00:20 v #57 > >
00:00:20 v #58 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:20 v #59 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:20 v #60 > > │ ## runWithTimeoutChoiceAsync                                                 │
00:00:20 v #61 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:20 v #62 > >
00:00:20 v #63 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:20 v #64 > > let inline runWithTimeoutChoiceAsync (timeout : int) fn =
00:00:20 v #65 > >     let _locals () = $"timeout: {timeout} / {_locals ()}"
00:00:20 v #66 > >
00:00:20 v #67 > >     let timeoutTask = async {
00:00:20 v #68 > >         do! Async.Sleep timeout
00:00:20 v #69 > >         trace Debug (fun () -> "runWithTimeoutChoiceAsync") _locals
00:00:20 v #70 > >         return None
00:00:20 v #71 > >     }
00:00:20 v #72 > >
00:00:20 v #73 > >     let task = async {
00:00:20 v #74 > >         try
00:00:20 v #75 > >             let! result = fn
00:00:20 v #76 > >             return Some result
00:00:20 v #77 > >         with
00:00:20 v #78 > >         | :? System.AggregateException as ex when
00:00:20 v #79 > >             ex.InnerExceptions
00:00:20 v #80 > >             |> Seq.exists (function :?
00:00:20 v #81 > > System.Threading.Tasks.TaskCanceledException -> true | _ -> false)
00:00:20 v #82 > >             ->
00:00:20 v #83 > >             trace Warning
00:00:20 v #84 > >                 (fun () -> "runWithTimeoutChoiceAsync")
00:00:20 v #85 > >                 (fun () -> $"ex: {ex |> SpiralSm.format_exception} / {_locals
00:00:20 v #86 > > ()}")
00:00:20 v #87 > >             return None
00:00:20 v #88 > >         | ex ->
00:00:20 v #89 > >             trace Critical
00:00:20 v #90 > >                 (fun () -> "runWithTimeoutChoiceAsync")
00:00:20 v #91 > >                 (fun () -> $"ex: {ex |> SpiralSm.format_exception} / {_locals
00:00:20 v #92 > > ()}")
00:00:20 v #93 > >             return None
00:00:20 v #94 > >     }
00:00:20 v #95 > >
00:00:20 v #96 > >     [[ timeoutTask; task ]]
00:00:20 v #97 > >     |> choice
00:00:20 v #98 > >
00:00:20 v #99 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:20 v #100 > > let inline runWithTimeoutChoice timeout fn =
00:00:20 v #101 > >     fn
00:00:20 v #102 > >     |> runWithTimeoutChoiceAsync timeout
00:00:20 v #103 > >     |> Async.RunSynchronously
00:00:20 v #104 > >
00:00:20 v #105 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:20 v #106 > > //// test
00:00:20 v #107 > >
00:00:20 v #108 > > Async.Sleep 120
00:00:20 v #109 > > |> runWithTimeoutChoice 10
00:00:20 v #110 > > |> _assertEqual None
00:00:20 v #111 > >
00:00:20 v #112 > > ╭─[ 230.83ms - stdout ]────────────────────────────────────────────────────────╮
00:00:20 v #113 > > │ 00:00:01 d #1 runWithTimeoutChoiceAsync / timeout: 10                   │
00:00:20 v #114 > > │ <null>                                                                       │
00:00:20 v #115 > > │                                                                              │
00:00:20 v #116 > > │                                                                              │
00:00:20 v #117 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:20 v #118 > >
00:00:20 v #119 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:20 v #120 > > //// test
00:00:20 v #121 > >
00:00:20 v #122 > > Async.Sleep 10
00:00:20 v #123 > > |> runWithTimeoutChoice 60
00:00:20 v #124 > > |> _assertEqual (Some ())
00:00:21 v #125 > >
00:00:21 v #126 > > ╭─[ 182.94ms - stdout ]────────────────────────────────────────────────────────╮
00:00:21 v #127 > > │ Some ()                                                                      │
00:00:21 v #128 > > │                                                                              │
00:00:21 v #129 > > │                                                                              │
00:00:21 v #130 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:21 v #131 > >
00:00:21 v #132 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:21 v #133 > > //// test
00:00:21 v #134 > >
00:00:21 v #135 > > async {
00:00:21 v #136 > >     raise (exn "error")
00:00:21 v #137 > > }
00:00:21 v #138 > > |> runWithTimeoutChoice 60
00:00:21 v #139 > > |> _assertEqual None
00:00:21 v #140 > >
00:00:21 v #141 > > ╭─[ 153.84ms - stdout ]────────────────────────────────────────────────────────╮
00:00:21 v #142 > > │ 00:00:01 c #2 runWithTimeoutChoiceAsync / ex: System.Exception: error / │
00:00:21 v #143 > > │ timeout: 60                                                                  │
00:00:21 v #144 > > │ <null>                                                                       │
00:00:21 v #145 > > │                                                                              │
00:00:21 v #146 > > │                                                                              │
00:00:21 v #147 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:21 v #148 > >
00:00:21 v #149 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:21 v #150 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:21 v #151 > > │ ## catch                                                                     │
00:00:21 v #152 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:21 v #153 > >
00:00:21 v #154 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:21 v #155 > > let inline catch a =
00:00:21 v #156 > >     a
00:00:21 v #157 > >     |> Async.Catch
00:00:21 v #158 > >     |> map (function
00:00:21 v #159 > >         | Choice1Of2 result -> Ok result
00:00:21 v #160 > >         | Choice2Of2 ex -> Error ex
00:00:21 v #161 > >     )
00:00:21 v #162 > >
00:00:21 v #163 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:21 v #164 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:21 v #165 > > │ ## runWithTimeoutAsync                                                       │
00:00:21 v #166 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:21 v #167 > >
00:00:21 v #168 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:21 v #169 > > let inline runWithTimeoutAsync (timeout : int) fn = async {
00:00:21 v #170 > >     let _locals () = $"timeout: {timeout} / {_locals ()}"
00:00:21 v #171 > >     let! child = Async.StartChild (fn, timeout)
00:00:21 v #172 > >     return!
00:00:21 v #173 > >         child
00:00:21 v #174 > >         |> catch
00:00:21 v #175 > >         |> map (function
00:00:21 v #176 > >             | Ok result -> Some result
00:00:21 v #177 > >             | Error (:? System.TimeoutException as ex) ->
00:00:21 v #178 > >                 trace Debug (fun () -> $"Async.runWithTimeoutAsync") _locals
00:00:21 v #179 > >                 None
00:00:21 v #180 > >             | Error ex ->
00:00:21 v #181 > >                 trace Critical (fun () -> $"Async.runWithTimeoutAsync** / ex:
00:00:21 v #182 > > %A{ex}") _locals
00:00:21 v #183 > >                 None
00:00:21 v #184 > >         )
00:00:21 v #185 > > }
00:00:21 v #186 > >
00:00:21 v #187 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:21 v #188 > > let inline runWithTimeout timeout fn =
00:00:21 v #189 > >     fn
00:00:21 v #190 > >     |> runWithTimeoutAsync timeout
00:00:21 v #191 > >     |> Async.RunSynchronously
00:00:21 v #192 > >
00:00:21 v #193 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:21 v #194 > > //// test
00:00:21 v #195 > >
00:00:21 v #196 > > Async.Sleep 60
00:00:21 v #197 > > |> runWithTimeout 10
00:00:21 v #198 > > |> _assertEqual None
00:00:21 v #199 > >
00:00:21 v #200 > > ╭─[ 102.40ms - stdout ]────────────────────────────────────────────────────────╮
00:00:21 v #201 > > │ 00:00:01 d #3 Async.runWithTimeoutAsync / timeout: 10                   │
00:00:21 v #202 > > │ <null>                                                                       │
00:00:21 v #203 > > │                                                                              │
00:00:21 v #204 > > │                                                                              │
00:00:21 v #205 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:21 v #206 > >
00:00:21 v #207 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:21 v #208 > > //// test
00:00:21 v #209 > >
00:00:21 v #210 > > Async.Sleep 10
00:00:21 v #211 > > |> runWithTimeout 60
00:00:21 v #212 > > |> _assertEqual (Some ())
00:00:21 v #213 > >
00:00:21 v #214 > > ╭─[ 121.63ms - stdout ]────────────────────────────────────────────────────────╮
00:00:21 v #215 > > │ Some ()                                                                      │
00:00:21 v #216 > > │                                                                              │
00:00:21 v #217 > > │                                                                              │
00:00:21 v #218 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:21 v #219 > >
00:00:21 v #220 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:21 v #221 > > //// test
00:00:21 v #222 > >
00:00:21 v #223 > > async {
00:00:21 v #224 > >     raise (exn "error")
00:00:21 v #225 > > }
00:00:21 v #226 > > |> runWithTimeout 60
00:00:21 v #227 > > |> _assertEqual None
00:00:21 v #228 > >
00:00:21 v #229 > > ╭─[ 122.34ms - stdout ]────────────────────────────────────────────────────────╮
00:00:21 v #230 > > │ 00:00:02 c #4 Async.runWithTimeoutAsync** / ex: System.Exception: error │
00:00:21 v #231 > > │    at FSI_0036.it@4-119.Invoke(Unit unitVar)                                 │
00:00:21 v #232 > > │    at Microsoft.FSharp.Control.AsyncPrimitives.CallThenInvoke[               │
00:00:21 v #233 > > │ T,TResult](AsyncActivation`1 ctxt, TResult result1, FSharpFunc`2 part2) in   │
00:00:21 v #234 > > │ D:\a\_work\1\s\src\FSharp.Core\async.fs:line 510                             │
00:00:21 v #235 > > │    at Microsoft.FSharp.Control.Trampoline.Execute(FSharpFunc`2 firstAction)  │
00:00:21 v #236 > > │ in D:\a\_work\1\s\src\FSharp.Core\async.fs:line 112                          │
00:00:21 v #237 > > │ --- End of stack trace from previous location ---                            │
00:00:21 v #238 > > │    at Microsoft.FSharp.Control.AsyncResult`1.Commit() in                     │
00:00:21 v #239 > > │ D:\a\_work\1\s\src\FSharp.Core\async.fs:line 454                             │
00:00:21 v #240 > > │    at                                                                        │
00:00:21 v #241 > > │ <StartupCode$FSharp-Core>.$Async.AwaitAndBindChildResult@1962-4.Invoke(Unit  │
00:00:21 v #242 > > │ unitVar) in D:\a\_work\1\s\src\FSharp.Core\async.fs:line 1964                │
00:00:21 v #243 > > │    at Microsoft.FSharp.Control.AsyncPrimitives.CallThenInvoke[               │
00:00:21 v #244 > > │ T,TResult](AsyncActivation`1 ctxt, TResult result1, FSharpFunc`2 part2) in   │
00:00:21 v #245 > > │ D:\a\_work\1\s\src\FSharp.Core\async.fs:line 510                             │
00:00:21 v #246 > > │    at Microsoft.FSharp.Control.Trampoline.Execute(FSharpFunc`2 firstAction)  │
00:00:21 v #247 > > │ in D:\a\_work\1\s\src\FSharp.Core\async.fs:line 112 / timeout: 60            │
00:00:21 v #248 > > │ <null>                                                                       │
00:00:21 v #249 > > │                                                                              │
00:00:21 v #250 > > │                                                                              │
00:00:21 v #251 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:21 v #252 > >
00:00:21 v #253 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:21 v #254 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:21 v #255 > > │ ## runWithTimeoutStrict                                                      │
00:00:21 v #256 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:21 v #257 > >
00:00:21 v #258 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:21 v #259 > > let inline runWithTimeoutStrict (timeout : int) fn =
00:00:21 v #260 > >     let _locals () = $"timeout: {timeout} / {_locals ()}"
00:00:21 v #261 > >
00:00:21 v #262 > >     let timeoutTask = async {
00:00:21 v #263 > >         do! Async.Sleep timeout
00:00:21 v #264 > >         return None, _locals
00:00:21 v #265 > >     }
00:00:21 v #266 > >
00:00:21 v #267 > >     let task = async {
00:00:21 v #268 > >         try
00:00:21 v #269 > >             return Async.RunSynchronously (fn, timeout) |> Some, _locals
00:00:21 v #270 > >         with
00:00:21 v #271 > >         | :? System.TimeoutException as ex ->
00:00:21 v #272 > >             let _locals () = $"ex: {ex |> SpiralSm.format_exception} / {_locals
00:00:21 v #273 > > ()}"
00:00:21 v #274 > >             return None, _locals
00:00:21 v #275 > >         | ex ->
00:00:21 v #276 > >             trace Critical
00:00:21 v #277 > >                 (fun () -> "Async.runWithTimeoutStrict / async error")
00:00:21 v #278 > >                 (fun () -> $"ex: {ex |> SpiralSm.format_exception} / {_locals
00:00:21 v #279 > > ()}")
00:00:21 v #280 > >             return raise ex
00:00:21 v #281 > >     }
00:00:21 v #282 > >
00:00:21 v #283 > >     try
00:00:21 v #284 > >         [[| timeoutTask; task |]]
00:00:21 v #285 > >         |> Array.map Async.StartAsTask
00:00:21 v #286 > >         |> System.Threading.Tasks.Task.WhenAny
00:00:21 v #287 > >         |> fun task ->
00:00:21 v #288 > >             match task.Result.Result with
00:00:21 v #289 > >             | None, _locals ->
00:00:21 v #290 > >                 trace Debug (fun () -> "runWithTimeoutStrict") _locals
00:00:21 v #291 > >                 None
00:00:21 v #292 > >             | result, _ -> result
00:00:21 v #293 > >     with
00:00:21 v #294 > >     | :? System.AggregateException as ex when
00:00:21 v #295 > >         ex.InnerExceptions
00:00:21 v #296 > >         |> Seq.exists (function :? System.Threading.Tasks.TaskCanceledException
00:00:21 v #297 > > -> true | _ -> false)
00:00:21 v #298 > >         ->
00:00:21 v #299 > >         trace Warning
00:00:21 v #300 > >             (fun () -> "Async.runWithTimeoutStrict")
00:00:21 v #301 > >             (fun () -> $"ex: {ex |> SpiralSm.format_exception} / {_locals ()}")
00:00:21 v #302 > >         None
00:00:21 v #303 > >     | ex ->
00:00:21 v #304 > >         trace Critical
00:00:21 v #305 > >             (fun () -> "Async.runWithTimeoutStrict / task error")
00:00:21 v #306 > >             (fun () -> $"ex: {ex |> SpiralSm.format_exception} / {_locals ()}")
00:00:21 v #307 > >         None
00:00:22 v #308 > >
00:00:22 v #309 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:22 v #310 > > //// test
00:00:22 v #311 > >
00:00:22 v #312 > > Async.Sleep 60
00:00:22 v #313 > > |> runWithTimeoutStrict 10
00:00:22 v #314 > > |> _assertEqual None
00:00:22 v #315 > >
00:00:22 v #316 > > ╭─[ 142.57ms - stdout ]────────────────────────────────────────────────────────╮
00:00:22 v #317 > > │ 00:00:02 d #5 runWithTimeoutStrict / timeout: 10                        │
00:00:22 v #318 > > │ <null>                                                                       │
00:00:22 v #319 > > │                                                                              │
00:00:22 v #320 > > │                                                                              │
00:00:22 v #321 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:22 v #322 > >
00:00:22 v #323 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:22 v #324 > > //// test
00:00:22 v #325 > >
00:00:22 v #326 > > Async.Sleep 10
00:00:22 v #327 > > |> runWithTimeoutStrict 60
00:00:22 v #328 > > |> _assertEqual (Some ())
00:00:22 v #329 > >
00:00:22 v #330 > > ╭─[ 154.96ms - stdout ]────────────────────────────────────────────────────────╮
00:00:22 v #331 > > │ Some ()                                                                      │
00:00:22 v #332 > > │                                                                              │
00:00:22 v #333 > > │                                                                              │
00:00:22 v #334 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:22 v #335 > >
00:00:22 v #336 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:22 v #337 > > //// test
00:00:22 v #338 > >
00:00:22 v #339 > > async {
00:00:22 v #340 > >     raise (exn "error")
00:00:22 v #341 > > }
00:00:22 v #342 > > |> runWithTimeoutStrict 60
00:00:22 v #343 > > |> _assertEqual None
00:00:22 v #344 > >
00:00:22 v #345 > > ╭─[ 163.07ms - stdout ]────────────────────────────────────────────────────────╮
00:00:22 v #346 > > │ 00:00:02 c #6 Async.runWithTimeoutStrict / async error / ex:            │
00:00:22 v #347 > > │ System.Exception: error / timeout: 60                                        │
00:00:22 v #348 > > │ 00:00:02 c #7 Async.runWithTimeoutStrict / task error / ex:             │
00:00:22 v #349 > > │ System.AggregateException: One or more errors occurred. (error) / timeout:   │
00:00:22 v #350 > > │ 60                                                                           │
00:00:22 v #351 > > │ <null>                                                                       │
00:00:22 v #352 > > │                                                                              │
00:00:22 v #353 > > │                                                                              │
00:00:22 v #354 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:22 v #355 > >
00:00:22 v #356 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:22 v #357 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:22 v #358 > > │ ## awaitValueTask                                                            │
00:00:22 v #359 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:22 v #360 > >
00:00:22 v #361 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:22 v #362 > > let inline awaitValueTaskUnit (task : System.Threading.Tasks.ValueTask) =
00:00:22 v #363 > >     task.AsTask () |> Async.AwaitTask
00:00:22 v #364 > >
00:00:22 v #365 > > let inline awaitValueTask (task : System.Threading.Tasks.ValueTask<_>) =
00:00:22 v #366 > >     task.AsTask () |> Async.AwaitTask
00:00:22 v #367 > >
00:00:22 v #368 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:22 v #369 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:22 v #370 > > │ ## init                                                                      │
00:00:22 v #371 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:22 v #372 > >
00:00:22 v #373 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:22 v #374 > > let inline init x = async {
00:00:22 v #375 > >     return x
00:00:22 v #376 > > }
00:00:22 v #377 > >
00:00:22 v #378 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:22 v #379 > > //// test
00:00:22 v #380 > >
00:00:22 v #381 > > init 1
00:00:22 v #382 > > |> Async.RunSynchronously
00:00:22 v #383 > > |> _assertEqual 1
00:00:22 v #384 > >
00:00:22 v #385 > > ╭─[ 37.13ms - stdout ]─────────────────────────────────────────────────────────╮
00:00:22 v #386 > > │ 1                                                                            │
00:00:22 v #387 > > │                                                                              │
00:00:22 v #388 > > │                                                                              │
00:00:22 v #389 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:22 v #390 > >
00:00:22 v #391 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:22 v #392 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:22 v #393 > > │ ## withCancellationToken                                                     │
00:00:22 v #394 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:22 v #395 > >
00:00:22 v #396 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:22 v #397 > > let inline withCancellationToken (ct : System.Threading.CancellationToken) fn =
00:00:22 v #398 > >     Async.StartImmediateAsTask (fn, ct)
00:00:22 v #399 > >     |> Async.AwaitTask
00:00:22 v #400 > >
00:00:22 v #401 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:22 v #402 > > //// test
00:00:22 v #403 > >
00:00:22 v #404 > > let cts = new System.Threading.CancellationTokenSource ()
00:00:22 v #405 > >
00:00:22 v #406 > > async {
00:00:22 v #407 > >     let run = async {
00:00:22 v #408 > >         do! Async.Sleep 100
00:00:22 v #409 > >         return 1
00:00:22 v #410 > >     }
00:00:22 v #411 > >
00:00:22 v #412 > >     let! child =
00:00:22 v #413 > >         run
00:00:22 v #414 > >         |> withCancellationToken cts.Token
00:00:22 v #415 > >         |> catch
00:00:22 v #416 > >         |> Async.StartChild
00:00:22 v #417 > >
00:00:22 v #418 > >     do! Async.Sleep 50
00:00:22 v #419 > >     cts.Cancel ()
00:00:22 v #420 > >     return! child
00:00:22 v #421 > > }
00:00:22 v #422 > > |> Async.RunSynchronously
00:00:22 v #423 > > |> Result.mapError _.Message
00:00:22 v #424 > > |> _assertEqual (Error ("A task was canceled."))
00:00:22 v #425 > >
00:00:22 v #426 > > ╭─[ 243.52ms - stdout ]────────────────────────────────────────────────────────╮
00:00:22 v #427 > > │ Error "A task was canceled."                                                 │
00:00:22 v #428 > > │                                                                              │
00:00:22 v #429 > > │                                                                              │
00:00:22 v #430 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:22 v #431 > >
00:00:22 v #432 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:22 v #433 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:22 v #434 > > │ ## retryAsync                                                                │
00:00:22 v #435 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:22 v #436 > >
00:00:22 v #437 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:22 v #438 > > let inline retryAsync retries fn =
00:00:22 v #439 > >     let rec loop retry lastError = async {
00:00:22 v #440 > >         try
00:00:22 v #441 > >             return!
00:00:22 v #442 > >                 if retry <= retries
00:00:22 v #443 > >                 then fn |> map Ok
00:00:22 v #444 > >                 else lastError |> Error |> init
00:00:22 v #445 > >         with ex ->
00:00:22 v #446 > >             trace Debug (fun () -> $"Async.retryAsync / retry: {retry}/{retries}
00:00:22 v #447 > > / ex: {ex |> SpiralSm.format_exception}") _locals
00:00:22 v #448 > >             do! Async.Sleep 30
00:00:22 v #449 > >             return! loop (retry + 1) (ex |> SpiralSm.format_exception)
00:00:22 v #450 > >     }
00:00:22 v #451 > >     loop 1 "Async.retryAsync / invalid retries / retries: {retries}"
00:00:22 v #452 > >
00:00:22 v #453 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:22 v #454 > > //// test
00:00:22 v #455 > >
00:00:22 v #456 > > let retry_fn_test = ref 0
00:00:22 v #457 > > async {
00:00:22 v #458 > >     retry_fn_test.Value <- retry_fn_test.Value + 1
00:00:22 v #459 > >     return retry_fn_test.Value
00:00:22 v #460 > > }
00:00:22 v #461 > > |> retryAsync 3
00:00:22 v #462 > > |> Async.RunSynchronously
00:00:22 v #463 > > |> _assertEqual (Ok 1)
00:00:23 v #464 > >
00:00:23 v #465 > > ╭─[ 120.99ms - stdout ]────────────────────────────────────────────────────────╮
00:00:23 v #466 > > │ Ok 1                                                                         │
00:00:23 v #467 > > │                                                                              │
00:00:23 v #468 > > │                                                                              │
00:00:23 v #469 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:23 v #470 > >
00:00:23 v #471 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:23 v #472 > > //// test
00:00:23 v #473 > >
00:00:23 v #474 > > let retry_fn_test = ref 0
00:00:23 v #475 > > async {
00:00:23 v #476 > >     return
00:00:23 v #477 > >         if retry_fn_test.Value >= 2
00:00:23 v #478 > >         then retry_fn_test.Value
00:00:23 v #479 > >         else
00:00:23 v #480 > >             retry_fn_test.Value <- retry_fn_test.Value + 1
00:00:23 v #481 > >             failwith "test"
00:00:23 v #482 > > }
00:00:23 v #483 > > |> retryAsync 3
00:00:23 v #484 > > |> Async.RunSynchronously
00:00:23 v #485 > > |> _assertEqual (Ok 2)
00:00:23 v #486 > >
00:00:23 v #487 > > ╭─[ 182.85ms - stdout ]────────────────────────────────────────────────────────╮
00:00:23 v #488 > > │ 00:00:03 d #8 Async.retryAsync / retry: 1/3 / ex: System.Exception:     │
00:00:23 v #489 > > │ test                                                                         │
00:00:23 v #490 > > │ 00:00:03 d #9 Async.retryAsync / retry: 2/3 / ex: System.Exception:     │
00:00:23 v #491 > > │ test                                                                         │
00:00:23 v #492 > > │ Ok 2                                                                         │
00:00:23 v #493 > > │                                                                              │
00:00:23 v #494 > > │                                                                              │
00:00:23 v #495 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:23 v #496 > >
00:00:23 v #497 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:23 v #498 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:23 v #499 > > │ ## fold                                                                      │
00:00:23 v #500 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:23 v #501 > >
00:00:23 v #502 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:23 v #503 > > let fold folder state array =
00:00:23 v #504 > >     let rec loop acc i =
00:00:23 v #505 > >         async {
00:00:23 v #506 > >             if i < Array.length array then
00:00:23 v #507 > >                 let! newAcc = folder acc array.[[i]]
00:00:23 v #508 > >                 return! loop newAcc (i + 1)
00:00:23 v #509 > >             else
00:00:23 v #510 > >                 return acc
00:00:23 v #511 > >         }
00:00:23 v #512 > >     loop state 0
00:00:23 v #513 > 00:00:21 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 21208 }
00:00:23 v #514 > 00:00:21 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/polyglot/lib/fsharp/Async.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/polyglot/lib/fsharp/Async.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:00:24 v #515 > 00:00:23 v #5 ! [NbConvertApp] Converting notebook c:/home/git/polyglot/lib/fsharp/Async.dib.ipynb to html
00:00:24 v #516 > 00:00:23 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:00:24 v #517 > 00:00:23 v #7 !   validate(nb)
00:00:25 v #518 > 00:00:23 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:00:25 v #519 > 00:00:23 v #9 !   return _pygments_highlight(
00:00:25 v #520 > 00:00:24 v #10 ! [NbConvertApp] Writing 332808 bytes to c:\home\git\polyglot\lib\fsharp\Async.dib.html
00:00:25 v #521 > 00:00:24 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 852 }
00:00:25 v #522 > 00:00:24 d #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 852 }
00:00:25 v #523 > 00:00:24 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/polyglot/lib/fsharp/Async.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/polyglot/lib/fsharp/Async.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:00:26 v #524 > 00:00:24 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:00:26 v #525 > 00:00:24 d #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:00:26 v #526 > 00:00:24 d #16 spiral_builder.run / dib / { exit_code = 0; result_length = 22119 }
00:00:26 d #527 runtime.execute_with_options_async / { exit_code = 0; output_length = 25683 }
00:00:26 d #3 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder.exe dib --path Async.dib --retries 3
00:00:26 d #528 runtime.execute_with_options_async / { file_name = ../../workspace/target/release/spiral_builder.exe; arguments = US5_0 "dib --path AsyncSeq.dib --retries 3"; options = { command = ../../workspace/target/release/spiral_builder.exe dib --path AsyncSeq.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:00:26 v #529 > 00:00:00 d #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "AsyncSeq.dib", "--retries", "3"])) }
00:00:26 v #530 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/polyglot/lib/fsharp/AsyncSeq.dib", "--output-path", "c:/home/git/polyglot/lib/fsharp/AsyncSeq.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/polyglot/lib/fsharp/AsyncSeq.dib" --output-path "c:/home/git/polyglot/lib/fsharp/AsyncSeq.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:00:28 v #531 > >
00:00:28 v #532 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:28 v #533 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:28 v #534 > > │ # AsyncSeq (Polyglot)                                                        │
00:00:28 v #535 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:44 v #536 > >
00:00:44 v #537 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:44 v #538 > > #r
00:00:44 v #539 > > @"../../../../../../../.nuget/packages/fsharp.control.asyncseq/3.2.1/lib/netstan
00:00:44 v #540 > > dard2.1/FSharp.Control.AsyncSeq.dll"
00:00:44 v #541 > > #r
00:00:44 v #542 > > @"../../../../../../../.nuget/packages/system.reactive/6.0.1-preview.1/lib/net6.
00:00:44 v #543 > > 0/System.Reactive.dll"
00:00:44 v #544 > > #r
00:00:44 v #545 > > @"../../../../../../../.nuget/packages/system.reactive.linq/6.0.1-preview.1/lib
00:00:44 v #546 > > netstandard2.0/System.Reactive.Linq.dll"
00:00:45 v #547 > >
00:00:45 v #548 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:45 v #549 > > #if !INTERACTIVE
00:00:45 v #550 > > open Lib
00:00:45 v #551 > > #endif
00:00:45 v #552 > >
00:00:45 v #553 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:45 v #554 > > open Common
00:00:45 v #555 > >
00:00:45 v #556 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:45 v #557 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:45 v #558 > > │ ## subscribeEvent                                                            │
00:00:45 v #559 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:45 v #560 > >
00:00:45 v #561 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:45 v #562 > > let inline subscribeEvent (event: IEvent<'H, 'A>) map =
00:00:45 v #563 > >     let observable = System.Reactive.Linq.Observable.FromEventPattern<'H,
00:00:45 v #564 > > 'A>(event.AddHandler, event.RemoveHandler)
00:00:45 v #565 > >     System.Reactive.Linq.Observable.Select (observable, fun event -> map
00:00:45 v #566 > > event.EventArgs)
00:00:45 v #567 > >     |> FSharp.Control.AsyncSeq.ofObservableBuffered
00:00:45 v #568 > >
00:00:45 v #569 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:45 v #570 > > //// test
00:00:45 v #571 > >
00:00:45 v #572 > > type TestEvent () as self =
00:00:45 v #573 > >     member val Calls = [[]] with get, set
00:00:45 v #574 > >     member val Event = Event<ErrorEventHandler, ErrorEventArgs> () with get
00:00:45 v #575 > >
00:00:45 v #576 > >     member _.AddCall text =
00:00:45 v #577 > >         self.Calls <- self.Calls @ [[ text ]]
00:00:45 v #578 > >
00:00:45 v #579 > >     member _.EventInterface =
00:00:45 v #580 > >         { new IEvent<ErrorEventHandler, ErrorEventArgs> with
00:00:45 v #581 > >             member _.AddHandler handler =
00:00:45 v #582 > >                 self.AddCall "AddHandler"
00:00:45 v #583 > >                 self.Event.Publish.AddHandler handler
00:00:45 v #584 > >
00:00:45 v #585 > >             member _.RemoveHandler handler =
00:00:45 v #586 > >                 self.AddCall "RemoveHandler"
00:00:45 v #587 > >                 self.Event.Publish.RemoveHandler handler
00:00:45 v #588 > >
00:00:45 v #589 > >             member _.Subscribe observer =
00:00:45 v #590 > >                 self.AddCall "IObservable.Subscribe"
00:00:45 v #591 > >                 let disposable = self.Event.Publish.Subscribe observer
00:00:45 v #592 > >                 new_disposable (fun () ->
00:00:45 v #593 > >                     self.AddCall "IObservable.Dispose"
00:00:45 v #594 > >                     disposable.Dispose ()
00:00:45 v #595 > >                 )
00:00:45 v #596 > >         }
00:00:45 v #597 > >
00:00:45 v #598 > >     member _.Subscribe () =
00:00:45 v #599 > >         subscribeEvent
00:00:45 v #600 > >             self.EventInterface
00:00:45 v #601 > >             (fun args ->
00:00:45 v #602 > >                 let result = args.GetException () |> SpiralSm.format_exception
00:00:45 v #603 > >                 self.AddCall $"TestEvent.Subscribe({result})"
00:00:45 v #604 > >                 result
00:00:45 v #605 > >             )
00:00:45 v #606 > >
00:00:45 v #607 > >     member _.Iter subscription =
00:00:45 v #608 > >         subscription
00:00:45 v #609 > >         |> FSharp.Control.AsyncSeq.iteriAsync (fun i error -> async {
00:00:45 v #610 > >             self.AddCall $"TestEvent.Iter({i}: {error})"
00:00:45 v #611 > >         })
00:00:45 v #612 > >
00:00:45 v #613 > >     member _.WaitCall text = async {
00:00:45 v #614 > >         while self.Calls |> List.last <> text do
00:00:45 v #615 > >             do! Async.SwitchToThreadPool ()
00:00:45 v #616 > >     }
00:00:45 v #617 > >
00:00:45 v #618 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:45 v #619 > > //// test
00:00:45 v #620 > >
00:00:45 v #621 > > let testEvent = TestEvent ()
00:00:45 v #622 > >
00:00:45 v #623 > > async {
00:00:45 v #624 > >     testEvent.AddCall "1"
00:00:45 v #625 > >     let! child = testEvent.Subscribe () |> testEvent.Iter |> Async.StartChild
00:00:45 v #626 > >     do! testEvent.WaitCall "AddHandler"
00:00:45 v #627 > >     testEvent.AddCall "2"
00:00:45 v #628 > >     do! child
00:00:45 v #629 > >     testEvent.AddCall "3"
00:00:45 v #630 > > }
00:00:45 v #631 > > |> Async.runWithTimeout 300
00:00:45 v #632 > > |> _assertEqual None
00:00:45 v #633 > >
00:00:45 v #634 > > testEvent.Calls
00:00:45 v #635 > > |> Seq.toList
00:00:45 v #636 > > |> _assertEqual [[ "1"; "AddHandler"; "2"; "RemoveHandler" ]]
00:00:46 v #637 > >
00:00:46 v #638 > > ╭─[ 541.59ms - stdout ]────────────────────────────────────────────────────────╮
00:00:46 v #639 > > │ 00:00:02 d #1 Async.runWithTimeoutAsync / timeout: 300                  │
00:00:46 v #640 > > │ <null>                                                                       │
00:00:46 v #641 > > │                                                                              │
00:00:46 v #642 > > │ ["1"; "AddHandler"; "2"; "RemoveHandler"]                                    │
00:00:46 v #643 > > │                                                                              │
00:00:46 v #644 > > │                                                                              │
00:00:46 v #645 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:46 v #646 > >
00:00:46 v #647 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:46 v #648 > > //// test
00:00:46 v #649 > >
00:00:46 v #650 > > let testEvent = TestEvent ()
00:00:46 v #651 > >
00:00:46 v #652 > > async {
00:00:46 v #653 > >     testEvent.AddCall "1"
00:00:46 v #654 > >     let! child = testEvent.Subscribe () |> testEvent.Iter |> Async.StartChild
00:00:46 v #655 > >     do! testEvent.WaitCall "AddHandler"
00:00:46 v #656 > >     testEvent.AddCall "2"
00:00:46 v #657 > >     use _ = testEvent.EventInterface.Subscribe (fun args ->
00:00:46 v #658 > >         testEvent.AddCall $"testEvent.EventInterface.Subscribe({args})"
00:00:46 v #659 > >     )
00:00:46 v #660 > >     testEvent.AddCall "3"
00:00:46 v #661 > >     do! child
00:00:46 v #662 > >     testEvent.AddCall "4"
00:00:46 v #663 > > }
00:00:46 v #664 > > |> Async.runWithTimeout 300
00:00:46 v #665 > > |> _assertEqual None
00:00:46 v #666 > >
00:00:46 v #667 > > testEvent.Calls
00:00:46 v #668 > > |> _assertEqual [[ "1"; "AddHandler"; "2"; "IObservable.Subscribe"; "3";
00:00:46 v #669 > > "RemoveHandler"; "IObservable.Dispose" ]]
00:00:46 v #670 > >
00:00:46 v #671 > > ╭─[ 485.69ms - stdout ]────────────────────────────────────────────────────────╮
00:00:46 v #672 > > │ 00:00:02 d #2 Async.runWithTimeoutAsync / timeout: 300                  │
00:00:46 v #673 > > │ <null>                                                                       │
00:00:46 v #674 > > │                                                                              │
00:00:46 v #675 > > │ ["1"; "AddHandler"; "2"; "IObservable.Subscribe"; "3"; "RemoveHandler";      │
00:00:46 v #676 > > │ "IObservable.Dispose"]                                                       │
00:00:46 v #677 > > │                                                                              │
00:00:46 v #678 > > │                                                                              │
00:00:46 v #679 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:46 v #680 > >
00:00:46 v #681 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:46 v #682 > > //// test
00:00:46 v #683 > >
00:00:46 v #684 > > let testEvent = TestEvent ()
00:00:46 v #685 > >
00:00:46 v #686 > > async {
00:00:46 v #687 > >     testEvent.AddCall "1"
00:00:46 v #688 > >     let! child = testEvent.Subscribe () |> testEvent.Iter |> Async.StartChild
00:00:46 v #689 > >     do! testEvent.WaitCall "AddHandler"
00:00:46 v #690 > >     testEvent.AddCall "2"
00:00:46 v #691 > >     use _ = testEvent.EventInterface.Subscribe (fun args ->
00:00:46 v #692 > >         async {
00:00:46 v #693 > >             do! testEvent.WaitCall "TestEvent.Iter(0: System.Exception: error)"
00:00:46 v #694 > >             testEvent.AddCall
00:00:46 v #695 > > $"testEvent.EventInterface.Subscribe({args.GetException () |>
00:00:46 v #696 > > SpiralSm.format_exception})"
00:00:46 v #697 > >         }
00:00:46 v #698 > >         |> Async.RunSynchronously
00:00:46 v #699 > >     )
00:00:46 v #700 > >     testEvent.AddCall "3"
00:00:46 v #701 > >     testEvent.Event.Trigger (null, ErrorEventArgs (Exception "error"))
00:00:46 v #702 > >     testEvent.AddCall "4"
00:00:46 v #703 > >     do! child
00:00:46 v #704 > >     testEvent.AddCall "5"
00:00:46 v #705 > > }
00:00:46 v #706 > > |> Async.runWithTimeout 300
00:00:46 v #707 > > |> _assertEqual None
00:00:46 v #708 > >
00:00:46 v #709 > > testEvent.Calls
00:00:46 v #710 > > |> _assertEqual [[
00:00:46 v #711 > >     "1"
00:00:46 v #712 > >     "AddHandler"
00:00:46 v #713 > >     "2"
00:00:46 v #714 > >     "IObservable.Subscribe"
00:00:46 v #715 > >     "3"
00:00:46 v #716 > >     "TestEvent.Subscribe(System.Exception: error)"
00:00:46 v #717 > >     "TestEvent.Iter(0: System.Exception: error)"
00:00:46 v #718 > >     "testEvent.EventInterface.Subscribe(System.Exception: error)"
00:00:46 v #719 > >     "4"
00:00:46 v #720 > >     "RemoveHandler"
00:00:46 v #721 > >     "IObservable.Dispose"
00:00:46 v #722 > > ]]
00:00:47 v #723 > >
00:00:47 v #724 > > ╭─[ 501.53ms - stdout ]────────────────────────────────────────────────────────╮
00:00:47 v #725 > > │ 00:00:03 d #3 Async.runWithTimeoutAsync / timeout: 300                  │
00:00:47 v #726 > > │ <null>                                                                       │
00:00:47 v #727 > > │                                                                              │
00:00:47 v #728 > > │ ["1"; "AddHandler"; "2"; "IObservable.Subscribe"; "3";                       │
00:00:47 v #729 > > │ "TestEvent.Subscribe(System.Exception: error)";                              │
00:00:47 v #730 > > │  "TestEvent.Iter(0: System.Exception: error)";                               │
00:00:47 v #731 > > │ "testEvent.EventInterface.Subscribe(System.Exception: error)"; "4";          │
00:00:47 v #732 > > │  "RemoveHandler"; "IObservable.Dispose"]                                     │
00:00:47 v #733 > > │                                                                              │
00:00:47 v #734 > > │                                                                              │
00:00:47 v #735 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:47 v #736 > >
00:00:47 v #737 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:47 v #738 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:47 v #739 > > │ ## subscribeToken                                                            │
00:00:47 v #740 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:47 v #741 > >
00:00:47 v #742 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:47 v #743 > > let subscribeToken (token : System.Threading.CancellationToken) =
00:00:47 v #744 > >     let tcs = new System.Threading.Tasks.TaskCompletionSource ()
00:00:47 v #745 > >     System.Action tcs.SetResult |> token.Register |> ignore
00:00:47 v #746 > >     let start = System.DateTime.Now.Ticks
00:00:47 v #747 > >     FSharp.Control.AsyncSeq.unfoldAsync
00:00:47 v #748 > >         (fun () -> async {
00:00:47 v #749 > >             do! tcs.Task |> Async.AwaitTask
00:00:47 v #750 > >             return Some (System.DateTime.Now.Ticks - start, ())
00:00:47 v #751 > >         })
00:00:47 v #752 > >         ()
00:00:47 v #753 > >
00:00:47 v #754 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:47 v #755 > > //// test
00:00:47 v #756 > >
00:00:47 v #757 > > let cts = new System.Threading.CancellationTokenSource ()
00:00:47 v #758 > >
00:00:47 v #759 > > async {
00:00:47 v #760 > >     let! child =
00:00:47 v #761 > >         cts.Token
00:00:47 v #762 > >         |> subscribeToken
00:00:47 v #763 > >         |> FSharp.Control.AsyncSeq.tryFirst
00:00:47 v #764 > >         |> Async.StartChild
00:00:47 v #765 > >
00:00:47 v #766 > >     do! Async.Sleep 100
00:00:47 v #767 > >     cts.Cancel ()
00:00:47 v #768 > >     return! child
00:00:47 v #769 > > }
00:00:47 v #770 > > |> Async.RunSynchronously
00:00:47 v #771 > > |> Option.get
00:00:47 v #772 > > |> fun x -> x > 900000
00:00:47 v #773 > > |> _assertEqual true
00:00:47 v #774 > >
00:00:47 v #775 > > ╭─[ 197.83ms - stdout ]────────────────────────────────────────────────────────╮
00:00:47 v #776 > > │ true                                                                         │
00:00:47 v #777 > > │                                                                              │
00:00:47 v #778 > > │                                                                              │
00:00:47 v #779 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:47 v #780 > 00:00:21 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 9731 }
00:00:47 v #781 > 00:00:21 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/polyglot/lib/fsharp/AsyncSeq.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/polyglot/lib/fsharp/AsyncSeq.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:00:48 v #782 > 00:00:22 v #5 ! [NbConvertApp] Converting notebook c:/home/git/polyglot/lib/fsharp/AsyncSeq.dib.ipynb to html
00:00:48 v #783 > 00:00:22 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:00:48 v #784 > 00:00:22 v #7 !   validate(nb)
00:00:49 v #785 > 00:00:23 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:00:49 v #786 > 00:00:23 v #9 !   return _pygments_highlight(
00:00:49 v #787 > 00:00:23 v #10 ! [NbConvertApp] Writing 303129 bytes to c:\home\git\polyglot\lib\fsharp\AsyncSeq.dib.html
00:00:49 v #788 > 00:00:23 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 858 }
00:00:49 v #789 > 00:00:23 d #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 858 }
00:00:49 v #790 > 00:00:23 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/polyglot/lib/fsharp/AsyncSeq.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/polyglot/lib/fsharp/AsyncSeq.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:00:50 v #791 > 00:00:23 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:00:50 v #792 > 00:00:23 d #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:00:50 v #793 > 00:00:23 d #16 spiral_builder.run / dib / { exit_code = 0; result_length = 10648 }
00:00:50 d #794 runtime.execute_with_options_async / { exit_code = 0; output_length = 13730 }
00:00:50 d #4 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder.exe dib --path AsyncSeq.dib --retries 3
00:00:50 d #795 runtime.execute_with_options_async / { file_name = ../../workspace/target/release/spiral_builder.exe; arguments = US5_0 "dib --path Common.dib --retries 3"; options = { command = ../../workspace/target/release/spiral_builder.exe dib --path Common.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:00:50 v #796 > 00:00:00 d #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "Common.dib", "--retries", "3"])) }
00:00:50 v #797 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/polyglot/lib/fsharp/Common.dib", "--output-path", "c:/home/git/polyglot/lib/fsharp/Common.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/polyglot/lib/fsharp/Common.dib" --output-path "c:/home/git/polyglot/lib/fsharp/Common.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:00:51 v #798 > >
00:00:51 v #799 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:51 v #800 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:51 v #801 > > │ # Common (Polyglot)                                                          │
00:00:51 v #802 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:08 v #803 > >
00:01:08 v #804 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:01:08 v #805 > > #if !INTERACTIVE
00:01:08 v #806 > > open Lib
00:01:08 v #807 > > #endif
00:01:08 v #808 > >
00:01:08 v #809 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:01:08 v #810 > > let nl = System.Environment.NewLine
00:01:08 v #811 > > let q = @""""
00:01:08 v #812 > >
00:01:08 v #813 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:01:08 v #814 > > let inline cons head tail = head :: tail
00:01:08 v #815 > >
00:01:08 v #816 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:08 v #817 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:08 v #818 > > │ ## memoize                                                                   │
00:01:08 v #819 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:08 v #820 > >
00:01:08 v #821 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:01:08 v #822 > > let inline memoize fn =
00:01:08 v #823 > >     let result = lazy fn ()
00:01:08 v #824 > >     fun () -> result.Value
00:01:08 v #825 > >
00:01:08 v #826 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:08 v #827 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:08 v #828 > > │ ## TraceLevel                                                                │
00:01:08 v #829 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:08 v #830 > >
00:01:08 v #831 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:01:08 v #832 > > type TraceLevel =
00:01:08 v #833 > >     | Verbose
00:01:08 v #834 > >     | Debug
00:01:08 v #835 > >     | Info
00:01:08 v #836 > >     | Warning
00:01:08 v #837 > >     | Critical
00:01:08 v #838 > >
00:01:08 v #839 > > let inline _locals () = ""
00:01:08 v #840 > >
00:01:08 v #841 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:08 v #842 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:08 v #843 > > │ ## trace                                                                     │
00:01:08 v #844 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:08 v #845 > >
00:01:08 v #846 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:01:08 v #847 > > let to_trace_level = function
00:01:08 v #848 > >     | Verbose -> SpiralTrace.TraceLevel.US0_0
00:01:08 v #849 > >     | Debug -> SpiralTrace.TraceLevel.US0_1
00:01:08 v #850 > >     | Info -> SpiralTrace.TraceLevel.US0_2
00:01:08 v #851 > >     | Warning -> SpiralTrace.TraceLevel.US0_3
00:01:08 v #852 > >     | Critical -> SpiralTrace.TraceLevel.US0_4
00:01:08 v #853 > >
00:01:08 v #854 > > let trace level fn locals =
00:01:08 v #855 > >     let level = level |> to_trace_level
00:01:08 v #856 > >     SpiralTrace.trace level fn locals
00:01:08 v #857 > >
00:01:08 v #858 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:01:08 v #859 > > //// test
00:01:08 v #860 > >
00:01:08 v #861 > > trace Debug (fun () -> "test") _locals
00:01:08 v #862 > >
00:01:08 v #863 > > ╭─[ 25.93ms - stdout ]─────────────────────────────────────────────────────────╮
00:01:08 v #864 > > │ 00:00:00 d #1 test                                                      │
00:01:08 v #865 > > │                                                                              │
00:01:08 v #866 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:08 v #867 > 00:00:18 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 2930 }
00:01:08 v #868 > 00:00:18 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/polyglot/lib/fsharp/Common.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/polyglot/lib/fsharp/Common.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:01:09 v #869 > 00:00:19 v #5 ! [NbConvertApp] Converting notebook c:/home/git/polyglot/lib/fsharp/Common.dib.ipynb to html
00:01:09 v #870 > 00:00:19 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:01:09 v #871 > 00:00:19 v #7 !   validate(nb)
00:01:10 v #872 > 00:00:19 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:01:10 v #873 > 00:00:19 v #9 !   return _pygments_highlight(
00:01:10 v #874 > 00:00:20 v #10 ! [NbConvertApp] Writing 280728 bytes to c:\home\git\polyglot\lib\fsharp\Common.dib.html
00:01:10 v #875 > 00:00:20 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 854 }
00:01:10 v #876 > 00:00:20 d #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 854 }
00:01:10 v #877 > 00:00:20 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/polyglot/lib/fsharp/Common.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/polyglot/lib/fsharp/Common.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:01:10 v #878 > 00:00:20 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:01:10 v #879 > 00:00:20 d #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:01:10 v #880 > 00:00:20 d #16 spiral_builder.run / dib / { exit_code = 0; result_length = 3843 }
00:01:10 d #881 runtime.execute_with_options_async / { exit_code = 0; output_length = 6546 }
00:01:10 d #5 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder.exe dib --path Common.dib --retries 3
00:01:10 d #882 runtime.execute_with_options_async / { file_name = ../../workspace/target/release/spiral_builder.exe; arguments = US5_0 "dib --path CommonFSharp.dib --retries 3"; options = { command = ../../workspace/target/release/spiral_builder.exe dib --path CommonFSharp.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:01:10 v #883 > 00:00:00 d #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "CommonFSharp.dib", "--retries", "3"])) }
00:01:10 v #884 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/polyglot/lib/fsharp/CommonFSharp.dib", "--output-path", "c:/home/git/polyglot/lib/fsharp/CommonFSharp.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/polyglot/lib/fsharp/CommonFSharp.dib" --output-path "c:/home/git/polyglot/lib/fsharp/CommonFSharp.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:01:12 v #885 > >
00:01:12 v #886 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:12 v #887 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:12 v #888 > > │ # CommonFSharp (Polyglot)                                                    │
00:01:12 v #889 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:28 v #890 > >
00:01:28 v #891 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:01:28 v #892 > > open Common
00:01:28 v #893 > >
00:01:28 v #894 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:28 v #895 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:28 v #896 > > │ ## getUnionCaseName                                                          │
00:01:28 v #897 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:28 v #898 > >
00:01:28 v #899 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:01:28 v #900 > > let inline getUnionCaseName<'T> (x: 'T) =
00:01:28 v #901 > >     match Reflection.FSharpValue.GetUnionFields(x, typeof<'T>) with
00:01:28 v #902 > >     | case, _ -> case.Name
00:01:28 v #903 > >
00:01:28 v #904 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:01:28 v #905 > > //// test
00:01:28 v #906 > >
00:01:28 v #907 > > TraceLevel.Critical
00:01:28 v #908 > > |> getUnionCaseName
00:01:28 v #909 > > |> _assertEqual (nameof TraceLevel.Critical)
00:01:28 v #910 > >
00:01:28 v #911 > > ╭─[ 73.19ms - stdout ]─────────────────────────────────────────────────────────╮
00:01:28 v #912 > > │ "Critical"                                                                   │
00:01:28 v #913 > > │                                                                              │
00:01:28 v #914 > > │                                                                              │
00:01:28 v #915 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:28 v #916 > 00:00:17 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 1546 }
00:01:28 v #917 > 00:00:17 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/polyglot/lib/fsharp/CommonFSharp.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/polyglot/lib/fsharp/CommonFSharp.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:01:29 v #918 > 00:00:19 v #5 ! [NbConvertApp] Converting notebook c:/home/git/polyglot/lib/fsharp/CommonFSharp.dib.ipynb to html
00:01:29 v #919 > 00:00:19 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:01:29 v #920 > 00:00:19 v #7 !   validate(nb)
00:01:30 v #921 > 00:00:19 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:01:30 v #922 > 00:00:19 v #9 !   return _pygments_highlight(
00:01:30 v #923 > 00:00:19 v #10 ! [NbConvertApp] Writing 275592 bytes to c:\home\git\polyglot\lib\fsharp\CommonFSharp.dib.html
00:01:30 v #924 > 00:00:19 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 866 }
00:01:30 v #925 > 00:00:19 d #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 866 }
00:01:30 v #926 > 00:00:19 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/polyglot/lib/fsharp/CommonFSharp.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/polyglot/lib/fsharp/CommonFSharp.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:01:31 v #927 > 00:00:20 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:01:31 v #928 > 00:00:20 d #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:01:31 v #929 > 00:00:20 d #16 spiral_builder.run / dib / { exit_code = 0; result_length = 2471 }
00:01:31 d #930 runtime.execute_with_options_async / { exit_code = 0; output_length = 5152 }
00:01:31 d #6 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder.exe dib --path CommonFSharp.dib --retries 3
00:01:31 d #931 runtime.execute_with_options_async / { file_name = ../../workspace/target/release/spiral_builder.exe; arguments = US5_0 "dib --path FileSystem.dib --retries 3"; options = { command = ../../workspace/target/release/spiral_builder.exe dib --path FileSystem.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:01:31 v #932 > 00:00:00 d #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "FileSystem.dib", "--retries", "3"])) }
00:01:31 v #933 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/polyglot/lib/fsharp/FileSystem.dib", "--output-path", "c:/home/git/polyglot/lib/fsharp/FileSystem.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/polyglot/lib/fsharp/FileSystem.dib" --output-path "c:/home/git/polyglot/lib/fsharp/FileSystem.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:01:32 v #934 > >
00:01:32 v #935 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:32 v #936 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:32 v #937 > > │ # FileSystem (Polyglot)                                                      │
00:01:32 v #938 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:36 v #939 > >
00:01:36 v #940 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:01:36 v #941 > > #r
00:01:36 v #942 > > @"../../../../../../../.nuget/packages/fsharp.control.asyncseq/3.2.1/lib/netstan
00:01:36 v #943 > > dard2.1/FSharp.Control.AsyncSeq.dll"
00:01:36 v #944 > > #r
00:01:36 v #945 > > @"../../../../../../../.nuget/packages/system.reactive/6.0.1-preview.1/lib/net6.
00:01:36 v #946 > > 0/System.Reactive.dll"
00:01:36 v #947 > > #r
00:01:36 v #948 > > @"../../../../../../../.nuget/packages/system.reactive.linq/6.0.1-preview.1/lib
00:01:36 v #949 > > netstandard2.0/System.Reactive.Linq.dll"
00:01:36 v #950 > > #r
00:01:36 v #951 > > @"../../../../../../../.nuget/packages/argu/6.2.4/lib/netstandard2.0/Argu.dll"
00:01:50 v #952 > >
00:01:50 v #953 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:01:50 v #954 > > #if !INTERACTIVE
00:01:50 v #955 > > open Lib
00:01:50 v #956 > > #endif
00:01:50 v #957 > >
00:01:50 v #958 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:01:50 v #959 > > open Common
00:01:50 v #960 > > open SpiralFileSystem.Operators
00:01:50 v #961 > >
00:01:50 v #962 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:50 v #963 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:50 v #964 > > │ ## watchDirectory                                                            │
00:01:50 v #965 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:50 v #966 > >
00:01:50 v #967 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:01:50 v #968 > > [[<RequireQualifiedAccess>]]
00:01:50 v #969 > > type FileSystemChangeType =
00:01:50 v #970 > >     | Failure
00:01:50 v #971 > >     | Changed
00:01:50 v #972 > >     | Created
00:01:50 v #973 > >     | Deleted
00:01:50 v #974 > >     | Renamed
00:01:50 v #975 > >
00:01:50 v #976 > > [[<RequireQualifiedAccess>]]
00:01:50 v #977 > > type FileSystemChange =
00:01:50 v #978 > >     | Failure of exn: exn
00:01:50 v #979 > >     | Changed of path: string * content: string option
00:01:50 v #980 > >     | Created of path: string * content: string option
00:01:50 v #981 > >     | Deleted of path: string
00:01:50 v #982 > >     | Renamed of oldPath: string * (string * string option)
00:01:50 v #983 > >
00:01:50 v #984 > >
00:01:50 v #985 > > let inline watchDirectoryWithFilter filter shouldReadContent path =
00:01:50 v #986 > >     let fullPath = path |> System.IO.Path.GetFullPath
00:01:50 v #987 > >     let _locals () = $"filter: {filter} / {_locals ()}"
00:01:50 v #988 > >
00:01:50 v #989 > >     let watcher =
00:01:50 v #990 > >         new System.IO.FileSystemWatcher (
00:01:50 v #991 > >             Path = fullPath,
00:01:50 v #992 > >             NotifyFilter = filter,
00:01:50 v #993 > >             EnableRaisingEvents = true,
00:01:50 v #994 > >             IncludeSubdirectories = true
00:01:50 v #995 > >         )
00:01:50 v #996 > >
00:01:50 v #997 > >     let inline getEventPath (path : string) =
00:01:50 v #998 > >         path |> SpiralSm.trim |> SpiralSm.replace fullPath "" |>
00:01:50 v #999 > > SpiralSm.trim_start [[| '/'; '\\' |]]
00:01:50 v #1000 > >
00:01:50 v #1001 > >     let inline ticks () =
00:01:50 v #1002 > >         System.DateTime.UtcNow.Ticks
00:01:50 v #1003 > >
00:01:50 v #1004 > >     let changedStream =
00:01:50 v #1005 > >         AsyncSeq.subscribeEvent
00:01:50 v #1006 > >             watcher.Changed
00:01:50 v #1007 > >             (fun event ->
00:01:50 v #1008 > >                 ticks (),
00:01:50 v #1009 > >                 [[ FileSystemChange.Changed (getEventPath event.FullPath, None)
00:01:50 v #1010 > > ]]
00:01:50 v #1011 > >             )
00:01:50 v #1012 > >
00:01:50 v #1013 > >     let deletedStream =
00:01:50 v #1014 > >         AsyncSeq.subscribeEvent
00:01:50 v #1015 > >             watcher.Deleted
00:01:50 v #1016 > >             (fun event ->
00:01:50 v #1017 > >                 ticks (),
00:01:50 v #1018 > >                 [[ FileSystemChange.Deleted (getEventPath event.FullPath) ]]
00:01:50 v #1019 > >             )
00:01:50 v #1020 > >
00:01:50 v #1021 > >     let createdStream =
00:01:50 v #1022 > >         AsyncSeq.subscribeEvent
00:01:50 v #1023 > >             watcher.Created
00:01:50 v #1024 > >             (fun event ->
00:01:50 v #1025 > >                 let path = getEventPath event.FullPath
00:01:50 v #1026 > >                 ticks (), [[
00:01:50 v #1027 > >                     FileSystemChange.Created (path, None)
00:01:50 v #1028 > >                     if SpiralPlatform.is_windows () then
00:01:50 v #1029 > >                         FileSystemChange.Changed (path, None)
00:01:50 v #1030 > >                 ]])
00:01:50 v #1031 > >
00:01:50 v #1032 > >     let renamedStream =
00:01:50 v #1033 > >         AsyncSeq.subscribeEvent
00:01:50 v #1034 > >             watcher.Renamed
00:01:50 v #1035 > >             (fun event ->
00:01:50 v #1036 > >                 ticks (), [[
00:01:50 v #1037 > >                     FileSystemChange.Renamed (
00:01:50 v #1038 > >                         getEventPath event.OldFullPath,
00:01:50 v #1039 > >                         (getEventPath event.FullPath, None)
00:01:50 v #1040 > >                     )
00:01:50 v #1041 > >                 ]]
00:01:50 v #1042 > >             )
00:01:50 v #1043 > >
00:01:50 v #1044 > >     let failureStream =
00:01:50 v #1045 > >         AsyncSeq.subscribeEvent
00:01:50 v #1046 > >             watcher.Error
00:01:50 v #1047 > >             (fun event -> ticks (), [[ FileSystemChange.Failure
00:01:50 v #1048 > > (event.GetException ()) ]])
00:01:50 v #1049 > >
00:01:50 v #1050 > >     let stream =
00:01:50 v #1051 > >         [[
00:01:50 v #1052 > >             changedStream
00:01:50 v #1053 > >             deletedStream
00:01:50 v #1054 > >             createdStream
00:01:50 v #1055 > >             renamedStream
00:01:50 v #1056 > >             failureStream
00:01:50 v #1057 > >         ]]
00:01:50 v #1058 > >         |> FSharp.Control.AsyncSeq.mergeAll
00:01:50 v #1059 > >         |> FSharp.Control.AsyncSeq.map (fun (t, events) ->
00:01:50 v #1060 > >             events
00:01:50 v #1061 > >             |> List.fold
00:01:50 v #1062 > >                 (fun (i, events) event ->
00:01:50 v #1063 > >                     i + 1L,
00:01:50 v #1064 > >                     (t + i, event) :: events)
00:01:50 v #1065 > >                 (0L, [[]])
00:01:50 v #1066 > >             |> snd
00:01:50 v #1067 > >             |> List.rev
00:01:50 v #1068 > >         )
00:01:50 v #1069 > >         |> FSharp.Control.AsyncSeq.concatSeq
00:01:50 v #1070 > >         |> FSharp.Control.AsyncSeq.mapAsyncParallel (fun (t, event) -> async {
00:01:50 v #1071 > >             match shouldReadContent event, event with
00:01:50 v #1072 > >             | true, FileSystemChange.Changed (path, _) ->
00:01:50 v #1073 > >                 do! Async.Sleep 5
00:01:50 v #1074 > >                 let! content = fullPath </> path |>
00:01:50 v #1075 > > SpiralFileSystem.read_all_text_retry_async
00:01:50 v #1076 > >                 return t, FileSystemChange.Changed (path, content)
00:01:50 v #1077 > >             | true, FileSystemChange.Created (path, _) ->
00:01:50 v #1078 > >                 do! Async.Sleep 5
00:01:50 v #1079 > >                 let! content = fullPath </> path |>
00:01:50 v #1080 > > SpiralFileSystem.read_all_text_retry_async
00:01:50 v #1081 > >                 return t, FileSystemChange.Created (path, content)
00:01:50 v #1082 > >             | true, FileSystemChange.Renamed (oldPath, (newPath, _)) ->
00:01:50 v #1083 > >                 let! content = fullPath </> newPath |>
00:01:50 v #1084 > > SpiralFileSystem.read_all_text_retry_async
00:01:50 v #1085 > >                 return t, FileSystemChange.Renamed (oldPath, (newPath, content))
00:01:50 v #1086 > >             | _ -> return t, event
00:01:50 v #1087 > >         })
00:01:50 v #1088 > >
00:01:50 v #1089 > >     let disposable =
00:01:50 v #1090 > >         new_disposable (fun () ->
00:01:50 v #1091 > >             trace Debug (fun () -> "FileSystem.watchWithFilter / Disposing watch
00:01:50 v #1092 > > stream") _locals
00:01:50 v #1093 > >             watcher.EnableRaisingEvents <- false
00:01:50 v #1094 > >             watcher.Dispose ()
00:01:50 v #1095 > >         )
00:01:50 v #1096 > >
00:01:50 v #1097 > >     stream, disposable
00:01:50 v #1098 > >
00:01:50 v #1099 > > let inline watchDirectory path =
00:01:50 v #1100 > >     watchDirectoryWithFilter
00:01:50 v #1101 > >         (System.IO.NotifyFilters.FileName
00:01:50 v #1102 > >         // ||| System.IO.NotifyFilters.DirectoryName
00:01:50 v #1103 > >         // ||| System.IO.NotifyFilters.Attributes
00:01:50 v #1104 > >         //// ||| System.IO.NotifyFilters.Size
00:01:50 v #1105 > >         ||| System.IO.NotifyFilters.LastWrite
00:01:50 v #1106 > >         //// ||| System.IO.NotifyFilters.LastAccess
00:01:50 v #1107 > >         // ||| System.IO.NotifyFilters.CreationTime
00:01:50 v #1108 > >         // ||| System.IO.NotifyFilters.Security
00:01:50 v #1109 > >         )
00:01:50 v #1110 > >         path
00:01:51 v #1111 > >
00:01:51 v #1112 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:51 v #1113 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:51 v #1114 > > │ ### testEventsRaw (test)                                                     │
00:01:51 v #1115 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:51 v #1116 > >
00:01:51 v #1117 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:01:51 v #1118 > > //// test
00:01:51 v #1119 > >
00:01:51 v #1120 > > let inline testEventsRaw
00:01:51 v #1121 > >     (watchFn : (_ -> bool) -> string -> FSharp.Control.AsyncSeq<int64 *
00:01:51 v #1122 > > FileSystemChange> * IDisposable)
00:01:51 v #1123 > >     write
00:01:51 v #1124 > >     =
00:01:51 v #1125 > >     let struct (tempDir, tempDisposable) =
00:01:51 v #1126 > >         "FileSystem.testEventsRaw"
00:01:51 v #1127 > >         |> SpiralCrypto.hash_text
00:01:51 v #1128 > >         |> SpiralFileSystem.create_temp_dir'
00:01:51 v #1129 > >     let stream, disposable = watchFn (fun _ -> true) tempDir
00:01:51 v #1130 > >
00:01:51 v #1131 > >     let events = System.Collections.Concurrent.ConcurrentBag ()
00:01:51 v #1132 > >
00:01:51 v #1133 > >     let inline iter () =
00:01:51 v #1134 > >         stream
00:01:51 v #1135 > >         |> FSharp.Control.AsyncSeq.iterAsyncParallel (fun event -> async {
00:01:51 v #1136 > > events.Add event })
00:01:51 v #1137 > >
00:01:51 v #1138 > >     let run = async {
00:01:51 v #1139 > >         let! _ = iter () |> Async.StartChild
00:01:51 v #1140 > >         do! Async.Sleep 250
00:01:51 v #1141 > >         return! write tempDir
00:01:51 v #1142 > >     }
00:01:51 v #1143 > >
00:01:51 v #1144 > >     try
00:01:51 v #1145 > >         run
00:01:51 v #1146 > >         |> Async.runWithTimeout 60000
00:01:51 v #1147 > >         |> _assertEqual (Some ())
00:01:51 v #1148 > >     finally
00:01:51 v #1149 > >         disposable.Dispose ()
00:01:51 v #1150 > >         tempDisposable.Dispose ()
00:01:51 v #1151 > >
00:01:51 v #1152 > >     let eventsLog =
00:01:51 v #1153 > >         events
00:01:51 v #1154 > >         |> Seq.toList
00:01:51 v #1155 > >         |> List.sortBy fst
00:01:51 v #1156 > >         |> List.fold
00:01:51 v #1157 > >             (fun (prev, acc) (ticks, event) ->
00:01:51 v #1158 > >                 ticks, (ticks, (if prev = 0L then 0L else ticks - prev), event)
00:01:51 v #1159 > > :: acc
00:01:51 v #1160 > >             )
00:01:51 v #1161 > >             (0L, [[]])
00:01:51 v #1162 > >         |> snd
00:01:51 v #1163 > >         |> List.rev
00:01:51 v #1164 > >         |> List.map (fun (diff, n, event) -> $"{n} / {diff} / {event}" |>
00:01:51 v #1165 > > SpiralSm.ellipsis_end 100L)
00:01:51 v #1166 > >         |> SpiralSm.concat "\n"
00:01:51 v #1167 > >     let _locals () = $"eventsLog: \n{eventsLog} / {_locals ()}"
00:01:51 v #1168 > >     trace Debug (fun () -> "FileSystem.testEventsRaw") _locals
00:01:51 v #1169 > >
00:01:51 v #1170 > >     events
00:01:51 v #1171 > >     |> Seq.toList
00:01:51 v #1172 > >     |> List.sortBy fst
00:01:51 v #1173 > >     |> List.map snd
00:01:51 v #1174 > >     |> List.fold
00:01:51 v #1175 > >         (fun acc event ->
00:01:51 v #1176 > >             match acc, event with
00:01:51 v #1177 > >             | FileSystemChange.Changed (lastPath, Some lastContent) as lastEvent
00:01:51 v #1178 > > :: acc,
00:01:51 v #1179 > >                 FileSystemChange.Changed (path, Some content)
00:01:51 v #1180 > >                 when lastPath = path && content |> SpiralSm.starts_with
00:01:51 v #1181 > > lastContent
00:01:51 v #1182 > >                 ->
00:01:51 v #1183 > >                 event :: acc
00:01:51 v #1184 > >             | _ -> event :: acc
00:01:51 v #1185 > >         )
00:01:51 v #1186 > >         [[]]
00:01:51 v #1187 > >     |> List.rev
00:01:51 v #1188 > >
00:01:51 v #1189 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:51 v #1190 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:51 v #1191 > > │ #### fast (test)                                                             │
00:01:51 v #1192 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:51 v #1193 > >
00:01:51 v #1194 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:01:51 v #1195 > > //// test
00:01:51 v #1196 > >
00:01:51 v #1197 > > let inline write path = async {
00:01:51 v #1198 > >     let n = 2
00:01:51 v #1199 > >
00:01:51 v #1200 > >     for i = 1 to n do
00:01:51 v #1201 > >         do! $"a{i}" |> SpiralFileSystem.write_all_text_async (path </>
00:01:51 v #1202 > > $"file{i}.txt")
00:01:51 v #1203 > >
00:01:51 v #1204 > >     do! Async.Sleep 250
00:01:51 v #1205 > >
00:01:51 v #1206 > >     for i = 1 to n do
00:01:51 v #1207 > >         do! $"b{i}" |> SpiralFileSystem.write_all_text_async (path </>
00:01:51 v #1208 > > $"file{i}.txt")
00:01:51 v #1209 > >
00:01:51 v #1210 > >     do! Async.Sleep 250
00:01:51 v #1211 > >
00:01:51 v #1212 > >     for i = 1 to n do
00:01:51 v #1213 > >         do! path </> $"file{i}.txt" |> SpiralFileSystem.move_file_async (path
00:01:51 v #1214 > > </> $"file_{i}.txt") |> Async.Ignore
00:01:51 v #1215 > >
00:01:51 v #1216 > >     do! Async.Sleep 250
00:01:51 v #1217 > >
00:01:51 v #1218 > >     for i = 1 to n do
00:01:51 v #1219 > >         do! $"c{i}" |> SpiralFileSystem.write_all_text_async (path </>
00:01:51 v #1220 > > $"file_{i}.txt")
00:01:51 v #1221 > >
00:01:51 v #1222 > >     do! Async.Sleep 250
00:01:51 v #1223 > >
00:01:51 v #1224 > >     for i = 1 to n do
00:01:51 v #1225 > >         do! SpiralFileSystem.delete_file_async (path </> $"file_{i}.txt") |>
00:01:51 v #1226 > > Async.Ignore
00:01:51 v #1227 > >
00:01:51 v #1228 > >     do! Async.Sleep 250
00:01:51 v #1229 > > }
00:01:51 v #1230 > >
00:01:51 v #1231 > > let inline run () =
00:01:51 v #1232 > >     let events = testEventsRaw watchDirectory write
00:01:51 v #1233 > >
00:01:51 v #1234 > >     events
00:01:51 v #1235 > >     |> _sequenceEqual [[
00:01:51 v #1236 > >         FileSystemChange.Created ("file1.txt", Some "a1")
00:01:51 v #1237 > >         FileSystemChange.Changed ("file1.txt", Some "a1")
00:01:51 v #1238 > >         FileSystemChange.Created ("file2.txt", Some "a2")
00:01:51 v #1239 > >         FileSystemChange.Changed ("file2.txt", Some "a2")
00:01:51 v #1240 > >
00:01:51 v #1241 > >         FileSystemChange.Changed ("file1.txt", Some "b1")
00:01:51 v #1242 > >         FileSystemChange.Changed ("file2.txt", Some "b2")
00:01:51 v #1243 > >
00:01:51 v #1244 > >         FileSystemChange.Renamed ("file1.txt", ("file_1.txt", Some "b1"))
00:01:51 v #1245 > >         FileSystemChange.Renamed ("file2.txt", ("file_2.txt", Some "b2"))
00:01:51 v #1246 > >
00:01:51 v #1247 > >         FileSystemChange.Changed ("file_1.txt", Some "c1")
00:01:51 v #1248 > >         FileSystemChange.Changed ("file_2.txt", Some "c2")
00:01:51 v #1249 > >
00:01:51 v #1250 > >         FileSystemChange.Deleted "file_1.txt"
00:01:51 v #1251 > >         FileSystemChange.Deleted "file_2.txt"
00:01:51 v #1252 > >     ]]
00:01:51 v #1253 > >
00:01:51 v #1254 > > run
00:01:51 v #1255 > > |> retry_fn 3
00:01:51 v #1256 > > |> _assertEqual (Some ())
00:01:55 v #1257 > >
00:01:55 v #1258 > > ╭─[ 3.40s - stdout ]───────────────────────────────────────────────────────────╮
00:01:55 v #1259 > > │ Some ()                                                                      │
00:01:55 v #1260 > > │                                                                              │
00:01:55 v #1261 > > │ 00:00:06 d #1 FileSystem.watchWithFilter / Disposing watch stream /     │
00:01:55 v #1262 > > │ filter: FileName, LastWrite                                                  │
00:01:55 v #1263 > > │ 00:00:06 d #2 FileSystem.testEventsRaw / eventsLog:                     │
00:01:55 v #1264 > > │ 0 / 638670121235822622 / Created ("file1.txt", Some "a1")                    │
00:01:55 v #1265 > > │ 1 / 638670121235822623 / Changed ("file1.txt", Some "a1")                    │
00:01:55 v #1266 > > │ 24678 / 638670121235847301 / Changed ("file1.txt", Some "a1")                │
00:01:55 v #1267 > > │ 1426 / 638670121235848727 / Created ("file2.txt", Some "a2")                 │
00:01:55 v #1268 > > │ 1 / 638670121235848728 / Changed ("file2.txt", Some "a2")                    │
00:01:55 v #1269 > > │ 42 / 638670121235848770 / Changed ("file2.txt", Some "a2")                   │
00:01:55 v #1270 > > │ 2431589 / 638670121238280359 / Changed ("file1.txt", Some "b1")              │
00:01:55 v #1271 > > │ 1703 / 638670121238282062 / Changed ("file1.txt", Some "b1")                 │
00:01:55 v #1272 > > │ 9854 / 638670121238291916 / Changed ("file2.txt", Some "b2")                 │
00:01:55 v #1273 > > │ 1772 / 638670121238293688 / Changed ("file2.txt", Some "b2")                 │
00:01:55 v #1274 > > │ 2601533 / 638670121240895221 / Renamed ("file1.txt", ("file_1.txt", Some     │
00:01:55 v #1275 > > │ "b1"))                                                                       │
00:01:55 v #1276 > > │ 14029 / 638670121240909250 / Renamed ("file2.txt", ("file_2.txt", Some       │
00:01:55 v #1277 > > │ "b2"))                                                                       │
00:01:55 v #1278 > > │ 2491050 / 638670121243400300 / Changed ("file_1.txt", Some "c1")             │
00:01:55 v #1279 > > │ 1579 / 638670121243401879 / Changed ("file_1.txt", Some "c1")                │
00:01:55 v #1280 > > │ 8775 / 638670121243410654 / Changed ("file_2.txt", Some "c2")                │
00:01:55 v #1281 > > │ 1221 / 638670121243411875 / Changed ("file_2.txt", Some "c2")                │
00:01:55 v #1282 > > │ 2522728 / 638670121245934603 / Deleted "file_1.txt"                          │
00:01:55 v #1283 > > │ 2429 / 638670121245937032 / Deleted "file_2.txt"                             │
00:01:55 v #1284 > > │ [Created ("file1.txt", Some "a1"); Changed ("file1.txt", Some "a1"); Created │
00:01:55 v #1285 > > │ ("file2.txt", Some "a2");                                                    │
00:01:55 v #1286 > > │  Changed ("file2.txt", Some "a2"); Changed ("file1.txt", Some "b1"); Changed │
00:01:55 v #1287 > > │ ("file2.txt", Some "b2");                                                    │
00:01:55 v #1288 > > │  Renamed ("file1.txt", ("file_1.txt", Some "b1")); Renamed ("file2.txt",     │
00:01:55 v #1289 > > │ ("file_2.txt", Some "b2"));                                                  │
00:01:55 v #1290 > > │  Changed ("file_1.txt", Some "c1"); Changed ("file_2.txt", Some "c2");       │
00:01:55 v #1291 > > │ Deleted "file_1.txt"; Deleted "file_2.txt"]                                  │
00:01:55 v #1292 > > │                                                                              │
00:01:55 v #1293 > > │ Some ()                                                                      │
00:01:55 v #1294 > > │                                                                              │
00:01:55 v #1295 > > │                                                                              │
00:01:55 v #1296 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:55 v #1297 > >
00:01:55 v #1298 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:55 v #1299 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:55 v #1300 > > │ #### slow (test)                                                             │
00:01:55 v #1301 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:55 v #1302 > >
00:01:55 v #1303 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:01:55 v #1304 > > //// test
00:01:55 v #1305 > >
00:01:55 v #1306 > > let inline write path = async {
00:01:55 v #1307 > >     let n = 2
00:01:55 v #1308 > >
00:01:55 v #1309 > >     let contents =
00:01:55 v #1310 > >         [[ 1 .. n ]]
00:01:55 v #1311 > >         |> List.map (string >> String.replicate 1_000_000)
00:01:55 v #1312 > >
00:01:55 v #1313 > >     for i = 1 to n do
00:01:55 v #1314 > >         do! $"{contents.[[i - 1]]}a" |> SpiralFileSystem.write_all_text_async
00:01:55 v #1315 > > (path </> $"file{i}.txt")
00:01:55 v #1316 > >
00:01:55 v #1317 > >     do! Async.Sleep 1500
00:01:55 v #1318 > >
00:01:55 v #1319 > >     for i = 1 to n do
00:01:55 v #1320 > >         do! $"{contents.[[i - 1]]}b" |> SpiralFileSystem.write_all_text_async
00:01:55 v #1321 > > (path </> $"file{i}.txt")
00:01:55 v #1322 > >
00:01:55 v #1323 > >     do! Async.Sleep 1500
00:01:55 v #1324 > >
00:01:55 v #1325 > >     for i = 1 to n do
00:01:55 v #1326 > >         do! path </> $"file{i}.txt" |> SpiralFileSystem.move_file_async (path
00:01:55 v #1327 > > </> $"file_{i}.txt") |> Async.Ignore
00:01:55 v #1328 > >
00:01:55 v #1329 > >     do! Async.Sleep 1500
00:01:55 v #1330 > >
00:01:55 v #1331 > >     for i = 1 to n do
00:01:55 v #1332 > >         do! $"{contents.[[i - 1]]}c" |> SpiralFileSystem.write_all_text_async
00:01:55 v #1333 > > (path </> $"file_{i}.txt")
00:01:55 v #1334 > >
00:01:55 v #1335 > >     do! Async.Sleep 1500
00:01:55 v #1336 > >
00:01:55 v #1337 > >     for i = 1 to n do
00:01:55 v #1338 > >         do! SpiralFileSystem.delete_file_async (path </> $"file_{i}.txt") |>
00:01:55 v #1339 > > Async.Ignore
00:01:55 v #1340 > >
00:01:55 v #1341 > >     do! Async.Sleep 1500
00:01:55 v #1342 > > }
00:01:55 v #1343 > >
00:01:55 v #1344 > > let inline run () =
00:01:55 v #1345 > >     let events =
00:01:55 v #1346 > >         testEventsRaw watchDirectory write
00:01:55 v #1347 > >         |> List.map (function
00:01:55 v #1348 > >             | FileSystemChange.Changed (path, Some content) ->
00:01:55 v #1349 > >                 FileSystemChange.Changed (path, content |> Seq.distinct |>
00:01:55 v #1350 > > Seq.map string |> SpiralSm.concat "" |> Some)
00:01:55 v #1351 > >             | FileSystemChange.Created (path, Some content) ->
00:01:55 v #1352 > >                 FileSystemChange.Created (path, content |> Seq.distinct |>
00:01:55 v #1353 > > Seq.map string |> SpiralSm.concat "" |> Some)
00:01:55 v #1354 > >             | FileSystemChange.Renamed (oldPath, (newPath, Some content)) ->
00:01:55 v #1355 > >                 FileSystemChange.Renamed (
00:01:55 v #1356 > >                     oldPath,
00:01:55 v #1357 > >                     (newPath, content |> Seq.distinct |> Seq.map string |>
00:01:55 v #1358 > > SpiralSm.concat "" |> Some)
00:01:55 v #1359 > >                 )
00:01:55 v #1360 > >             | event -> event
00:01:55 v #1361 > >         )
00:01:55 v #1362 > >
00:01:55 v #1363 > >     events
00:01:55 v #1364 > >     |> _sequenceEqual [[
00:01:55 v #1365 > >         FileSystemChange.Created ("file1.txt", Some "1a")
00:01:55 v #1366 > >         FileSystemChange.Changed ("file1.txt", Some "1a")
00:01:55 v #1367 > >         FileSystemChange.Created ("file2.txt", Some "2a")
00:01:55 v #1368 > >         FileSystemChange.Changed ("file2.txt", Some "2a")
00:01:55 v #1369 > >
00:01:55 v #1370 > >         FileSystemChange.Changed ("file1.txt", Some "1b")
00:01:55 v #1371 > >         FileSystemChange.Changed ("file2.txt", Some "2b")
00:01:55 v #1372 > >
00:01:55 v #1373 > >         FileSystemChange.Renamed ("file1.txt", ("file_1.txt", Some "1b"))
00:01:55 v #1374 > >         FileSystemChange.Renamed ("file2.txt", ("file_2.txt", Some "2b"))
00:01:55 v #1375 > >
00:01:55 v #1376 > >         FileSystemChange.Changed ("file_1.txt", Some "1c")
00:01:55 v #1377 > >         FileSystemChange.Changed ("file_2.txt", Some "2c")
00:01:55 v #1378 > >
00:01:55 v #1379 > >         FileSystemChange.Deleted "file_1.txt"
00:01:55 v #1380 > >         FileSystemChange.Deleted "file_2.txt"
00:01:55 v #1381 > >     ]]
00:01:55 v #1382 > >
00:01:55 v #1383 > > run
00:01:55 v #1384 > > |> retry_fn 5
00:01:55 v #1385 > > |> _assertEqual (Some ())
00:02:05 v #1386 > >
00:02:05 v #1387 > > ╭─[ 10.23s - stdout ]──────────────────────────────────────────────────────────╮
00:02:05 v #1388 > > │ Some ()                                                                      │
00:02:05 v #1389 > > │                                                                              │
00:02:05 v #1390 > > │ 00:00:16 d #3 FileSystem.watchWithFilter / Disposing watch stream /     │
00:02:05 v #1391 > > │ filter: FileName, LastWrite                                                  │
00:02:05 v #1392 > > │ 00:00:16 d #4 FileSystem.testEventsRaw / eventsLog:                     │
00:02:05 v #1393 > > │ 0 / 638670121273167443 / Created                                             │
00:02:05 v #1394 > > │   ("file1.txt",                                                              │
00:02:05 v #1395 > > │  ...11111111111111111111111111111111111111111111111a")                       │
00:02:05 v #1396 > > │ 1 / 638670121273167444 / Changed                                             │
00:02:05 v #1397 > > │   ("file1.txt",                                                              │
00:02:05 v #1398 > > │  ...11111111111111111111111111111111111111111111111a")                       │
00:02:05 v #1399 > > │ 63459 / 638670121273230903 / Changed                                         │
00:02:05 v #1400 > > │   ("file1.txt...11111111111111111111111111111111111111111111111a")           │
00:02:05 v #1401 > > │ 34534 / 638670121273265437 / Created                                         │
00:02:05 v #1402 > > │   ("file2.txt...22222222222222222222222222222222222222222222222a")           │
00:02:05 v #1403 > > │ 1 / 638670121273265438 / Changed                                             │
00:02:05 v #1404 > > │   ("file2.txt",                                                              │
00:02:05 v #1405 > > │  ...22222222222222222222222222222222222222222222222a")                       │
00:02:05 v #1406 > > │ 62974 / 638670121273328412 / Changed                                         │
00:02:05 v #1407 > > │   ("file2.txt...22222222222222222222222222222222222222222222222a")           │
00:02:05 v #1408 > > │ 15078925 / 638670121288407337 / Changed                                      │
00:02:05 v #1409 > > │   ("file1....11111111111111111111111111111111111111111111111b")              │
00:02:05 v #1410 > > │ 50361 / 638670121288457698 / Changed                                         │
00:02:05 v #1411 > > │   ("file1.txt...11111111111111111111111111111111111111111111111b")           │
00:02:05 v #1412 > > │ 45483 / 638670121288503181 / Changed                                         │
00:02:05 v #1413 > > │   ("file2.txt...22222222222222222222222222222222222222222222222b")           │
00:02:05 v #1414 > > │ 67053 / 638670121288570234 / Changed                                         │
00:02:05 v #1415 > > │   ("file2.txt...22222222222222222222222222222222222222222222222b")           │
00:02:05 v #1416 > > │ 15125321 / 638670121303695555 / Renamed                                      │
00:02:05 v #1417 > > │   ("file1....1111111111111111111111111111111111111111111111b"))              │
00:02:05 v #1418 > > │ 3043 / 638670121303698598 / Renamed                                          │
00:02:05 v #1419 > > │   ("file2.txt"...2222222222222222222222222222222222222222222222b"))          │
00:02:05 v #1420 > > │ 14988167 / 638670121318686765 / Changed                                      │
00:02:05 v #1421 > > │   ("file_1...11111111111111111111111111111111111111111111111c")              │
00:02:05 v #1422 > > │ 43094 / 638670121318729859 / Changed                                         │
00:02:05 v #1423 > > │   ("file_1.tx...11111111111111111111111111111111111111111111111c")           │
00:02:05 v #1424 > > │ 21036 / 638670121318750895 / Changed                                         │
00:02:05 v #1425 > > │   ("file_2.tx...22222222222222222222222222222222222222222222222c")           │
00:02:05 v #1426 > > │ 40501 / 638670121318791396 / Changed                                         │
00:02:05 v #1427 > > │   ("file_2.tx...22222222222222222222222222222222222222222222222c")           │
00:02:05 v #1428 > > │ 15087529 / 638670121333878925 / Deleted "file_1.txt"                         │
00:02:05 v #1429 > > │ 5639 / 638670121333884564 / Deleted "file_2.txt"                             │
00:02:05 v #1430 > > │ [Created ("file1.txt", Some "1a"); Changed ("file1.txt", Some "1a"); Created │
00:02:05 v #1431 > > │ ("file2.txt", Some "2a");                                                    │
00:02:05 v #1432 > > │  Changed ("file2.txt", Some "2a"); Changed ("file1.txt", Some "1b"); Changed │
00:02:05 v #1433 > > │ ("file2.txt", Some "2b");                                                    │
00:02:05 v #1434 > > │  Renamed ("file1.txt", ("file_1.txt", Some "1b")); Renamed ("file2.txt",     │
00:02:05 v #1435 > > │ ("file_2.txt", Some "2b"));                                                  │
00:02:05 v #1436 > > │  Changed ("file_1.txt", Some "1c"); Changed ("file_2.txt", Some "2c");       │
00:02:05 v #1437 > > │ Deleted "file_1.txt"; Deleted "file_2.txt"]                                  │
00:02:05 v #1438 > > │                                                                              │
00:02:05 v #1439 > > │ Some ()                                                                      │
00:02:05 v #1440 > > │                                                                              │
00:02:05 v #1441 > > │                                                                              │
00:02:05 v #1442 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:05 v #1443 > >
00:02:05 v #1444 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:05 v #1445 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:05 v #1446 > > │ ### testEventsSorted (test)                                                  │
00:02:05 v #1447 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:05 v #1448 > >
00:02:05 v #1449 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:02:05 v #1450 > > //// test
00:02:05 v #1451 > >
00:02:05 v #1452 > > let inline sortEvent event =
00:02:05 v #1453 > >     match event with
00:02:05 v #1454 > >     | FileSystemChange.Failure _ -> 0
00:02:05 v #1455 > >     | FileSystemChange.Created _ -> 1
00:02:05 v #1456 > >     | FileSystemChange.Changed _ -> 2
00:02:05 v #1457 > >     | FileSystemChange.Renamed (_oldPath, _) -> 3
00:02:05 v #1458 > >     | FileSystemChange.Deleted _ -> 4
00:02:05 v #1459 > >
00:02:05 v #1460 > > let inline formatEvents events =
00:02:05 v #1461 > >     events
00:02:05 v #1462 > >     |> Seq.toList
00:02:05 v #1463 > >     |> List.sortBy (snd >> sortEvent)
00:02:05 v #1464 > >     |> List.choose (fun (ticks, event) ->
00:02:05 v #1465 > >         match event with
00:02:05 v #1466 > >         | FileSystemChange.Failure _ ->
00:02:05 v #1467 > >             None
00:02:05 v #1468 > >         | FileSystemChange.Changed (path, _) ->
00:02:05 v #1469 > >             Some (ticks, System.IO.Path.GetFileName path, nameof
00:02:05 v #1470 > > FileSystemChangeType.Changed)
00:02:05 v #1471 > >         | FileSystemChange.Created (path, _) ->
00:02:05 v #1472 > >             Some (ticks, System.IO.Path.GetFileName path, nameof
00:02:05 v #1473 > > FileSystemChangeType.Created)
00:02:05 v #1474 > >         | FileSystemChange.Deleted path ->
00:02:05 v #1475 > >             Some (ticks, System.IO.Path.GetFileName path, nameof
00:02:05 v #1476 > > FileSystemChangeType.Deleted)
00:02:05 v #1477 > >         | FileSystemChange.Renamed (_oldPath, (path, _)) ->
00:02:05 v #1478 > >             Some (ticks, System.IO.Path.GetFileName path, nameof
00:02:05 v #1479 > > FileSystemChangeType.Renamed)
00:02:05 v #1480 > >     )
00:02:05 v #1481 > >     |> List.sortBy (fun (_, path, _) -> path)
00:02:05 v #1482 > >     |> List.distinctBy (fun (_, path, event) -> path, event)
00:02:05 v #1483 > >
00:02:05 v #1484 > > let inline testEventsSorted
00:02:05 v #1485 > >     (watchFn : string -> FSharp.Control.AsyncSeq<int64 * FileSystemChange> *
00:02:05 v #1486 > > IDisposable)
00:02:05 v #1487 > >     write
00:02:05 v #1488 > >     =
00:02:05 v #1489 > >     let struct (tempDir, tempDisposable) =
00:02:05 v #1490 > >         "FileSystem.testEventsSorted"
00:02:05 v #1491 > >         |> SpiralCrypto.hash_text
00:02:05 v #1492 > >         |> SpiralFileSystem.create_temp_dir'
00:02:05 v #1493 > >     let stream, disposable = watchFn tempDir
00:02:05 v #1494 > >
00:02:05 v #1495 > >     let events = System.Collections.Concurrent.ConcurrentBag ()
00:02:05 v #1496 > >
00:02:05 v #1497 > >     let inline iter () =
00:02:05 v #1498 > >         stream
00:02:05 v #1499 > >         |> FSharp.Control.AsyncSeq.iterAsyncParallel (fun event -> async {
00:02:05 v #1500 > > events.Add event })
00:02:05 v #1501 > >
00:02:05 v #1502 > >     let run = async {
00:02:05 v #1503 > >         let! _ = iter () |> Async.StartChild
00:02:05 v #1504 > >         do! Async.Sleep 250
00:02:05 v #1505 > >         return! write tempDir
00:02:05 v #1506 > >     }
00:02:05 v #1507 > >
00:02:05 v #1508 > >     try
00:02:05 v #1509 > >         run
00:02:05 v #1510 > >         |> Async.runWithTimeout 5000
00:02:05 v #1511 > >         |> _assertEqual (Some ())
00:02:05 v #1512 > >     finally
00:02:05 v #1513 > >         disposable.Dispose ()
00:02:05 v #1514 > >         tempDisposable.Dispose ()
00:02:05 v #1515 > >
00:02:05 v #1516 > >     let events = formatEvents events
00:02:05 v #1517 > >
00:02:05 v #1518 > >     let eventMap =
00:02:05 v #1519 > >         events
00:02:05 v #1520 > >         |> List.map (fun (ticks, path, event) -> path, (event, ticks))
00:02:05 v #1521 > >         |> List.groupBy fst
00:02:05 v #1522 > >         |> List.map (fun (path, events) ->
00:02:05 v #1523 > >             let event, _ticks =
00:02:05 v #1524 > >                 events
00:02:05 v #1525 > >                 |> List.map snd
00:02:05 v #1526 > >                 |> List.sortByDescending snd
00:02:05 v #1527 > >                 |> List.head
00:02:05 v #1528 > >
00:02:05 v #1529 > >             path, event
00:02:05 v #1530 > >         )
00:02:05 v #1531 > >         |> Map.ofList
00:02:05 v #1532 > >
00:02:05 v #1533 > >     let eventList =
00:02:05 v #1534 > >         events
00:02:05 v #1535 > >         |> List.map (fun (_ticks, path, event) -> path, event)
00:02:05 v #1536 > >
00:02:05 v #1537 > >     eventMap, eventList
00:02:05 v #1538 > >
00:02:05 v #1539 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:05 v #1540 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:05 v #1541 > > │ #### create and delete (test)                                                │
00:02:05 v #1542 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:05 v #1543 > >
00:02:05 v #1544 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:02:05 v #1545 > > //// test
00:02:05 v #1546 > >
00:02:05 v #1547 > > let inline write path = async {
00:02:05 v #1548 > >     let n = 3
00:02:05 v #1549 > >
00:02:05 v #1550 > >     for i = 1 to n do
00:02:05 v #1551 > >         do! $"{i}" |> SpiralFileSystem.write_all_text_async (path </>
00:02:05 v #1552 > > $"file{i}.txt")
00:02:05 v #1553 > >
00:02:05 v #1554 > >     for i = 1 to n do
00:02:05 v #1555 > >         do! SpiralFileSystem.delete_file_async (path </> $"file{i}.txt") |>
00:02:05 v #1556 > > Async.Ignore
00:02:05 v #1557 > >
00:02:05 v #1558 > >     do! Async.Sleep 150
00:02:05 v #1559 > > }
00:02:05 v #1560 > >
00:02:05 v #1561 > > let inline run () =
00:02:05 v #1562 > >     let eventMap, eventList = testEventsSorted (watchDirectory (fun _ -> false))
00:02:05 v #1563 > > write
00:02:05 v #1564 > >
00:02:05 v #1565 > >     [[
00:02:05 v #1566 > >         "file1.txt", nameof FileSystemChangeType.Created
00:02:05 v #1567 > >         "file1.txt", nameof FileSystemChangeType.Changed
00:02:05 v #1568 > >         "file1.txt", nameof FileSystemChangeType.Deleted
00:02:05 v #1569 > >
00:02:05 v #1570 > >         "file2.txt", nameof FileSystemChangeType.Created
00:02:05 v #1571 > >         "file2.txt", nameof FileSystemChangeType.Changed
00:02:05 v #1572 > >         "file2.txt", nameof FileSystemChangeType.Deleted
00:02:05 v #1573 > >
00:02:05 v #1574 > >         "file3.txt", nameof FileSystemChangeType.Created
00:02:05 v #1575 > >         "file3.txt", nameof FileSystemChangeType.Changed
00:02:05 v #1576 > >         "file3.txt", nameof FileSystemChangeType.Deleted
00:02:05 v #1577 > >     ]]
00:02:05 v #1578 > >     |> _sequenceEqual eventList
00:02:05 v #1579 > >
00:02:05 v #1580 > >     [[
00:02:05 v #1581 > >         "file1.txt", nameof FileSystemChangeType.Deleted
00:02:05 v #1582 > >         "file2.txt", nameof FileSystemChangeType.Deleted
00:02:05 v #1583 > >         "file3.txt", nameof FileSystemChangeType.Deleted
00:02:05 v #1584 > >     ]]
00:02:05 v #1585 > >     |> Map.ofList
00:02:05 v #1586 > >     |> _sequenceEqual eventMap
00:02:05 v #1587 > >
00:02:05 v #1588 > > run
00:02:05 v #1589 > > |> retry_fn 3
00:02:05 v #1590 > > |> _assertEqual (Some ())
00:02:07 v #1591 > >
00:02:07 v #1592 > > ╭─[ 1.92s - stdout ]───────────────────────────────────────────────────────────╮
00:02:07 v #1593 > > │ Some ()                                                                      │
00:02:07 v #1594 > > │                                                                              │
00:02:07 v #1595 > > │ 00:00:18 d #5 FileSystem.watchWithFilter / Disposing watch stream /     │
00:02:07 v #1596 > > │ filter: FileName, LastWrite                                                  │
00:02:07 v #1597 > > │ [("file1.txt", "Created"); ("file1.txt", "Changed"); ("file1.txt",           │
00:02:07 v #1598 > > │ "Deleted"); ("file2.txt", "Created");                                        │
00:02:07 v #1599 > > │  ("file2.txt", "Changed"); ("file2.txt", "Deleted"); ("file3.txt",           │
00:02:07 v #1600 > > │ "Created"); ("file3.txt", "Changed");                                        │
00:02:07 v #1601 > > │  ("file3.txt", "Deleted")]                                                   │
00:02:07 v #1602 > > │                                                                              │
00:02:07 v #1603 > > │ map [("file1.txt", "Deleted"); ("file2.txt", "Deleted"); ("file3.txt",       │
00:02:07 v #1604 > > │ "Deleted")]                                                                  │
00:02:07 v #1605 > > │                                                                              │
00:02:07 v #1606 > > │ Some ()                                                                      │
00:02:07 v #1607 > > │                                                                              │
00:02:07 v #1608 > > │                                                                              │
00:02:07 v #1609 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:07 v #1610 > >
00:02:07 v #1611 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:07 v #1612 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:07 v #1613 > > │ #### change (test)                                                           │
00:02:07 v #1614 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:07 v #1615 > >
00:02:07 v #1616 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:02:07 v #1617 > > //// test
00:02:07 v #1618 > >
00:02:07 v #1619 > > let inline write path = async {
00:02:07 v #1620 > >     let n = 2
00:02:07 v #1621 > >
00:02:07 v #1622 > >     for i = 1 to n do
00:02:07 v #1623 > >         do! $"{i}" |> SpiralFileSystem.write_all_text_async (path </>
00:02:07 v #1624 > > $"file{i}.txt")
00:02:07 v #1625 > >
00:02:07 v #1626 > >     for i = 1 to n do
00:02:07 v #1627 > >         do! "" |> SpiralFileSystem.write_all_text_async (path </>
00:02:07 v #1628 > > $"file{i}.txt")
00:02:07 v #1629 > >
00:02:07 v #1630 > >     for i = 1 to n do
00:02:07 v #1631 > >         do! SpiralFileSystem.delete_file_async (path </> $"file{i}.txt") |>
00:02:07 v #1632 > > Async.Ignore
00:02:07 v #1633 > >
00:02:07 v #1634 > >     do! Async.Sleep 150
00:02:07 v #1635 > > }
00:02:07 v #1636 > >
00:02:07 v #1637 > > let inline run () =
00:02:07 v #1638 > >     let eventMap, eventList = testEventsSorted (watchDirectory (fun _ -> false))
00:02:07 v #1639 > > write
00:02:07 v #1640 > >
00:02:07 v #1641 > >     [[
00:02:07 v #1642 > >         "file1.txt", nameof FileSystemChangeType.Created
00:02:07 v #1643 > >         "file1.txt", nameof FileSystemChangeType.Changed
00:02:07 v #1644 > >         "file1.txt", nameof FileSystemChangeType.Deleted
00:02:07 v #1645 > >
00:02:07 v #1646 > >         "file2.txt", nameof FileSystemChangeType.Created
00:02:07 v #1647 > >         "file2.txt", nameof FileSystemChangeType.Changed
00:02:07 v #1648 > >         "file2.txt", nameof FileSystemChangeType.Deleted
00:02:07 v #1649 > >     ]]
00:02:07 v #1650 > >     |> _sequenceEqual eventList
00:02:07 v #1651 > >
00:02:07 v #1652 > >     [[
00:02:07 v #1653 > >         "file1.txt", nameof FileSystemChangeType.Deleted
00:02:07 v #1654 > >         "file2.txt", nameof FileSystemChangeType.Deleted
00:02:07 v #1655 > >     ]]
00:02:07 v #1656 > >     |> Map.ofList
00:02:07 v #1657 > >     |> _sequenceEqual eventMap
00:02:07 v #1658 > >
00:02:07 v #1659 > > run
00:02:07 v #1660 > > |> retry_fn 3
00:02:07 v #1661 > > |> _assertEqual (Some ())
00:02:09 v #1662 > >
00:02:09 v #1663 > > ╭─[ 2.11s - stdout ]───────────────────────────────────────────────────────────╮
00:02:09 v #1664 > > │ Some ()                                                                      │
00:02:09 v #1665 > > │                                                                              │
00:02:09 v #1666 > > │ 00:00:20 d #6 FileSystem.watchWithFilter / Disposing watch stream /     │
00:02:09 v #1667 > > │ filter: FileName, LastWrite                                                  │
00:02:09 v #1668 > > │ [("file1.txt", "Created"); ("file1.txt", "Changed"); ("file1.txt",           │
00:02:09 v #1669 > > │ "Deleted"); ("file2.txt", "Created");                                        │
00:02:09 v #1670 > > │  ("file2.txt", "Changed"); ("file2.txt", "Deleted")]                         │
00:02:09 v #1671 > > │                                                                              │
00:02:09 v #1672 > > │ map [("file1.txt", "Deleted"); ("file2.txt", "Deleted")]                     │
00:02:09 v #1673 > > │                                                                              │
00:02:09 v #1674 > > │ Some ()                                                                      │
00:02:09 v #1675 > > │                                                                              │
00:02:09 v #1676 > > │                                                                              │
00:02:09 v #1677 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:09 v #1678 > >
00:02:09 v #1679 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:09 v #1680 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:09 v #1681 > > │ #### rename (test)                                                           │
00:02:09 v #1682 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:09 v #1683 > >
00:02:09 v #1684 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:02:09 v #1685 > > //// test
00:02:09 v #1686 > >
00:02:09 v #1687 > > let inline write path = async {
00:02:09 v #1688 > >     let n = 2
00:02:09 v #1689 > >
00:02:09 v #1690 > >     for i = 1 to n do
00:02:09 v #1691 > >         do! $"{i}" |> SpiralFileSystem.write_all_text_async (path </>
00:02:09 v #1692 > > $"file{i}.txt")
00:02:09 v #1693 > >
00:02:09 v #1694 > >     for i = 1 to n do
00:02:09 v #1695 > >         do! path </> $"file{i}.txt" |> SpiralFileSystem.move_file_async (path
00:02:09 v #1696 > > </> $"file_{i}.txt") |> Async.Ignore
00:02:09 v #1697 > >
00:02:09 v #1698 > >     for i = 1 to n do
00:02:09 v #1699 > >         do! SpiralFileSystem.delete_file_async (path </> $"file_{i}.txt") |>
00:02:09 v #1700 > > Async.Ignore
00:02:09 v #1701 > >
00:02:09 v #1702 > >     do! Async.Sleep 150
00:02:09 v #1703 > > }
00:02:09 v #1704 > >
00:02:09 v #1705 > > let inline run () =
00:02:09 v #1706 > >     let eventMap, eventList = testEventsSorted (watchDirectory (fun _ -> false))
00:02:09 v #1707 > > write
00:02:09 v #1708 > >
00:02:09 v #1709 > >     [[
00:02:09 v #1710 > >         "file1.txt", nameof FileSystemChangeType.Created
00:02:09 v #1711 > >         "file1.txt", nameof FileSystemChangeType.Changed
00:02:09 v #1712 > >         "file2.txt", nameof FileSystemChangeType.Created
00:02:09 v #1713 > >         "file2.txt", nameof FileSystemChangeType.Changed
00:02:09 v #1714 > >
00:02:09 v #1715 > >         "file_1.txt", nameof FileSystemChangeType.Renamed
00:02:09 v #1716 > >         "file_1.txt", nameof FileSystemChangeType.Deleted
00:02:09 v #1717 > >
00:02:09 v #1718 > >         "file_2.txt", nameof FileSystemChangeType.Renamed
00:02:09 v #1719 > >         "file_2.txt", nameof FileSystemChangeType.Deleted
00:02:09 v #1720 > >     ]]
00:02:09 v #1721 > >     |> _sequenceEqual eventList
00:02:09 v #1722 > >
00:02:09 v #1723 > >     [[
00:02:09 v #1724 > >         "file1.txt", nameof FileSystemChangeType.Changed
00:02:09 v #1725 > >         "file2.txt", nameof FileSystemChangeType.Changed
00:02:09 v #1726 > >         "file_1.txt", nameof FileSystemChangeType.Deleted
00:02:09 v #1727 > >         "file_2.txt", nameof FileSystemChangeType.Deleted
00:02:09 v #1728 > >     ]]
00:02:09 v #1729 > >     |> Map.ofList
00:02:09 v #1730 > >     |> _sequenceEqual eventMap
00:02:09 v #1731 > >
00:02:09 v #1732 > > run
00:02:09 v #1733 > > |> retry_fn 3
00:02:09 v #1734 > > |> _assertEqual (Some ())
00:02:11 v #1735 > >
00:02:11 v #1736 > > ╭─[ 2.27s - stdout ]───────────────────────────────────────────────────────────╮
00:02:11 v #1737 > > │ Some ()                                                                      │
00:02:11 v #1738 > > │                                                                              │
00:02:11 v #1739 > > │ 00:00:22 d #7 FileSystem.watchWithFilter / Disposing watch stream /     │
00:02:11 v #1740 > > │ filter: FileName, LastWrite                                                  │
00:02:11 v #1741 > > │ [("file1.txt", "Created"); ("file1.txt", "Changed"); ("file2.txt",           │
00:02:11 v #1742 > > │ "Created"); ("file2.txt", "Changed");                                        │
00:02:11 v #1743 > > │  ("file_1.txt", "Renamed"); ("file_1.txt", "Deleted"); ("file_2.txt",        │
00:02:11 v #1744 > > │ "Renamed"); ("file_2.txt", "Deleted")]                                       │
00:02:11 v #1745 > > │                                                                              │
00:02:11 v #1746 > > │ map [("file1.txt", "Changed"); ("file2.txt", "Changed"); ("file_1.txt",      │
00:02:11 v #1747 > > │ "Deleted"); ("file_2.txt", "Deleted")]                                       │
00:02:11 v #1748 > > │                                                                              │
00:02:11 v #1749 > > │ Some ()                                                                      │
00:02:11 v #1750 > > │                                                                              │
00:02:11 v #1751 > > │                                                                              │
00:02:11 v #1752 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:11 v #1753 > >
00:02:11 v #1754 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:11 v #1755 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:11 v #1756 > > │ #### full (test)                                                             │
00:02:11 v #1757 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:11 v #1758 > >
00:02:11 v #1759 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:02:11 v #1760 > > //// test
00:02:11 v #1761 > >
00:02:11 v #1762 > > let inline write path = async {
00:02:11 v #1763 > >     let n = 2
00:02:11 v #1764 > >
00:02:11 v #1765 > >     for i = 1 to n do
00:02:11 v #1766 > >         do! $"{i}" |> SpiralFileSystem.write_all_text_async (path </>
00:02:11 v #1767 > > $"file{i}.txt")
00:02:11 v #1768 > >
00:02:11 v #1769 > >     for i = 1 to n do
00:02:11 v #1770 > >         do! "" |> SpiralFileSystem.write_all_text_async (path </>
00:02:11 v #1771 > > $"file{i}.txt")
00:02:11 v #1772 > >
00:02:11 v #1773 > >     for i = 1 to n do
00:02:11 v #1774 > >         do! path </> $"file{i}.txt" |> SpiralFileSystem.move_file_async (path
00:02:11 v #1775 > > </> $"file_{i}.txt") |> Async.Ignore
00:02:11 v #1776 > >
00:02:11 v #1777 > >     for i = 1 to n do
00:02:11 v #1778 > >         do! $"{i}" |> SpiralFileSystem.write_all_text_async (path </>
00:02:11 v #1779 > > $"file_{i}.txt")
00:02:11 v #1780 > >
00:02:11 v #1781 > >     for i = 1 to n do
00:02:11 v #1782 > >         do! SpiralFileSystem.delete_file_async (path </> $"file_{i}.txt") |>
00:02:11 v #1783 > > Async.Ignore
00:02:11 v #1784 > >
00:02:11 v #1785 > >     do! Async.Sleep 150
00:02:11 v #1786 > > }
00:02:11 v #1787 > >
00:02:11 v #1788 > > let inline run () =
00:02:11 v #1789 > >     let eventMap, eventList = testEventsSorted (watchDirectory (fun _ -> false))
00:02:11 v #1790 > > write
00:02:11 v #1791 > >
00:02:11 v #1792 > >     [[
00:02:11 v #1793 > >         "file1.txt", nameof FileSystemChangeType.Created
00:02:11 v #1794 > >         "file1.txt", nameof FileSystemChangeType.Changed
00:02:11 v #1795 > >         "file2.txt", nameof FileSystemChangeType.Created
00:02:11 v #1796 > >         "file2.txt", nameof FileSystemChangeType.Changed
00:02:11 v #1797 > >
00:02:11 v #1798 > >         "file_1.txt", nameof FileSystemChangeType.Changed
00:02:11 v #1799 > >         "file_1.txt", nameof FileSystemChangeType.Renamed
00:02:11 v #1800 > >         "file_1.txt", nameof FileSystemChangeType.Deleted
00:02:11 v #1801 > >
00:02:11 v #1802 > >         "file_2.txt", nameof FileSystemChangeType.Changed
00:02:11 v #1803 > >         "file_2.txt", nameof FileSystemChangeType.Renamed
00:02:11 v #1804 > >         "file_2.txt", nameof FileSystemChangeType.Deleted
00:02:11 v #1805 > >     ]]
00:02:11 v #1806 > >     |> _sequenceEqual eventList
00:02:11 v #1807 > >
00:02:11 v #1808 > >     [[
00:02:11 v #1809 > >         "file1.txt", nameof FileSystemChangeType.Changed
00:02:11 v #1810 > >         "file2.txt", nameof FileSystemChangeType.Changed
00:02:11 v #1811 > >         "file_1.txt", nameof FileSystemChangeType.Deleted
00:02:11 v #1812 > >         "file_2.txt", nameof FileSystemChangeType.Deleted
00:02:11 v #1813 > >     ]]
00:02:11 v #1814 > >     |> Map.ofList
00:02:11 v #1815 > >     |> _sequenceEqual eventMap
00:02:11 v #1816 > >
00:02:11 v #1817 > > run
00:02:11 v #1818 > > |> retry_fn 3
00:02:11 v #1819 > > |> _assertEqual (Some ())
00:02:14 v #1820 > >
00:02:14 v #1821 > > ╭─[ 2.74s - stdout ]───────────────────────────────────────────────────────────╮
00:02:14 v #1822 > > │ Some ()                                                                      │
00:02:14 v #1823 > > │                                                                              │
00:02:14 v #1824 > > │ 00:00:25 d #8 FileSystem.watchWithFilter / Disposing watch stream /     │
00:02:14 v #1825 > > │ filter: FileName, LastWrite                                                  │
00:02:14 v #1826 > > │ [("file1.txt", "Created"); ("file1.txt", "Changed"); ("file2.txt",           │
00:02:14 v #1827 > > │ "Created"); ("file2.txt", "Changed");                                        │
00:02:14 v #1828 > > │  ("file_1.txt", "Changed"); ("file_1.txt", "Renamed"); ("file_1.txt",        │
00:02:14 v #1829 > > │ "Deleted"); ("file_2.txt", "Changed");                                       │
00:02:14 v #1830 > > │  ("file_2.txt", "Renamed"); ("file_2.txt", "Deleted")]                       │
00:02:14 v #1831 > > │                                                                              │
00:02:14 v #1832 > > │ map [("file1.txt", "Changed"); ("file2.txt", "Changed"); ("file_1.txt",      │
00:02:14 v #1833 > > │ "Deleted"); ("file_2.txt", "Deleted")]                                       │
00:02:14 v #1834 > > │                                                                              │
00:02:14 v #1835 > > │ Some ()                                                                      │
00:02:14 v #1836 > > │                                                                              │
00:02:14 v #1837 > > │                                                                              │
00:02:14 v #1838 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:14 v #1839 > 00:00:43 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 36872 }
00:02:14 v #1840 > 00:00:43 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/polyglot/lib/fsharp/FileSystem.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/polyglot/lib/fsharp/FileSystem.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:02:16 v #1841 > 00:00:45 v #5 ! [NbConvertApp] Converting notebook c:/home/git/polyglot/lib/fsharp/FileSystem.dib.ipynb to html
00:02:16 v #1842 > 00:00:45 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:02:16 v #1843 > 00:00:45 v #7 !   validate(nb)
00:02:16 v #1844 > 00:00:45 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:02:16 v #1845 > 00:00:45 v #9 !   return _pygments_highlight(
00:02:17 v #1846 > 00:00:46 v #10 ! [NbConvertApp] Writing 383447 bytes to c:\home\git\polyglot\lib\fsharp\FileSystem.dib.html
00:02:17 v #1847 > 00:00:46 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 862 }
00:02:17 v #1848 > 00:00:46 d #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 862 }
00:02:17 v #1849 > 00:00:46 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/polyglot/lib/fsharp/FileSystem.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/polyglot/lib/fsharp/FileSystem.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:02:17 v #1850 > 00:00:46 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:02:17 v #1851 > 00:00:46 d #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:02:17 v #1852 > 00:00:46 d #16 spiral_builder.run / dib / { exit_code = 0; result_length = 37793 }
00:02:17 d #1853 runtime.execute_with_options_async / { exit_code = 0; output_length = 42206 }
00:02:17 d #7 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder.exe dib --path FileSystem.dib --retries 3
00:02:17 d #1854 runtime.execute_with_options_async / { file_name = ../../workspace/target/release/spiral_builder.exe; arguments = US5_0 "dib --path Runtime.dib --retries 3"; options = { command = ../../workspace/target/release/spiral_builder.exe dib --path Runtime.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:02:17 v #1855 > 00:00:00 d #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "Runtime.dib", "--retries", "3"])) }
00:02:17 v #1856 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/polyglot/lib/fsharp/Runtime.dib", "--output-path", "c:/home/git/polyglot/lib/fsharp/Runtime.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/polyglot/lib/fsharp/Runtime.dib" --output-path "c:/home/git/polyglot/lib/fsharp/Runtime.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:02:19 v #1857 > >
00:02:19 v #1858 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:19 v #1859 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:19 v #1860 > > │ # Runtime (Polyglot)                                                         │
00:02:19 v #1861 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:23 v #1862 > >
00:02:23 v #1863 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:02:23 v #1864 > > #r
00:02:23 v #1865 > > @"../../../../../../../.nuget/packages/fsharp.control.asyncseq/3.2.1/lib/netstan
00:02:23 v #1866 > > dard2.1/FSharp.Control.AsyncSeq.dll"
00:02:23 v #1867 > > #r
00:02:23 v #1868 > > @"../../../../../../../.nuget/packages/system.reactive/6.0.1-preview.1/lib/net6.
00:02:23 v #1869 > > 0/System.Reactive.dll"
00:02:23 v #1870 > > #r
00:02:23 v #1871 > > @"../../../../../../../.nuget/packages/system.reactive.linq/6.0.1-preview.1/lib
00:02:23 v #1872 > > netstandard2.0/System.Reactive.Linq.dll"
00:02:23 v #1873 > > #r
00:02:23 v #1874 > > @"../../../../../../../.nuget/packages/argu/6.2.4/lib/netstandard2.0/Argu.dll"
00:02:36 v #1875 > >
00:02:36 v #1876 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:02:36 v #1877 > > #if !INTERACTIVE
00:02:36 v #1878 > > open Lib
00:02:36 v #1879 > > #endif
00:02:36 v #1880 > >
00:02:36 v #1881 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:02:36 v #1882 > > open Common
00:02:36 v #1883 > >
00:02:36 v #1884 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:02:36 v #1885 > > //// test
00:02:36 v #1886 > >
00:02:36 v #1887 > > open SpiralFileSystem.Operators
00:02:37 v #1888 > >
00:02:37 v #1889 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:37 v #1890 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:37 v #1891 > > │ ## parseArgs                                                                 │
00:02:37 v #1892 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:37 v #1893 > >
00:02:37 v #1894 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:02:37 v #1895 > > let inline parseArgs<'T when 'T :> Argu.IArgParserTemplate> args =
00:02:37 v #1896 > >     let assemblyName =
00:02:37 v #1897 > > System.Reflection.Assembly.GetEntryAssembly().GetName().Name
00:02:37 v #1898 > >     let errorHandler : Argu.IExiter =
00:02:37 v #1899 > >         if [[ "Microsoft.DotNet.Interactive.App"; "dotnet-repl" ]] |>
00:02:37 v #1900 > > List.contains assemblyName
00:02:37 v #1901 > >         then Argu.ExceptionExiter ()
00:02:37 v #1902 > >         else Argu.ProcessExiter (function Argu.ErrorCode.HelpText -> None | _ ->
00:02:37 v #1903 > > Some System.ConsoleColor.Red)
00:02:37 v #1904 > >
00:02:37 v #1905 > >     let parser =
00:02:37 v #1906 > >         Argu.ArgumentParser.Create<'T> (
00:02:37 v #1907 > >             programName = $"{assemblyName}{SpiralPlatform.get_executable_suffix
00:02:37 v #1908 > > ()}",
00:02:37 v #1909 > >             errorHandler = errorHandler
00:02:37 v #1910 > >         )
00:02:37 v #1911 > >
00:02:37 v #1912 > >     parser.ParseCommandLine args
00:02:37 v #1913 > >
00:02:37 v #1914 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:02:37 v #1915 > > //// test
00:02:37 v #1916 > >
00:02:37 v #1917 > > [[<RequireQualifiedAccess>]]
00:02:37 v #1918 > > type Arguments =
00:02:37 v #1919 > >     | [[<Argu.ArguAttributes.MainCommand; Argu.ArguAttributes.ExactlyOnce;
00:02:37 v #1920 > > Argu.ArguAttributes.Last>]]
00:02:37 v #1921 > >         Paths of paths : string list
00:02:37 v #1922 > >
00:02:37 v #1923 > >     interface Argu.IArgParserTemplate with
00:02:37 v #1924 > >         member s.Usage =
00:02:37 v #1925 > >             match s with
00:02:37 v #1926 > >             | Paths _ -> nameof Paths
00:02:37 v #1927 > >
00:02:37 v #1928 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:02:37 v #1929 > > //// test
00:02:37 v #1930 > >
00:02:37 v #1931 > > Argu.ArgumentParser.Create<Arguments>().PrintUsage ()
00:02:37 v #1932 > >
00:02:37 v #1933 > > ╭─[ 119.01ms - return value ]──────────────────────────────────────────────────╮
00:02:37 v #1934 > > │ "USAGE: dotnet-repl [--help] <paths>...                                      │
00:02:37 v #1935 > > │                                                                              │
00:02:37 v #1936 > > │ PATHS:                                                                       │
00:02:37 v #1937 > > │                                                                              │
00:02:37 v #1938 > > │     <paths>...            Paths                                              │
00:02:37 v #1939 > > │                                                                              │
00:02:37 v #1940 > > │ OPTIONS:                                                                     │
00:02:37 v #1941 > > │                                                                              │
00:02:37 v #1942 > > │     --help                display this list of options.                      │
00:02:37 v #1943 > > │ "                                                                            │
00:02:37 v #1944 > > │                                                                              │
00:02:37 v #1945 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:37 v #1946 > >
00:02:37 v #1947 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:02:37 v #1948 > > //// test
00:02:37 v #1949 > >
00:02:37 v #1950 > > fun () -> parseArgs<Arguments> [[||]] |> ignore
00:02:37 v #1951 > > |> _throwsC (fun ex _ ->
00:02:37 v #1952 > >     SpiralSm.format_exception ex
00:02:37 v #1953 > >     |> _stringContains "Argu.ArguParseException: ERROR: missing parameter
00:02:37 v #1954 > > '<paths>...'."
00:02:37 v #1955 > > )
00:02:37 v #1956 > >
00:02:37 v #1957 > > ╭─[ 68.13ms - stdout ]─────────────────────────────────────────────────────────╮
00:02:37 v #1958 > > │ <fun:it@3-3>                                                                 │
00:02:37 v #1959 > > │                                                                              │
00:02:37 v #1960 > > │ "Argu.ArguParseException: ERROR: missing parameter '<paths>...'.             │
00:02:37 v #1961 > > │ USAGE: dotnet-repl.exe [--help] <paths>...                                   │
00:02:37 v #1962 > > │                                                                              │
00:02:37 v #1963 > > │ PATHS:                                                                       │
00:02:37 v #1964 > > │                                                                              │
00:02:37 v #1965 > > │     <paths>...            Paths                                              │
00:02:37 v #1966 > > │                                                                              │
00:02:37 v #1967 > > │ OPTIONS:                                                                     │
00:02:37 v #1968 > > │                                                                              │
00:02:37 v #1969 > > │     --help                display this list of options.                      │
00:02:37 v #1970 > > │ "                                                                            │
00:02:37 v #1971 > > │                                                                              │
00:02:37 v #1972 > > │                                                                              │
00:02:37 v #1973 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:37 v #1974 > >
00:02:37 v #1975 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:02:37 v #1976 > > let inline parseAllArgs<'T when 'T :> Argu.IArgParserTemplate> args =
00:02:37 v #1977 > >     args
00:02:37 v #1978 > >     |> parseArgs<'T>
00:02:37 v #1979 > >     |> fun results -> results.GetAllResults ()
00:02:37 v #1980 > >
00:02:37 v #1981 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:02:37 v #1982 > > //// test
00:02:37 v #1983 > >
00:02:37 v #1984 > > [[<RequireQualifiedAccess>]]
00:02:37 v #1985 > > type Arguments =
00:02:37 v #1986 > >     | [[<Argu.ArguAttributes.MainCommand; Argu.ArguAttributes.ExactlyOnce;
00:02:37 v #1987 > > Argu.ArguAttributes.Last>]]
00:02:37 v #1988 > >         Paths of paths : string list
00:02:37 v #1989 > >
00:02:37 v #1990 > >     interface Argu.IArgParserTemplate with
00:02:37 v #1991 > >         member s.Usage =
00:02:37 v #1992 > >             match s with
00:02:37 v #1993 > >             | Paths _ -> nameof Paths
00:02:37 v #1994 > >
00:02:37 v #1995 > > parseAllArgs<Arguments> [[| "a b"; "c" |]]
00:02:37 v #1996 > > |> _assertEqual [[ Arguments.Paths [[ "a b"; "c" ]] ]]
00:02:37 v #1997 > >
00:02:37 v #1998 > > ╭─[ 103.14ms - stdout ]────────────────────────────────────────────────────────╮
00:02:37 v #1999 > > │ [Paths ["a b"; "c"]]                                                         │
00:02:37 v #2000 > > │                                                                              │
00:02:37 v #2001 > > │                                                                              │
00:02:37 v #2002 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:37 v #2003 > >
00:02:37 v #2004 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:02:37 v #2005 > > let inline parseArgsMap<'T when 'T :> Argu.IArgParserTemplate> args =
00:02:37 v #2006 > >     args
00:02:37 v #2007 > >     |> parseAllArgs<'T>
00:02:37 v #2008 > >     |> List.groupBy CommonFSharp.getUnionCaseName<'T>
00:02:37 v #2009 > >     |> Map.ofList
00:02:37 v #2010 > >
00:02:37 v #2011 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:02:37 v #2012 > > //// test
00:02:37 v #2013 > >
00:02:37 v #2014 > > parseArgsMap<Arguments> [[| "a b"; "c" |]]
00:02:37 v #2015 > > |> _assertEqual (
00:02:37 v #2016 > >     [[ nameof Arguments.Paths, [[ Arguments.Paths [[ "a b"; "c" ]] ]] ]]
00:02:37 v #2017 > >     |> Map.ofList
00:02:37 v #2018 > > )
00:02:37 v #2019 > >
00:02:37 v #2020 > > ╭─[ 60.47ms - stdout ]─────────────────────────────────────────────────────────╮
00:02:37 v #2021 > > │ map [("Paths", [Paths ["a b"; "c"]])]                                        │
00:02:37 v #2022 > > │                                                                              │
00:02:37 v #2023 > > │                                                                              │
00:02:37 v #2024 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:37 v #2025 > 00:00:19 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 7590 }
00:02:37 v #2026 > 00:00:19 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/polyglot/lib/fsharp/Runtime.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/polyglot/lib/fsharp/Runtime.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:02:38 v #2027 > 00:00:20 v #5 ! [NbConvertApp] Converting notebook c:/home/git/polyglot/lib/fsharp/Runtime.dib.ipynb to html
00:02:38 v #2028 > 00:00:20 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:02:38 v #2029 > 00:00:20 v #7 !   validate(nb)
00:02:39 v #2030 > 00:00:21 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:02:39 v #2031 > 00:00:21 v #9 !   return _pygments_highlight(
00:02:39 v #2032 > 00:00:21 v #10 ! [NbConvertApp] Writing 292946 bytes to c:\home\git\polyglot\lib\fsharp\Runtime.dib.html
00:02:39 v #2033 > 00:00:21 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 856 }
00:02:39 v #2034 > 00:00:21 d #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 856 }
00:02:39 v #2035 > 00:00:21 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/polyglot/lib/fsharp/Runtime.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/polyglot/lib/fsharp/Runtime.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:02:40 v #2036 > 00:00:22 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:02:40 v #2037 > 00:00:22 d #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:02:40 v #2038 > 00:00:22 d #16 spiral_builder.run / dib / { exit_code = 0; result_length = 8505 }
00:02:40 d #2039 runtime.execute_with_options_async / { exit_code = 0; output_length = 11415 }
00:02:40 d #8 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder.exe dib --path Runtime.dib --retries 3
00:02:40 v #5 async.run_with_timeout_async / { timeout = 100 }
00:00:00 d #1 writeDibCode / output: Fs / path: FileSystem.dib
00:00:00 d #1 writeDibCode / output: Fs / path: Common.dib
00:00:00 d #1 writeDibCode / output: Fs / path: AsyncSeq.dib
00:00:00 d #1 writeDibCode / output: Fs / path: CommonFSharp.dib
00:00:00 d #1 writeDibCode / output: Fs / path: Async.dib
00:00:00 d #1 writeDibCode / output: Fs / path: Runtime.dib
00:00:00 d #2 parseDibCode / output: Fs / file: Common.dib
00:00:00 d #2 parseDibCode / output: Fs / file: AsyncSeq.dib
00:00:00 d #2 parseDibCode / output: Fs / file: Runtime.dib
00:00:00 d #5 parseDibCode / output: Fs / file: CommonFSharp.dib
00:00:00 d #6 parseDibCode / output: Fs / file: FileSystem.dib
00:00:00 d #6 parseDibCode / output: Fs / file: Async.dib
In [ ]:
{ pwsh ../apps/spiral/builder/build.ps1 } | Invoke-Block
00:00:00 v #1 async.run_with_timeout_async / { timeout = 180 }
00:00:00 d #1 runtime.execute_with_options_async / { file_name = dotnet; arguments = US5_0
  ""C:\home\git\polyglot\deps\The-Spiral-Language\The Spiral Language 2\artifacts\bin\The Spiral Language 2\release\Spiral.dll" --port 13805 --default-int i32 --default-float f64"; options = { command = dotnet "C:\home\git\polyglot\deps\The-Spiral-Language\The Spiral Language 2\artifacts\bin\The Spiral Language 2\release\Spiral.dll" --port 13805 --default-int i32 --default-float f64; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = Some <fun:main@595-7>; stdin = None; trace = true; working_directory = Some "C:\home\git\polyglot" } }
00:00:00 v #2 > 00:00:00 d #1 pwd: C:\home\git\polyglot
00:00:00 v #3 > 00:00:00 d #2 dllPath: C:\home\git\polyglot\deps\The-Spiral-Language\The Spiral Language 2\artifacts\bin\The Spiral Language 2\release
00:00:00 v #4 > 00:00:00 d #3 targetDir: C:\home\git\polyglot\target/spiral_Eval
00:00:01 v #2 async.run_with_timeout_async / { timeout = 100 }
00:00:01 v #3 async.run_with_timeout_async / { timeout = 100 }
00:00:01 v #5 > Starting the Spiral Server. It is bound to: http://localhost:13805
00:00:01 v #4 async.run_with_timeout_async / { timeout = 100 }
00:00:01 v #1 Supervisor.sendJson / port: 13805 / json: {"Ping":true} / result:
00:00:01 v #2 Supervisor.awaitCompiler / Ping / result: 'Some null' / port: 13805 / retry: 1
00:00:01 v #6 > Server bound to: http://localhost:13805
00:00:01 d #7 runtime.execute_with_options_async / { file_name = ../../../workspace/target/release/spiral_builder.exe; arguments = US5_0 "dib --path spiral_builder.dib"; options = { command = ../../../workspace/target/release/spiral_builder.exe dib --path spiral_builder.dib; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:00:01 v #8 > 00:00:00 d #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "spiral_builder.dib"])) }
00:00:01 v #9 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/polyglot/apps/spiral/builder/spiral_builder.dib", "--output-path", "c:/home/git/polyglot/apps/spiral/builder/spiral_builder.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/polyglot/apps/spiral/builder/spiral_builder.dib" --output-path "c:/home/git/polyglot/apps/spiral/builder/spiral_builder.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:00:03 v #10 > >
00:00:03 v #11 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:03 v #12 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:03 v #13 > > │ # spiral_builder                                                             │
00:00:03 v #14 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 v #15 > >
00:00:07 v #16 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:07 v #17 > > open file_system_operators
00:00:07 v #18 > > open rust.rust_operators
00:00:07 v #19 > > open rust
00:00:07 v #20 > > open sm'_operators
00:00:11 v #21 > >
00:00:11 v #22 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:11 v #23 > > //// test
00:00:11 v #24 > >
00:00:11 v #25 > > open testing
00:00:11 v #26 > >
00:00:11 v #27 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:11 v #28 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:11 v #29 > > │ ## get_args                                                                  │
00:00:11 v #30 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:11 v #31 > >
00:00:11 v #32 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:11 v #33 > > inl get_args () =
00:00:11 v #34 > >     {
00:00:11 v #35 > >         fsharp = "fsharp", {
00:00:11 v #36 > >             spi_path = "spi-path", 's'
00:00:11 v #37 > >         }
00:00:11 v #38 > >         cuda = "cuda", {
00:00:11 v #39 > >             py_path = "py-path", 'p'
00:00:11 v #40 > >             env = "env", 'e'
00:00:11 v #41 > >             deps = "deps", 'd'
00:00:11 v #42 > >         }
00:00:11 v #43 > >         fable = "fable", {
00:00:11 v #44 > >             fs_path = "fs-path", 'f'
00:00:11 v #45 > >             command = "command", 'c'
00:00:11 v #46 > >         }
00:00:11 v #47 > >         rust = "rust", {
00:00:11 v #48 > >             fs_path = "fs-path", 'f'
00:00:11 v #49 > >             deps = "deps", 'd'
00:00:11 v #50 > >             wasm = "wasm", 'w'
00:00:11 v #51 > >             contract = "contract", 'c'
00:00:11 v #52 > >             cleanup = "cleanup", 'l'
00:00:11 v #53 > >         }
00:00:11 v #54 > >         typescript = "typescript", {
00:00:11 v #55 > >             fs_path = "fs-path", 'f'
00:00:11 v #56 > >             deps = "deps", 'd'
00:00:11 v #57 > >         }
00:00:11 v #58 > >         python = "python", {
00:00:11 v #59 > >             fs_path = "fs-path", 'f'
00:00:11 v #60 > >             deps = "deps", 'd'
00:00:11 v #61 > >         }
00:00:11 v #62 > >         dib = "dib", {
00:00:11 v #63 > >             path = "path", 'p'
00:00:11 v #64 > >             retries = "retries", 'r'
00:00:11 v #65 > >             working_directory = "working-directory", 'w'
00:00:11 v #66 > >         }
00:00:11 v #67 > >     }
00:00:12 v #68 > >
00:00:12 v #69 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:12 v #70 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:12 v #71 > > │ ## cuda_env                                                                  │
00:00:12 v #72 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:12 v #73 > >
00:00:12 v #74 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:12 v #75 > > union cuda_env =
00:00:12 v #76 > >     | Pip
00:00:12 v #77 > >     | Poetry
00:00:12 v #78 > >
00:00:12 v #79 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:12 v #80 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:12 v #81 > > │ ## get_command                                                               │
00:00:12 v #82 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:12 v #83 > >
00:00:12 v #84 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:12 v #85 > > let get_command () =
00:00:12 v #86 > >     ##"command"
00:00:12 v #87 > >     |> runtime.new_command
00:00:12 v #88 > >     |> runtime.command_subcommand_required true
00:00:12 v #89 > >     |> runtime.command_subcommand (
00:00:12 v #90 > >         ##(get_args () .fsharp |> fst)
00:00:12 v #91 > >         |> runtime.new_command
00:00:12 v #92 > >         |> runtime.command_init_arg ((get_args () .fsharp |> snd).spi_path) (
00:00:12 v #93 > >             runtime.arg_required true
00:00:12 v #94 > >         )
00:00:12 v #95 > >     )
00:00:12 v #96 > >     |> runtime.command_subcommand (
00:00:12 v #97 > >         ##(get_args () .cuda |> fst)
00:00:12 v #98 > >         |> runtime.new_command
00:00:12 v #99 > >         |> runtime.command_init_arg ((get_args () .cuda |> snd).py_path) (
00:00:12 v #100 > >             runtime.arg_required true
00:00:12 v #101 > >         )
00:00:12 v #102 > >         |> runtime.command_init_arg ((get_args () .cuda |> snd).env) (
00:00:12 v #103 > >             real runtime.arg_union `cuda_env ignore
00:00:12 v #104 > >         )
00:00:12 v #105 > >         |> runtime.command_init_arg ((get_args () .cuda |> snd).deps) (
00:00:12 v #106 > >             runtime.arg_value_names ;[[ ##"NAME"; ##"VERSION" ]]
00:00:12 v #107 > >             >> runtime.arg_num_args_range (
00:00:12 v #108 > >                 runtime.new_value_range
00:00:12 v #109 > >                     false
00:00:12 v #110 > >                     (am'.Start (1i32 |> convert : unativeint))
00:00:12 v #111 > >                     (am'.End id)
00:00:12 v #112 > >             )
00:00:12 v #113 > >             >> runtime.arg_action runtime.Append
00:00:12 v #114 > >         )
00:00:12 v #115 > >     )
00:00:12 v #116 > >     |> runtime.command_subcommand (
00:00:12 v #117 > >         ##(get_args () .fable |> fst)
00:00:12 v #118 > >         |> runtime.new_command
00:00:12 v #119 > >         |> runtime.command_init_arg ((get_args () .fable |> snd).fs_path) (
00:00:12 v #120 > >             runtime.arg_required true
00:00:12 v #121 > >         )
00:00:12 v #122 > >         |> runtime.command_init_arg ((get_args () .fable |> snd).command) (
00:00:12 v #123 > >             id
00:00:12 v #124 > >         )
00:00:12 v #125 > >     )
00:00:12 v #126 > >     |> runtime.command_subcommand (
00:00:12 v #127 > >         ##(get_args () .rust |> fst)
00:00:12 v #128 > >         |> runtime.new_command
00:00:12 v #129 > >         |> runtime.command_init_arg ((get_args () .rust |> snd).fs_path) (
00:00:12 v #130 > >             runtime.arg_required true
00:00:12 v #131 > >         )
00:00:12 v #132 > >         |> runtime.command_init_arg ((get_args () .rust |> snd).deps) (
00:00:12 v #133 > >             runtime.arg_value_names ;[[ ##"NAME"; ##"VERSION" ]]
00:00:12 v #134 > >             >> runtime.arg_num_args_range (
00:00:12 v #135 > >                 runtime.new_value_range
00:00:12 v #136 > >                     false
00:00:12 v #137 > >                     (am'.Start (1i32 |> convert : unativeint))
00:00:12 v #138 > >                     (am'.End id)
00:00:12 v #139 > >             )
00:00:12 v #140 > >             >> runtime.arg_action runtime.Append
00:00:12 v #141 > >         )
00:00:12 v #142 > >         |> runtime.command_init_arg ((get_args () .rust |> snd).wasm) (
00:00:12 v #143 > >             runtime.arg_num_args_range (
00:00:12 v #144 > >                 runtime.new_value_range
00:00:12 v #145 > >                     true
00:00:12 v #146 > >                     (am'.End id)
00:00:12 v #147 > >                     (am'.End fun _ => (1i32 |> convert : unativeint))
00:00:12 v #148 > >             )
00:00:12 v #149 > >             >> runtime.arg_require_equals true
00:00:12 v #150 > >             >> runtime.arg_default_missing_value ""
00:00:12 v #151 > >         )
00:00:12 v #152 > >         |> runtime.command_init_arg ((get_args () .rust |> snd).contract) (
00:00:12 v #153 > >             runtime.arg_num_args_range (
00:00:12 v #154 > >                 runtime.new_value_range
00:00:12 v #155 > >                     true
00:00:12 v #156 > >                     (am'.End id)
00:00:12 v #157 > >                     (am'.End fun _ => (1i32 |> convert : unativeint))
00:00:12 v #158 > >             )
00:00:12 v #159 > >             >> runtime.arg_require_equals true
00:00:12 v #160 > >             >> runtime.arg_default_missing_value ""
00:00:12 v #161 > >         )
00:00:12 v #162 > >         |> runtime.command_init_arg ((get_args () .rust |> snd).cleanup) (
00:00:12 v #163 > >             runtime.arg_default_value "true"
00:00:12 v #164 > >             >> runtime.arg_action runtime.SetFalse
00:00:12 v #165 > >         )
00:00:12 v #166 > >     )
00:00:12 v #167 > >     |> runtime.command_subcommand (
00:00:12 v #168 > >         ##(get_args () .typescript |> fst)
00:00:12 v #169 > >         |> runtime.new_command
00:00:12 v #170 > >         |> runtime.command_init_arg ((get_args () .typescript |> snd).fs_path) (
00:00:12 v #171 > >             runtime.arg_required true
00:00:12 v #172 > >         )
00:00:12 v #173 > >         |> runtime.command_init_arg ((get_args () .typescript |> snd).deps) (
00:00:12 v #174 > >             runtime.arg_value_names ;[[ ##"NAME"; ##"VERSION" ]]
00:00:12 v #175 > >             >> runtime.arg_num_args_range (
00:00:12 v #176 > >                 runtime.new_value_range
00:00:12 v #177 > >                     false
00:00:12 v #178 > >                     (am'.Start (1i32 |> convert : unativeint))
00:00:12 v #179 > >                     (am'.End id)
00:00:12 v #180 > >             )
00:00:12 v #181 > >             >> runtime.arg_action runtime.Append
00:00:12 v #182 > >         )
00:00:12 v #183 > >     )
00:00:12 v #184 > >     |> runtime.command_subcommand (
00:00:12 v #185 > >         ##(get_args () .python |> fst)
00:00:12 v #186 > >         |> runtime.new_command
00:00:12 v #187 > >         |> runtime.command_init_arg ((get_args () .python |> snd).fs_path) (
00:00:12 v #188 > >             runtime.arg_required true
00:00:12 v #189 > >         )
00:00:12 v #190 > >         |> runtime.command_init_arg ((get_args () .python |> snd).deps) (
00:00:12 v #191 > >             runtime.arg_value_names ;[[ ##"NAME"; ##"VERSION" ]]
00:00:12 v #192 > >             >> runtime.arg_num_args_range (
00:00:12 v #193 > >                 runtime.new_value_range
00:00:12 v #194 > >                     false
00:00:12 v #195 > >                     (am'.Start (1i32 |> convert : unativeint))
00:00:12 v #196 > >                     (am'.End id)
00:00:12 v #197 > >             )
00:00:12 v #198 > >             >> runtime.arg_action runtime.Append
00:00:12 v #199 > >         )
00:00:12 v #200 > >     )
00:00:12 v #201 > >     |> runtime.command_subcommand (
00:00:12 v #202 > >         ##(get_args () .dib |> fst)
00:00:12 v #203 > >         |> runtime.new_command
00:00:12 v #204 > >         |> runtime.command_init_arg ((get_args () .dib |> snd).path) (
00:00:12 v #205 > >             runtime.arg_required true
00:00:12 v #206 > >             // >> runtime.arg_value_parser (runtime.value_parser_path_buf ())
00:00:12 v #207 > >         )
00:00:12 v #208 > >         |> runtime.command_init_arg ((get_args () .dib |> snd).retries) (
00:00:12 v #209 > >             runtime.arg_value_parser (runtime.value_parser_expr "u8")
00:00:12 v #210 > >         )
00:00:12 v #211 > >         |> runtime.command_init_arg ((get_args () .dib |>
00:00:12 v #212 > > snd).working_directory) (
00:00:12 v #213 > >             id
00:00:12 v #214 > >         )
00:00:12 v #215 > >     )
00:00:13 v #216 > >
00:00:13 v #217 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:13 v #218 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:13 v #219 > > │ ## fable                                                                     │
00:00:13 v #220 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:13 v #221 > >
00:00:13 v #222 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:13 v #223 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:13 v #224 > > │ ### fable_target                                                             │
00:00:13 v #225 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:13 v #226 > >
00:00:13 v #227 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:13 v #228 > > union fable_target =
00:00:13 v #229 > >     | Rust
00:00:13 v #230 > >     | TypeScript
00:00:13 v #231 > >     | Python
00:00:13 v #232 > >
00:00:13 v #233 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:13 v #234 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:13 v #235 > > │ ### fable_runtime                                                            │
00:00:13 v #236 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:13 v #237 > >
00:00:13 v #238 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:13 v #239 > > union fable_runtime =
00:00:13 v #240 > >     | Wasm : string
00:00:13 v #241 > >     | Contract : string
00:00:14 v #242 > >
00:00:14 v #243 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:14 v #244 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:14 v #245 > > │ ### execute_dotnet_fable                                                     │
00:00:14 v #246 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:14 v #247 > >
00:00:14 v #248 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:14 v #249 > > let execute_dotnet_fable { workspace_root_external fsproj_path extension
00:00:14 v #250 > > package_dir runtime } =
00:00:14 v #251 > >     open runtime
00:00:14 v #252 > >     execution_options fun x => { x with
00:00:14 v #253 > >         command =
00:00:14 v #254 > >             inl platform =
00:00:14 v #255 > >                 if platform.is_windows ()
00:00:14 v #256 > >                 then "_WINDOWS"
00:00:14 v #257 > >                 else "_LINUX"
00:00:14 v #258 > >             inl platform : string = $'$" --define {!platform}"'
00:00:14 v #259 > >             inl runtime =
00:00:14 v #260 > >                 match runtime with
00:00:14 v #261 > >                 | Some (runtime : fable_runtime) =>
00:00:14 v #262 > >                     inl runtime = runtime |> reflection.union_to_string |>
00:00:14 v #263 > > sm'.to_upper
00:00:14 v #264 > >                     $'$" --define {!runtime}"'
00:00:14 v #265 > >                 | None => ""
00:00:14 v #266 > >             $'$"dotnet fable \\\"{!fsproj_path}\\\" --optimize --lang
00:00:14 v #267 > > {!extension} --extension .{!extension} --outDir
00:00:14 v #268 > > \\\"{!package_dir}\\\"{!platform}{!runtime}"'
00:00:14 v #269 > >         working_directory = workspace_root_external |> resultm.box |>
00:00:14 v #270 > > resultm.ok'
00:00:14 v #271 > >     }
00:00:14 v #272 > >     |> execute_retry 3u8
00:00:14 v #273 > >
00:00:14 v #274 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:14 v #275 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:14 v #276 > > │ ### get_package_dir                                                          │
00:00:14 v #277 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:14 v #278 > >
00:00:14 v #279 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:14 v #280 > > let get_package_dir { workspace_root target name hash } =
00:00:14 v #281 > >     inl dir = workspace_root </> "target/spiral_builder" </> name
00:00:14 v #282 > >     match hash, (target : option fable_target) with
00:00:14 v #283 > >     | Some hash, Some target => dir </> "packages" </> (target |>
00:00:14 v #284 > > reflection.union_to_string) </> hash
00:00:14 v #285 > >     | _ => dir
00:00:15 v #286 > >
00:00:15 v #287 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:15 v #288 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:15 v #289 > > │ ### persist_code_project                                                     │
00:00:15 v #290 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:15 v #291 > >
00:00:15 v #292 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:15 v #293 > > let persist_code_project { workspace_root package_dir packages modules name code
00:00:15 v #294 > > } =
00:00:15 v #295 > >     package_dir |> file_system.create_dir |> ignore
00:00:15 v #296 > >
00:00:15 v #297 > >     inl fs_path = package_dir </> $'$"{!name}.fs"' |> file_system.normalize_path
00:00:15 v #298 > >     code |> file_system.write_all_text_exists fs_path
00:00:15 v #299 > >
00:00:15 v #300 > >     inl modules_code =
00:00:15 v #301 > >         modules
00:00:15 v #302 > >         |> listm.map fun path =>
00:00:15 v #303 > >             inl path = workspace_root </> path
00:00:15 v #304 > >             $'$"<Compile Include=\\\"{!path}\\\" />"' : string
00:00:15 v #305 > >         |> listm'.box
00:00:15 v #306 > >         |> seq.of_list'
00:00:15 v #307 > >         |> sm'.concat "\\n        "
00:00:15 v #308 > >
00:00:15 v #309 > >     inl packages_code =
00:00:15 v #310 > >         packages
00:00:15 v #311 > >         |> listm.map fun (package : string) =>
00:00:15 v #312 > >             $'$"<PackageReference Include=\\\"{!package}\\\" Version=\\\"*\\\"
00:00:15 v #313 > > />"' : string
00:00:15 v #314 > >         |> listm'.box
00:00:15 v #315 > >         |> seq.of_list'
00:00:15 v #316 > >         |> sm'.concat "\\n        "
00:00:15 v #317 > >
00:00:15 v #318 > >     inl fsproj_path = package_dir </> $'$"{!name}.fsproj"' |>
00:00:15 v #319 > > file_system.normalize_path
00:00:15 v #320 > >     inl fsproj_code : string =
00:00:15 v #321 > >         $'$"<Project Sdk=\\\"Microsoft.NET.Sdk\\\">"'
00:00:15 v #322 > >         +#. $'$"<PropertyGroup>"'
00:00:15 v #323 > >         +#. $'$"    <TargetFramework>net9.0</TargetFramework>"'
00:00:15 v #324 > >         +#. $'$"    <LangVersion>preview</LangVersion>"'
00:00:15 v #325 > >         +#. $'$"    <RollForward>Major</RollForward>"'
00:00:15 v #326 > >         +#. $'$"    <TargetLatestRuntimePatch>true</TargetLatestRuntimePatch>"'
00:00:15 v #327 > >         +#. $'$"    <PublishAot>false</PublishAot>"'
00:00:15 v #328 > >         +#. $'$"    <PublishTrimmed>false</PublishTrimmed>"'
00:00:15 v #329 > >         +#. $'$"    <PublishSingleFile>true</PublishSingleFile>"'
00:00:15 v #330 > >         +#. $'$"    <SelfContained>true</SelfContained>"'
00:00:15 v #331 > >         +#. $'$"    <Version>0.0.1-alpha.1</Version>"'
00:00:15 v #332 > >         +#. $'$"    <OutputType>Exe</OutputType>"'
00:00:15 v #333 > >         +#. $'$"</PropertyGroup>"'
00:00:15 v #334 > >
00:00:15 v #335 > >         +#. $'$"<PropertyGroup
00:00:15 v #336 > > Condition=\\\"$([[MSBuild]]::IsOSPlatform(\'FreeBSD\'))\\\">"'
00:00:15 v #337 > >         +#. $'$"    <DefineConstants>_FREEBSD</DefineConstants>"'
00:00:15 v #338 > >         +#. $'$"</PropertyGroup>"'
00:00:15 v #339 > >
00:00:15 v #340 > >         +#. $'$"<PropertyGroup
00:00:15 v #341 > > Condition=\\\"$([[MSBuild]]::IsOSPlatform(\'Linux\'))\\\">"'
00:00:15 v #342 > >         +#. $'$"    <DefineConstants>_LINUX</DefineConstants>"'
00:00:15 v #343 > >         +#. $'$"</PropertyGroup>"'
00:00:15 v #344 > >
00:00:15 v #345 > >         +#. $'$"<PropertyGroup
00:00:15 v #346 > > Condition=\\\"$([[MSBuild]]::IsOSPlatform(\'OSX\'))\\\">"'
00:00:15 v #347 > >         +#. $'$"    <DefineConstants>_OSX</DefineConstants>"'
00:00:15 v #348 > >         +#. $'$"</PropertyGroup>"'
00:00:15 v #349 > >
00:00:15 v #350 > >         +#. $'$"<PropertyGroup
00:00:15 v #351 > > Condition=\\\"$([[MSBuild]]::IsOSPlatform(\'Windows\'))\\\">"'
00:00:15 v #352 > >         +#. $'$"    <DefineConstants>_WINDOWS</DefineConstants>"'
00:00:15 v #353 > >         +#. $'$"</PropertyGroup>"'
00:00:15 v #354 > >
00:00:15 v #355 > >         +#. $'$"<ItemGroup>"'
00:00:15 v #356 > >         +#. $'$"    {!modules_code}"'
00:00:15 v #357 > >         +#. $'$"    <Compile Include=\\\"{!fs_path}\\\" />"'
00:00:15 v #358 > >         +#. $'$"</ItemGroup>"'
00:00:15 v #359 > >
00:00:15 v #360 > >         +#. $'$"<ItemGroup>"'
00:00:15 v #361 > >         +#. $'$"    {!packages_code}"'
00:00:15 v #362 > >         +#. $'$"</ItemGroup>"'
00:00:15 v #363 > >
00:00:15 v #364 > >         +#. $'$"</Project>"'
00:00:15 v #365 > >
00:00:15 v #366 > >     fsproj_code |> file_system.write_all_text_exists fsproj_path
00:00:15 v #367 > >
00:00:15 v #368 > >     fsproj_path
00:00:15 v #369 > >
00:00:15 v #370 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:15 v #371 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:15 v #372 > > │ ### build_project                                                            │
00:00:15 v #373 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:15 v #374 > >
00:00:15 v #375 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:15 v #376 > > inl build_project runtime' output_dir path =
00:00:15 v #377 > >     inl full_path = path |> file_system.get_full_path
00:00:15 v #378 > >     inl file_dir = full_path |> file_system.directory_get_parent |>
00:00:15 v #379 > > optionm'.default_value' ""
00:00:15 v #380 > >     inl extension = full_path |> file_system.get_extension
00:00:15 v #381 > >
00:00:15 v #382 > >     trace Debug
00:00:15 v #383 > >         fun () => "build_project"
00:00:15 v #384 > >         fun () => { full_path }
00:00:15 v #385 > >
00:00:15 v #386 > >     match extension with
00:00:15 v #387 > >     | "fsproj" => ()
00:00:15 v #388 > >     | _ => failwith $'$"spiral_builder.build_project / Invalid project file
00:00:15 v #389 > > extension: {!extension}"'
00:00:15 v #390 > >
00:00:15 v #391 > >     inl runtimes =
00:00:15 v #392 > >         runtime'
00:00:15 v #393 > >         |> optionm.map listm.singleton
00:00:15 v #394 > >         |> optionm'.default_value [[ "linux-x64"; "win-x64" ]]
00:00:15 v #395 > >
00:00:15 v #396 > >     inl output_dir = output_dir |> optionm'.default_value "dist"
00:00:15 v #397 > >
00:00:15 v #398 > >     runtimes
00:00:15 v #399 > >     |> listm.map fun runtime' =>
00:00:15 v #400 > >         runtime.execution_options fun x => { x with
00:00:15 v #401 > >             command = $'$@@"dotnet publish \"\"{!path}\"\" --configuration
00:00:15 v #402 > > Release --output \"\"{!output_dir}\"\" --runtime {!runtime'}"'
00:00:15 v #403 > >             working_directory = file_dir |> Some |> optionm'.box
00:00:15 v #404 > >         }
00:00:15 v #405 > >         |> runtime.execute_with_options
00:00:15 v #406 > >         |> fst
00:00:15 v #407 > >     |> listm'.sum
00:00:16 v #408 > >
00:00:16 v #409 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:16 v #410 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:16 v #411 > > │ ### build_code                                                               │
00:00:16 v #412 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:16 v #413 > >
00:00:16 v #414 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:16 v #415 > > inl build_code { workspace_root runtime packages modules output_dir name code }
00:00:16 v #416 > > =
00:00:16 v #417 > >     inl package_dir = get_package_dir { workspace_root name target = None; hash
00:00:16 v #418 > > = None }
00:00:16 v #419 > >     inl fsproj_path = persist_code_project { workspace_root package_dir packages
00:00:16 v #420 > > modules name code }
00:00:16 v #421 > >     inl exit_code = fsproj_path |> build_project runtime output_dir
00:00:16 v #422 > >     if exit_code <>. 0 then
00:00:16 v #423 > >         trace Critical
00:00:16 v #424 > >             fun () => "build_code"
00:00:16 v #425 > >             fun () => {
00:00:16 v #426 > >                 code = code |> sm'.ellipsis_end 400
00:00:16 v #427 > >                 fsproj_text = fsproj_path |> file_system.read_all_text
00:00:16 v #428 > >             }
00:00:16 v #429 > >     exit_code
00:00:16 v #430 > >
00:00:16 v #431 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:16 v #432 > > //// test
00:00:16 v #433 > > ///! rust -d encoding_rs encoding_rs_io regex
00:00:16 v #434 > >
00:00:16 v #435 > > build_code {
00:00:16 v #436 > >     workspace_root = file_system.get_workspace_root ()
00:00:16 v #437 > >     runtime = None
00:00:16 v #438 > >     packages = [[]]
00:00:16 v #439 > >     modules = [[]]
00:00:16 v #440 > >     output_dir = None
00:00:16 v #441 > >     name = "test1"
00:00:16 v #442 > >     code = "1 + 1 |> ignore"
00:00:16 v #443 > > }
00:00:16 v #444 > > |> _assert_eq 0
00:00:52 v #445 > >
00:00:52 v #446 > > ╭─[ 35.54s - return value ]────────────────────────────────────────────────────╮
00:00:52 v #447 > > │ 00:00:00 v #1 file_system.create_dir / { dir =                         │
00:00:52 v #448 > > │ c:\home\git\polyglot\target/spiral_builder\test1 }                           │
00:00:52 v #449 > > │ 00:00:00 d #2 build_project / { full_path =                            │
00:00:52 v #450 > > │ \\?\C:\home\git\polyglot\target\spiral_builder\test1\test1.fsproj }          │
00:00:52 v #451 > > │ 00:00:00 d #3 runtime.execute_with_options / { file_name = dotnet;     │
00:00:52 v #452 > > │ arguments = ["publish",                                                      │
00:00:52 v #453 > > │ "c:/home/git/polyglot/target/spiral_builder/test1/test1.fsproj",             │
00:00:52 v #454 > > │ "--configuration", "Release", "--output", "dist", "--runtime", "win-x64"];   │
00:00:52 v #455 > > │ options = { command = dotnet publish                                         │
00:00:52 v #456 > > │ "c:/home/git/polyglot/target/spiral_builder/test1/test1.fsproj"              │
00:00:52 v #457 > > │ --configuration Release --output "dist" --runtime win-x64;                   │
00:00:52 v #458 > > │ cancellation_token = None; environment_variables = Array(MutCell([]));       │
00:00:52 v #459 > > │ on_line = None; stdin = None; trace = true; working_directory = Some(        │
00:00:52 v #460 > > │     "\\?\C:\home\git\polyglot\target\spiral_builder\test1",                  │
00:00:52 v #461 > > │ ) } }                                                                        │
00:00:52 v #462 > > │ 00:00:00 v #4 > MSBuild version 17.10.0-preview-24101-01+07fd5d51f for │
00:00:52 v #463 > > │ .NET                                                                         │
00:00:52 v #464 > > │ 00:00:00 v #5 >   Determining projects to restore...                   │
00:00:52 v #465 > > │ 00:00:01 v #6 >   Restored                                             │
00:00:52 v #466 > > │ c:\home\git\polyglot\target\spiral_builder\test1\test1.fsproj (in 330 ms).   │
00:00:52 v #467 > > │ 00:00:01 v #7 >                                                        │
00:00:52 v #468 > > │ C:\Users\i574n\scoop\apps\dotnet-sdk-preview\current\sdk\9.0.100-preview.1.2 │
00:00:52 v #469 > > │ 4101.2\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.RuntimeIdentifierInferen │
00:00:52 v #470 > > │ ce.targets(313,5): message NETSDK1057: You are using a preview version of    │
00:00:52 v #471 > > │ .NET. See: https://aka.ms/dotnet-support-policy [                            │
00:00:52 v #472 > > │ c:\home\git\polyglot\target\spiral_builder\test1\test1.fsproj]               │
00:00:52 v #473 > > │ 00:00:01 v #8 >   test1                                                │
00:00:52 v #474 > > │ ->.../git/polyglot/target/spiral_builder/test1/test1.fsproj",                │
00:00:52 v #475 > > │ "--configuration", "Release", "--output", "dist", "--runtime", "linux-x64"]; │
00:00:52 v #476 > > │ options = { command = dotnet publish                                         │
00:00:52 v #477 > > │ "c:/home/git/polyglot/target/spiral_builder/test1/test1.fsproj"              │
00:00:52 v #478 > > │ --configuration Release --output "dist" --runtime linux-x64;                 │
00:00:52 v #479 > > │ cancellation_token = None; environment_variables = Array(MutCell([]));       │
00:00:52 v #480 > > │ on_line = None; stdin = None; trace = true; working_directory = Some(        │
00:00:52 v #481 > > │     "\\?\C:\home\git\polyglot\target\spiral_builder\test1",                  │
00:00:52 v #482 > > │ ) } }                                                                        │
00:00:52 v #483 > > │ 00:00:03 v #12 > MSBuild version 17.10.0-preview-24101-01+07fd5d51f    │
00:00:52 v #484 > > │ for .NET                                                                     │
00:00:52 v #485 > > │ 00:00:03 v #13 >   Determining projects to restore...                  │
00:00:52 v #486 > > │ 00:00:04 v #14 >   Restored                                            │
00:00:52 v #487 > > │ c:\home\git\polyglot\target\spiral_builder\test1\test1.fsproj (in 304 ms).   │
00:00:52 v #488 > > │ 00:00:04 v #15 >                                                       │
00:00:52 v #489 > > │ C:\Users\i574n\scoop\apps\dotnet-sdk-preview\current\sdk\9.0.100-preview.1.2 │
00:00:52 v #490 > > │ 4101.2\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.RuntimeIdentifierInferen │
00:00:52 v #491 > > │ ce.targets(313,5): message NETSDK1057: You are using a preview version of    │
00:00:52 v #492 > > │ .NET. See: https://aka.ms/dotnet-support-policy [                            │
00:00:52 v #493 > > │ c:\home\git\polyglot\target\spiral_builder\test1\test1.fsproj]               │
00:00:52 v #494 > > │ 00:00:04 v #16 >   test1 ->                                            │
00:00:52 v #495 > > │ c:\home\git\polyglot\target\spiral_builder\test1\bin\Release\net9.0\linux-x6 │
00:00:52 v #496 > > │ 4\test1.dll                                                                  │
00:00:52 v #497 > > │ 00:00:05 v #17 >   test1 ->                                            │
00:00:52 v #498 > > │ \\?\C:\home\git\polyglot\target\spiral_builder\test1\dist\                   │
00:00:52 v #499 > > │ 00:00:05 v #18 runtime.execute_with_options / result / { exit_code =   │
00:00:52 v #500 > > │ 0; std_trace_length = 689 }                                                  │
00:00:52 v #501 > > │ __assert_eq / actual: 0 / expected: 0                                        │
00:00:52 v #502 > > │                                                                              │
00:00:52 v #503 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:52 v #504 > >
00:00:52 v #505 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:52 v #506 > > //// test
00:00:52 v #507 > > ///! rust -d encoding_rs encoding_rs_io regex
00:00:52 v #508 > >
00:00:52 v #509 > > build_code {
00:00:52 v #510 > >     workspace_root = file_system.get_workspace_root ()
00:00:52 v #511 > >     runtime = None
00:00:52 v #512 > >     packages = [[]]
00:00:52 v #513 > >     modules = [[]]
00:00:52 v #514 > >     output_dir = None
00:00:52 v #515 > >     name = "test2"
00:00:52 v #516 > >     code = "1 + a |> ignore"
00:00:52 v #517 > > }
00:00:52 v #518 > > |> _assert_eq 2
00:01:22 v #519 > >
00:01:22 v #520 > > ╭─[ 30.27s - return value ]────────────────────────────────────────────────────╮
00:01:22 v #521 > > │ 00:00:00 v #1 file_system.create_dir / { dir =                         │
00:01:22 v #522 > > │ c:\home\git\polyglot\target/spiral_builder\test2 }                           │
00:01:22 v #523 > > │ 00:00:00 d #2 build_project / { full_path =                            │
00:01:22 v #524 > > │ \\?\C:\home\git\polyglot\target\spiral_builder\test2\test2.fsproj }          │
00:01:22 v #525 > > │ 00:00:00 d #3 runtime.execute_with_options / { file_name = dotnet;     │
00:01:22 v #526 > > │ arguments = ["publish",                                                      │
00:01:22 v #527 > > │ "c:/home/git/polyglot/target/spiral_builder/test2/test2.fsproj",             │
00:01:22 v #528 > > │ "--configuration", "Release", "--output", "dist", "--runtime", "win-x64"];   │
00:01:22 v #529 > > │ options = { command = dotnet publish                                         │
00:01:22 v #530 > > │ "c:/home/git/polyglot/target/spiral_builder/test2/test2.fsproj"              │
00:01:22 v #531 > > │ --configuration Release --output "dist" --runtime win-x64;                   │
00:01:22 v #532 > > │ cancellation_token = None; environment_variables = Array(MutCell([]));       │
00:01:22 v #533 > > │ on_line = None; stdin = None; trace = true; working_directory = Some(        │
00:01:22 v #534 > > │     "\\?\C:\home\git\polyglot\target\spiral_builder\test2",                  │
00:01:22 v #535 > > │ ) } }                                                                        │
00:01:22 v #536 > > │ 00:00:00 v #4 > MSBuild version 17.10.0-preview-24101-01+07fd5d51f for │
00:01:22 v #537 > > │ .NET                                                                         │
00:01:22 v #538 > > │ 00:00:00 v #5 >   Determining projects to restore...                   │
00:01:22 v #539 > > │ 00:00:01 v #6 >   Restored                                             │
00:01:22 v #540 > > │ c:\home\git\polyglot\target\spiral_builder\test2\test2.fsproj (in 347 ms).   │
00:01:22 v #541 > > │ 00:00:01 v #7 >                                                        │
00:01:22 v #542 > > │ C:\Users\i574n\scoop\apps\dotnet-sdk-preview\current\sdk\9.0.100-preview.1.2 │
00:01:22 v #543 > > │ 4101.2\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.RuntimeIdentifierInferen │
00:01:22 v #544 > > │ ce.targets(313,5): message NETSDK1057: You are using a preview version of    │
00:01:22 v #545 > > │ .NET. See: https://aka.ms/dotnet-support-policy [                            │
00:01:22 v #546 > > │ c:\home\git\polyglot\target\spiral_builder\test2\test2.fsproj]               │
00:01:22 v #547 > > │ 00:00:02 v #8 > c:\home\gi...ror FS0039: The value or constructor 'a'  │
00:01:22 v #548 > > │ is not defined. [                                                            │
00:01:22 v #549 > > │ c:\home\git\polyglot\target\spiral_builder\test2\test2.fsproj]               │
00:01:22 v #550 > > │ 00:00:05 v #16 runtime.execute_with_options / result / { exit_code =   │
00:01:22 v #551 > > │ 1; std_trace_length = 707 }                                                  │
00:01:22 v #552 > > │ 00:00:05 c #17 build_code / { code = 1 + a |> ignore; fsproj_text =    │
00:01:22 v #553 > > │ <Project Sdk="Microsoft.NET.Sdk">                                            │
00:01:22 v #554 > > │ <PropertyGroup>                                                              │
00:01:22 v #555 > > │     <TargetFramework>net9.0</TargetFramework>                                │
00:01:22 v #556 > > │     <LangVersion>preview</LangVersion>                                       │
00:01:22 v #557 > > │     <RollForward>Major</RollForward>                                         │
00:01:22 v #558 > > │     <TargetLatestRuntimePatch>true</TargetLatestRuntimePatch>                │
00:01:22 v #559 > > │     <PublishAot>false</PublishAot>                                           │
00:01:22 v #560 > > │     <PublishTrimmed>false</PublishTrimmed>                                   │
00:01:22 v #561 > > │     <PublishSingleFile>true</PublishSingleFile>                              │
00:01:22 v #562 > > │     <SelfContained>true</SelfContained>                                      │
00:01:22 v #563 > > │     <Version>0.0.1-alpha.1</Version>                                         │
00:01:22 v #564 > > │     <OutputType>Exe</OutputType>                                             │
00:01:22 v #565 > > │ </PropertyGroup>                                                             │
00:01:22 v #566 > > │ <PropertyGroup Condition="$([MSBuild]::IsOSPlatform('FreeBSD'))">            │
00:01:22 v #567 > > │     <DefineConstants>_FREEBSD</DefineConstants>                              │
00:01:22 v #568 > > │ </PropertyGroup>                                                             │
00:01:22 v #569 > > │ <PropertyGroup Condition="$([MSBuild]::IsOSPlatform('Linux'))">              │
00:01:22 v #570 > > │     <DefineConstants>_LINUX</DefineConstants>                                │
00:01:22 v #571 > > │ </PropertyGroup>                                                             │
00:01:22 v #572 > > │ <PropertyGroup Condition="$([MSBuild]::IsOSPlatform('OSX'))">                │
00:01:22 v #573 > > │     <DefineConstants>_OSX</DefineConstants>                                  │
00:01:22 v #574 > > │ </PropertyGroup>                                                             │
00:01:22 v #575 > > │ <PropertyGroup Condition="$([MSBuild]::IsOSPlatform('Windows'))">            │
00:01:22 v #576 > > │     <DefineConstants>_WINDOWS</DefineConstants>                              │
00:01:22 v #577 > > │ </PropertyGroup>                                                             │
00:01:22 v #578 > > │ <ItemGroup>                                                                  │
00:01:22 v #579 > > │                                                                              │
00:01:22 v #580 > > │     <Compile                                                                 │
00:01:22 v #581 > > │ Include="c:/home/git/polyglot/target/spiral_builder/test2/test2.fs" />       │
00:01:22 v #582 > > │ </ItemGroup>                                                                 │
00:01:22 v #583 > > │ <ItemGroup>                                                                  │
00:01:22 v #584 > > │                                                                              │
00:01:22 v #585 > > │ </ItemGroup>                                                                 │
00:01:22 v #586 > > │ </Project> }                                                                 │
00:01:22 v #587 > > │ __assert_eq / actual: 2 / expected: 2                                        │
00:01:22 v #588 > > │                                                                              │
00:01:22 v #589 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:22 v #590 > >
00:01:22 v #591 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:22 v #592 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:22 v #593 > > │ ### read_file                                                                │
00:01:22 v #594 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:22 v #595 > >
00:01:22 v #596 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:22 v #597 > > inl read_file path =
00:01:22 v #598 > >     inl code =
00:01:22 v #599 > >         path
00:01:22 v #600 > >         |> file_system.read_all_text
00:01:22 v #601 > >         |> sm'.replace_regex $'@@"(?P<a> *)(?P<b>let\\s+main\\s+.*?\\s*=)"'
00:01:22 v #602 > > "$a[[<EntryPoint>]]\n$a$b"
00:01:22 v #603 > >     inl code_trim = code |> sm'.trim_end [[]]
00:01:22 v #604 > >     if code_trim |> sm'.ends_with "\\n()"
00:01:22 v #605 > >     then code_trim |> sm'.slice 0i64 ((code_trim |> sm'.length) - 3)
00:01:22 v #606 > >     else code
00:01:22 v #607 > >
00:01:22 v #608 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:22 v #609 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:22 v #610 > > │ ### persist_file                                                             │
00:01:22 v #611 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:22 v #612 > >
00:01:22 v #613 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:22 v #614 > > inl persist_file { workspace_root package_dir packages modules path } =
00:01:22 v #615 > >     inl full_path = path |> file_system.get_full_path
00:01:22 v #616 > >     inl name = full_path |> file_system.get_file_name_without_extension
00:01:22 v #617 > >     inl code = full_path |> read_file
00:01:22 v #618 > >     persist_code_project { workspace_root package_dir packages modules name code
00:01:22 v #619 > > }
00:01:23 v #620 > >
00:01:23 v #621 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:23 v #622 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:23 v #623 > > │ ### build_file                                                               │
00:01:23 v #624 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:23 v #625 > >
00:01:23 v #626 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:23 v #627 > > inl build_file { workspace_root runtime packages modules path } =
00:01:23 v #628 > >     inl full_path = path |> file_system.get_full_path
00:01:23 v #629 > >     inl dir = full_path |> file_system.directory_get_parent |>
00:01:23 v #630 > > optionm'.default_value' ""
00:01:23 v #631 > >     build_code {
00:01:23 v #632 > >         workspace_root
00:01:23 v #633 > >         runtime
00:01:23 v #634 > >         packages
00:01:23 v #635 > >         modules
00:01:23 v #636 > >         output_dir = dir </> "dist" |> Some
00:01:23 v #637 > >         name = full_path |> file_system.get_file_name_without_extension
00:01:23 v #638 > >         code = full_path |> read_file
00:01:23 v #639 > >     }
00:01:23 v #640 > >
00:01:23 v #641 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:23 v #642 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:23 v #643 > > │ ## rust                                                                      │
00:01:23 v #644 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:23 v #645 > >
00:01:23 v #646 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:23 v #647 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:23 v #648 > > │ ### get_workspace_cargo_toml_content                                         │
00:01:23 v #649 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:23 v #650 > >
00:01:23 v #651 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:23 v #652 > > inl get_workspace_cargo_toml_content { workspace_root } : string =
00:01:23 v #653 > >     inl workspace_root = workspace_root |> file_system.normalize_path
00:01:23 v #654 > >     $'$"cargo-features = [[\\\"profile-rustflags\\\"]]"'
00:01:23 v #655 > >     +#. $'$""'
00:01:23 v #656 > >     +#. $'$"[[workspace]]"'
00:01:23 v #657 > >     +#. $'$"resolver = \\\"2\\\""'
00:01:23 v #658 > >     +#. $'$"members = [[\\\"packages/Rust/*\\\"]]"'
00:01:23 v #659 > >     +#. $'$""'
00:01:23 v #660 > >     +#. $'$"[[workspace.dependencies.fable_library_rust]]"'
00:01:23 v #661 > >     +#. $'$"path =
00:01:23 v #662 > > \\\"{!workspace_root}/lib/rust/fable/fable_modules/fable-library-rust\\\""'
00:01:23 v #663 > >     +#. $'$"default-features = false"'
00:01:23 v #664 > >     +#. $'$"features = [[]]"'
00:01:23 v #665 > >     +#. $'$""'
00:01:23 v #666 > >     +#. $'$"[[workspace.dependencies]]"'
00:01:23 v #667 > >     +#. $'$"inline_colorization = \\\"~0.1\\\""'
00:01:23 v #668 > >     +#. $'$""'
00:01:23 v #669 > >     +#. $'$"[[profile.release]]"'
00:01:23 v #670 > >     +#. $'$"codegen-units = 1"'
00:01:23 v #671 > >     +#. $'$"opt-level = \\\"z\\\""'
00:01:23 v #672 > >     +#. $'$"lto = true"'
00:01:23 v #673 > >     +#. $'$"debug = false"'
00:01:23 v #674 > >     +#. $'$"panic = \\\"abort\\\""'
00:01:23 v #675 > >     +#. $'$"overflow-checks = true"'
00:01:23 v #676 > >     +#. $'$"rustflags = [[\\\"-C\\\", \\\"link-arg=-s\\\"]]"'
00:01:24 v #677 > >
00:01:24 v #678 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:24 v #679 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:24 v #680 > > │ ### get_cargo_toml_content                                                   │
00:01:24 v #681 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:24 v #682 > >
00:01:24 v #683 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:24 v #684 > > inl get_cargo_toml_content { hash_hex runtime deps static_do_bindings } : string
00:01:24 v #685 > > =
00:01:24 v #686 > >     $'$"[[package]]"'
00:01:24 v #687 > >     +#. $'$"name = \\\"spiral_builder_{!hash_hex}\\\""'
00:01:24 v #688 > >     +#. $'$"version = \\\"0.0.1\\\""'
00:01:24 v #689 > >     +#. $'$"edition = \\\"2021\\\""'
00:01:24 v #690 > >     +#. $'$""'
00:01:24 v #691 > >     +#. $'$"[[dependencies]]"'
00:01:24 v #692 > >     +#. (
00:01:24 v #693 > >         if runtime <>. None
00:01:24 v #694 > >         then $'$"fable_library_rust = {{ workspace = true }}"'
00:01:24 v #695 > >         else
00:01:24 v #696 > >             $'$"fable_library_rust = {{"'
00:01:24 v #697 > >             +. $'$" workspace = true,"'
00:01:24 v #698 > >             +. $'$" features = [["'
00:01:24 v #699 > >             +. (
00:01:24 v #700 > >                 if static_do_bindings
00:01:24 v #701 > >                 then $'$"\\\"static_do_bindings\\\", \\\"datetime\\\",
00:01:24 v #702 > > \\\"guid\\\", \\\"threaded\\\""'
00:01:24 v #703 > >                 else $'$"\\\"datetime\\\", \\\"guid\\\", \\\"threaded\\\""'
00:01:24 v #704 > >             )
00:01:24 v #705 > >             +. $'$"]]"'
00:01:24 v #706 > >             +. $'$"}}"'
00:01:24 v #707 > >     )
00:01:24 v #708 > >     +#. $'$"inline_colorization = {{ workspace = true }}"'
00:01:24 v #709 > >     +#. $'$"{!deps}"'
00:01:24 v #710 > >     +#. $'$""'
00:01:24 v #711 > >     +#. (
00:01:24 v #712 > >         if runtime = None then
00:01:24 v #713 > >             $'$"[[[[bin]]]]"'
00:01:24 v #714 > >             +#. $'$"name = \\\"spiral_builder_{!hash_hex}\\\""'
00:01:24 v #715 > >         else
00:01:24 v #716 > >             $'$"[[lib]]"'
00:01:24 v #717 > >             +#. $'$"crate-type = [[\\\"cdylib\\\"]]"'
00:01:24 v #718 > >     )
00:01:24 v #719 > >     +#. $'$"path = \\\"spiral_builder.rs\\\""'
00:01:24 v #720 > >
00:01:24 v #721 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:24 v #722 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:24 v #723 > > │ ### get_empty_cargo_toml_content                                             │
00:01:24 v #724 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:24 v #725 > >
00:01:24 v #726 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:24 v #727 > > inl get_empty_cargo_toml_content () =
00:01:24 v #728 > >     inl guid = date_time.now () |> date_time.new_guid_from_date_time |>
00:01:24 v #729 > > sm'.obj_to_string
00:01:24 v #730 > >     $'$"[[package]]"'
00:01:24 v #731 > >     +#. $'$"name = \\\"spiral_builder_{!guid}\\\""'
00:01:24 v #732 > >     +#. $'$"version = \\\"0.0.1\\\""'
00:01:24 v #733 > >     +#. $'$"edition = \\\"2021\\\""'
00:01:24 v #734 > >     +#. $'$""'
00:01:24 v #735 > >     +#. $'$"[[[[bin]]]]"'
00:01:24 v #736 > >     +#. $'$"name = \\\"spiral_builder_{!guid}\\\""'
00:01:24 v #737 > >     +#. $'$"path = \\\"spiral_builder.rs\\\""'
00:01:24 v #738 > >
00:01:24 v #739 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:24 v #740 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:24 v #741 > > │ ### process_rust                                                             │
00:01:24 v #742 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:24 v #743 > >
00:01:24 v #744 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:24 v #745 > > inl process_rust { fs_path deps trace_level runtime cleanup } =
00:01:24 v #746 > >     open runtime
00:01:24 v #747 > >
00:01:24 v #748 > >     inl extension = "rs"
00:01:24 v #749 > >     inl code = fs_path |> file_system.read_all_text
00:01:24 v #750 > >
00:01:24 v #751 > >     inl hash_hex = { extension code runtime } |> sm'.format |> crypto.hash_text
00:01:24 v #752 > >
00:01:24 v #753 > >     inl workspace_name = "spiral_builder"
00:01:24 v #754 > >
00:01:24 v #755 > >     inl workspace_root_external = file_system.get_workspace_root_external ()
00:01:24 v #756 > >     inl workspace_root = workspace_root_external |> resultm.box |>
00:01:24 v #757 > > resultm.unwrap_or_else id
00:01:24 v #758 > >
00:01:24 v #759 > >     inl package_dir =
00:01:24 v #760 > >         get_package_dir { workspace_root name = workspace_name; target = Some
00:01:24 v #761 > > Rust; hash = Some hash_hex }
00:01:24 v #762 > >
00:01:24 v #763 > >     inl fsproj_path =
00:01:24 v #764 > >         persist_code_project {
00:01:24 v #765 > >             workspace_root
00:01:24 v #766 > >             package_dir
00:01:24 v #767 > >             packages = [[ "Fable.Core" ]]
00:01:24 v #768 > >             modules = [[]]
00:01:24 v #769 > >             name = workspace_name
00:01:24 v #770 > >             code
00:01:24 v #771 > >         }
00:01:24 v #772 > >
00:01:24 v #773 > >     inl workspace_dir = package_dir </> "../../.."
00:01:24 v #774 > >     inl workspace_cargo_toml_path = workspace_dir </> "Cargo.toml"
00:01:24 v #775 > >
00:01:24 v #776 > >     if workspace_cargo_toml_path |> file_system.file_exists |> not
00:01:24 v #777 > >     then get_empty_cargo_toml_content () |> file_system.write_all_text
00:01:24 v #778 > > workspace_cargo_toml_path
00:01:24 v #779 > >
00:01:24 v #780 > >     inl cargo_toml_path = package_dir </> "Cargo.toml"
00:01:24 v #781 > >
00:01:24 v #782 > >     if cargo_toml_path |> file_system.file_exists |> not
00:01:24 v #783 > >     then get_empty_cargo_toml_content () |> file_system.write_all_text
00:01:24 v #784 > > cargo_toml_path
00:01:24 v #785 > >
00:01:24 v #786 > >     inl lib_link_target_path = workspace_root </>
00:01:24 v #787 > > "lib/rust/fable/fable_modules/fable-library-rust"
00:01:24 v #788 > >     inl lib_link_path = package_dir </> "fable_modules/fable-library-rust"
00:01:24 v #789 > >
00:01:24 v #790 > >     lib_link_path |> file_system.link_directory lib_link_target_path
00:01:24 v #791 > >
00:01:24 v #792 > >     inl exit_code, dotnet_fable_result =
00:01:24 v #793 > >         execute_dotnet_fable { workspace_root_external fsproj_path extension
00:01:24 v #794 > > package_dir runtime }
00:01:24 v #795 > >
00:01:24 v #796 > >     inl result' = {
00:01:24 v #797 > >         extension = Some extension
00:01:24 v #798 > >         code = None
00:01:24 v #799 > >         code_path = None
00:01:24 v #800 > >         output = None
00:01:24 v #801 > >     }
00:01:24 v #802 > >
00:01:24 v #803 > >     if exit_code <>. 0 then
00:01:24 v #804 > >         trace Critical
00:01:24 v #805 > >             fun () => "spiral_builder.process_rust / dotnet fable error"
00:01:24 v #806 > >             fun () => { exit_code dotnet_fable_result }
00:01:24 v #807 > >         { result' with
00:01:24 v #808 > >             output = Some dotnet_fable_result
00:01:24 v #809 > >         }
00:01:24 v #810 > >     else
00:01:24 v #811 > >         inl deps =
00:01:24 v #812 > >             inl deps =
00:01:24 v #813 > >                 if runtime = None
00:01:24 v #814 > >                 then deps
00:01:24 v #815 > >                 else
00:01:24 v #816 > >                     // TODO: simplify
00:01:24 v #817 > >                     inl has_near_sdk =
00:01:24 v #818 > >                         deps
00:01:24 v #819 > >                         |> am'.vec_filter (sm'.from_std_string >> sm'.contains
00:01:24 v #820 > > "near-sdk")
00:01:24 v #821 > >                         |> am'.vec_len
00:01:24 v #822 > >                         |> i32
00:01:24 v #823 > >                         |> fun n => n > 0
00:01:24 v #824 > >                     // TODO: simplify with ++
00:01:24 v #825 > >                     if has_near_sdk
00:01:24 v #826 > >                     then deps
00:01:24 v #827 > >                     else deps |> am'.vec_extend (;[[ "near-sdk" |>
00:01:24 v #828 > > sm'.to_std_string ]] |> am'.to_vec)
00:01:24 v #829 > >             deps
00:01:24 v #830 > >             |> am'.vec_map fun dep =>
00:01:24 v #831 > >                 inl dep = dep |> sm'.from_std_string
00:01:24 v #832 > >                 if dep |> sm'.contains "="
00:01:24 v #833 > >                 then dep
00:01:24 v #834 > >                 elif dep |> sm'.ends_with "]]"
00:01:24 v #835 > >                 then dep |> sm'.replace "[[" $'$"={{version=\'*\',features=[["'
00:01:24 v #836 > > |> fun x => $'$"{!x}}}"'
00:01:24 v #837 > >                 else $'$"{!dep}=\'*\'"'
00:01:24 v #838 > >             |> am'.from_vec
00:01:24 v #839 > >             |> fun x => x : _ i32 _
00:01:24 v #840 > >             |> seq.of_array'
00:01:24 v #841 > >             |> sm'.concat "\n"
00:01:24 v #842 > >
00:01:24 v #843 > >         inl new_code_path = package_dir </> $'$"{!workspace_name}.{!extension}"'
00:01:24 v #844 > >         inl new_code = new_code_path |> file_system.read_all_text
00:01:24 v #845 > >
00:01:24 v #846 > >         inl on_startup_text = "on_startup!" +. (join "(")
00:01:24 v #847 > >         inl method0_fn_text = " method0" +. (join "(")
00:01:24 v #848 > >         inl static_do_bindings =
00:01:24 v #849 > >             (new_code |> sm'.contains on_startup_text)
00:01:24 v #850 > >             && (new_code |> sm'.contains method0_fn_text |> not)
00:01:24 v #851 > >         inl cargo_toml_content =
00:01:24 v #852 > >             get_cargo_toml_content { hash_hex runtime deps static_do_bindings }
00:01:24 v #853 > >         inl workspace_cargo_toml_content = get_workspace_cargo_toml_content {
00:01:24 v #854 > > workspace_root }
00:01:24 v #855 > >
00:01:24 v #856 > >         cargo_toml_content |> file_system.write_all_text_exists cargo_toml_path
00:01:24 v #857 > >         workspace_cargo_toml_content |> file_system.write_all_text_exists
00:01:24 v #858 > > workspace_cargo_toml_path
00:01:24 v #859 > >
00:01:24 v #860 > >         inl range_rs_path = lib_link_path </> "src/Range.rs"
00:01:24 v #861 > >         if range_rs_path |> file_system.file_exists then
00:01:24 v #862 > >             inl text = range_rs_path |> file_system.read_all_text
00:01:24 v #863 > >             text
00:01:24 v #864 > >             |> sm'.replace "use crate::String_::fromCharCode;" "use
00:01:24 v #865 > > crate::String_::fromChar;"
00:01:24 v #866 > >             |> sm'.replace "fromCharCode(c)" "std::char::from_u32(c).unwrap()"
00:01:24 v #867 > >             |> file_system.write_all_text_exists range_rs_path
00:01:24 v #868 > >
00:01:24 v #869 > >         inl exit_code, cargo_fmt_result =
00:01:24 v #870 > >             fun () =>
00:01:24 v #871 > >                 inl exit_code, result =
00:01:24 v #872 > >                     execution_options fun x => { x with
00:01:24 v #873 > >                         command = $'$"cargo fmt --manifest-path
00:01:24 v #874 > > \\\"{!cargo_toml_path}\\\" --"'
00:01:24 v #875 > >                         working_directory = workspace_root_external |>
00:01:24 v #876 > > resultm.box |> resultm.ok'
00:01:24 v #877 > >                     }
00:01:24 v #878 > >                     |> execute_with_options
00:01:24 v #879 > >
00:01:24 v #880 > >                 inl return () =
00:01:24 v #881 > >                     if exit_code = 0
00:01:24 v #882 > >                     then Ok (exit_code, result)
00:01:24 v #883 > >                     else Error (exit_code, result)
00:01:24 v #884 > >
00:01:24 v #885 > >                 if result |> sm'.contains "failed to load manifest for workspace
00:01:24 v #886 > > member" |> not
00:01:24 v #887 > >                 then return ()
00:01:24 v #888 > >                 else
00:01:24 v #889 > >                     inl missing_toml_path =
00:01:24 v #890 > >                         "failed to read `(?<a>.*?Cargo.toml)`"
00:01:24 v #891 > >                         |> sm'.new_regex
00:01:24 v #892 > >                         |> resultm.unwrap'
00:01:24 v #893 > >                         |> sm'.regex_captures result
00:01:24 v #894 > >                         |> am'.from_vec
00:01:24 v #895 > >                         |> fun x => x : _ i32 _
00:01:24 v #896 > >                         |> am'.try_item 0
00:01:24 v #897 > >                         |> optionm.map (mapm.get "a" >> optionm'.unbox)
00:01:24 v #898 > >                         |> optionm'.flatten
00:01:24 v #899 > >
00:01:24 v #900 > >                     match missing_toml_path with
00:01:24 v #901 > >                     | None => Error (exit_code, result)
00:01:24 v #902 > >                     | Some missing_toml_path =>
00:01:24 v #903 > >                         if missing_toml_path |> file_system.file_exists |> not
00:01:24 v #904 > > then
00:01:24 v #905 > >                             missing_toml_path
00:01:24 v #906 > >                             |> file_system.directory_get_parent
00:01:24 v #907 > >                             |> optionm'.default_value' ""
00:01:24 v #908 > >                             |> file_system.create_dir
00:01:24 v #909 > >                             |> ignore
00:01:24 v #910 > >
00:01:24 v #911 > >                             get_empty_cargo_toml_content ()
00:01:24 v #912 > >                             |> file_system.write_all_text missing_toml_path
00:01:24 v #913 > >                         return ()
00:01:24 v #914 > >             |> retry_fn' 3u8
00:01:24 v #915 > >
00:01:24 v #916 > >         if exit_code <>. 0 then
00:01:24 v #917 > >             trace Critical
00:01:24 v #918 > >                 fun () => "spiral_builder.process_rust / cargo fmt error"
00:01:24 v #919 > >                 fun () => { exit_code cargo_fmt_result }
00:01:24 v #920 > >
00:01:24 v #921 > >         inl new_code = new_code_path |> file_system.read_all_text
00:01:24 v #922 > >
00:01:24 v #923 > >         inl main_code_header =
00:01:24 v #924 > >             "pub fn main() -> Result<(), String> " +. (join "{")
00:01:24 v #925 > >
00:01:24 v #926 > >         inl main_code : string =
00:01:24 v #927 > >             if runtime = None
00:01:24 v #928 > >             then ""
00:01:24 v #929 > >             else
00:01:24 v #930 > >                 $'$"#[[near_sdk::near_bindgen]]"'
00:01:24 v #931 > >                 +#. $'$"#[[derive(near_sdk::PanicOnDefault)]]"'
00:01:24 v #932 > >                 +#. $'$"pub struct MainState {{"'
00:01:24 v #933 > >                 +#. $'$"}}"'
00:01:24 v #934 > >                 +#. $'$""'
00:01:24 v #935 > >                 +#. $'$"#[[near_sdk::near_bindgen]]"'
00:01:24 v #936 > >                 +#. $'$"impl MainState {{"'
00:01:24 v #937 > >                 +#. $'$"    pub fn state_main() {{"'
00:01:24 v #938 > >                 +#. $'$"        Spiral_builder::method0();"'
00:01:24 v #939 > >                 +#. $'$"    }}"'
00:01:24 v #940 > >                 +#. $'$"}}"'
00:01:24 v #941 > >             +#. (
00:01:24 v #942 > >                 if runtime = None && (new_code |> sm'.contains (on_startup_text
00:01:24 v #943 > > +. "Spiral_builder::method0()"))
00:01:24 v #944 > >                 then $'$"{!main_code_header} Ok(Spiral_builder::method0()) }}"'
00:01:24 v #945 > >                 else $'$"{!main_code_header} Ok(()) }}"'
00:01:24 v #946 > >             )
00:01:24 v #947 > >
00:01:24 v #948 > >         inl cached = new_code |> sm'.contains main_code_header
00:01:24 v #949 > >
00:01:24 v #950 > >         inl new_code' = $'$"{!new_code}\\n\\n{!main_code}\\n"'
00:01:24 v #951 > >         inl new_code =
00:01:24 v #952 > >             if cached
00:01:24 v #953 > >             then new_code
00:01:24 v #954 > >             else
00:01:24 v #955 > >                 inl runtime_contract =
00:01:24 v #956 > >                     match runtime with
00:01:24 v #957 > >                     | Some (Contract _) => true
00:01:24 v #958 > >                     | _ => false
00:01:24 v #959 > >
00:01:24 v #960 > >                 new_code'
00:01:24 v #961 > >                 |> sm'.replace
00:01:24 v #962 > >                     ("),)" +. !\($'"\\\";\\\".into()"'))
00:01:24 v #963 > >                     "));"
00:01:24 v #964 > >                 |> sm'.replace
00:01:24 v #965 > >                     ("},)" +. !\($'"\\\";\\\".into()"'))
00:01:24 v #966 > >                     "});"
00:01:24 v #967 > >                 |> sm'.replace_regex
00:01:24 v #968 > >                     "\\s\\sdefaultOf\\(\\);"
00:01:24 v #969 > >                     " defaultOf::<()>();"
00:01:24 v #970 > >                 |> sm'.replace
00:01:24 v #971 > >                     "::Slice'_"
00:01:24 v #972 > >                     "::Slice__"
00:01:24 v #973 > >                 |> sm'.replace
00:01:24 v #974 > >                     " Slice'_"
00:01:24 v #975 > >                     " Slice__"
00:01:24 v #976 > >                 |> sm'.replace
00:01:24 v #977 > >                     ("defaultOf()" +. !\($'"\\\",\\\".into()"'))
00:01:24 v #978 > >                     "defaultOf::<std::sync::Arc<dyn IDisposable>>(),"
00:01:24 v #979 > >                 |> sm'.replace
00:01:24 v #980 > >                     ("_self" +. !\($'"\\\"_.\\\".into()"'))
00:01:24 v #981 > >                     "self."
00:01:24 v #982 > >                 |> sm'.replace
00:01:24 v #983 > >                     ("get_or_insert_wit" +. !\($'"\\\"h\\\".into()"'))
00:01:24 v #984 > >                     "get_or_init"
00:01:24 v #985 > >                 |> sm'.replace
00:01:24 v #986 > >                     ("use
00:01:24 v #987 > > fable_library_rust::System::Collections::Concurrent::ConcurrentStack_1" +.
00:01:24 v #988 > > !\($'"\\\";\\\".into()"'))
00:01:24 v #989 > >                     "type ConcurrentStack_1<T> = T;"
00:01:24 v #990 > >                 |> sm'.replace
00:01:24 v #991 > >                     ("use fable_library_rust::System::Collections::Generic" +.
00:01:24 v #992 > > !\($'"\\\"::\\\".into()"'))
00:01:24 v #993 > >                     "use
00:01:24 v #994 > > fable_library_rust::Interfaces_::System::Collections::Generic::"
00:01:24 v #995 > >                 |> sm'.replace
00:01:24 v #996 > >                     ("use fable_library_rust::System::IDisposable" +.
00:01:24 v #997 > > !\($'"\\\";\\\".into()"'))
00:01:24 v #998 > >                     "use fable_library_rust::Interfaces_::System::IDisposable;"
00:01:24 v #999 > >                 |> sm'.replace
00:01:24 v #1000 > >                     ("use
00:01:24 v #1001 > > fable_library_rust::System::Threading::CancellationToken" +.
00:01:24 v #1002 > > !\($'"\\\";\\\".into()"'))
00:01:24 v #1003 > >                     "type CancellationToken = ();"
00:01:24 v #1004 > >                 |> sm'.replace
00:01:24 v #1005 > >                     ("use fable_library_rust::System::TimeZoneInfo" +.
00:01:24 v #1006 > > !\($'"\\\";\\\".into()"'))
00:01:24 v #1007 > >                     "type TimeZoneInfo = i64;"
00:01:24 v #1008 > >                 |> sm'.replace
00:01:24 v #1009 > >                     ("use
00:01:24 v #1010 > > fable_library_rust::System::Threading::Tasks::TaskCanceledException" +.
00:01:24 v #1011 > > !\($'"\\\";\\\".into()"'))
00:01:24 v #1012 > >                     "type TaskCanceledException = ();"
00:01:24 v #1013 > >                 |> if static_do_bindings
00:01:24 v #1014 > >                     then id
00:01:24 v #1015 > >                     else sm'.replace
00:01:24 v #1016 > >                             on_startup_text
00:01:24 v #1017 > >                             ("// " +. on_startup_text)
00:01:24 v #1018 > >                 |> if runtime_contract |> not
00:01:24 v #1019 > >                     then id
00:01:24 v #1020 > >                     else sm'.replace
00:01:24 v #1021 > >                             ("use fable_library_rust::DateTime_::DateTime" +.
00:01:24 v #1022 > > ";")
00:01:24 v #1023 > >                             "type DateTime = ();"
00:01:24 v #1024 > >
00:01:24 v #1025 > >         if not cached then
00:01:24 v #1026 > >             new_code
00:01:24 v #1027 > >             |> file_system.write_all_text_exists new_code_path
00:01:24 v #1028 > >
00:01:24 v #1029 > >         inl command =
00:01:24 v #1030 > >             if runtime <> None
00:01:24 v #1031 > >             then $'$"cargo +nightly-2024-07-14 build --release --target
00:01:24 v #1032 > > wasm32-unknown-unknown --manifest-path \\\"{!cargo_toml_path}\\\""'
00:01:24 v #1033 > >             else $'$"cargo run --manifest-path \\\"{!cargo_toml_path}\\\""'
00:01:24 v #1034 > >         inl environment_variables =
00:01:24 v #1035 > >             if runtime <> None
00:01:24 v #1036 > >             then ;[[]]
00:01:24 v #1037 > >             else
00:01:24 v #1038 > >                 inl fast = false
00:01:24 v #1039 > >                 ;[[
00:01:24 v #1040 > >                     "TRACE_LEVEL", "Verbose"
00:01:24 v #1041 > >                     "RUSTC_WRAPPER", "sccache"
00:01:24 v #1042 > >                     "RUST_BACKTRACE", "full"
00:01:24 v #1043 > >                     "RUSTFLAGS",
00:01:24 v #1044 > >                     if fast
00:01:24 v #1045 > >                     then "-C prefer-dynamic -C strip=symbols -C link-arg=-s -C
00:01:24 v #1046 > > debuginfo=0"
00:01:24 v #1047 > >                     else "-C prefer-dynamic"
00:01:24 v #1048 > >                 ]]
00:01:24 v #1049 > >         inl exit_code, cargo_result =
00:01:24 v #1050 > >             execution_options fun x => { x with
00:01:24 v #1051 > >                 command
00:01:24 v #1052 > >                 environment_variables
00:01:24 v #1053 > >                 working_directory = workspace_root_external |> resultm.box |>
00:01:24 v #1054 > > resultm.ok'
00:01:24 v #1055 > >             }
00:01:24 v #1056 > >             |> execute_with_options
00:01:24 v #1057 > >
00:01:24 v #1058 > >         inl result =
00:01:24 v #1059 > >             if runtime = None then
00:01:24 v #1060 > >                 inl external_command =
00:01:24 v #1061 > >                     inl vars =
00:01:24 v #1062 > >                         a environment_variables
00:01:24 v #1063 > >                         |> am.map fun k, v => $'$"$env:{!k}=\'\'{!v}\'\'"' :
00:01:24 v #1064 > > string
00:01:24 v #1065 > >                         |> fun x => x : _ i32 _
00:01:24 v #1066 > >                         |> seq.of_array
00:01:24 v #1067 > >                         |> sm'.concat ";"
00:01:24 v #1068 > >                     inl command =
00:01:24 v #1069 > >                         a ;[[
00:01:24 v #1070 > >                             vars
00:01:24 v #1071 > >                             command
00:01:24 v #1072 > >                         ]]
00:01:24 v #1073 > >                         |> fun x => x : _ i32 _
00:01:24 v #1074 > >                         |> seq.of_array
00:01:24 v #1075 > >                         |> sm'.concat ";"
00:01:24 v #1076 > >                     $'$"pwsh -c \'{!command}\'"' : string
00:01:24 v #1077 > >                 if exit_code <>. 0 then
00:01:24 v #1078 > >                     trace Critical
00:01:24 v #1079 > >                         fun () => "spiral_builder.process_rust / error"
00:01:24 v #1080 > >                         fun () => { exit_code new_code_path external_command
00:01:24 v #1081 > > cleanup cargo_result }
00:01:24 v #1082 > >                     result'
00:01:24 v #1083 > >                 else
00:01:24 v #1084 > >                     inl output =
00:01:24 v #1085 > >                         try
00:01:24 v #1086 > >                             fun () =>
00:01:24 v #1087 > >                                 cargo_result
00:01:24 v #1088 > >                                 |> sm'.split "\n"
00:01:24 v #1089 > >                                 |> fun x => a x : _ i32 _
00:01:24 v #1090 > >                                 |> am'.skip_while fun line =>
00:01:24 v #1091 > >                                     (line |> sm'.contains "profile [[optimized]]
00:01:24 v #1092 > > target" |> not)
00:01:24 v #1093 > >                                         && (line |> sm'.contains "profile
00:01:24 v #1094 > > [[unoptimized]] target" |> not)
00:01:24 v #1095 > >                                         && (line |> sm'.contains "profile
00:01:24 v #1096 > > [[unoptimized + debuginfo]] target" |> not)
00:01:24 v #1097 > >                                 |> am'.skip 2
00:01:24 v #1098 > >                                 |> seq.of_array
00:01:24 v #1099 > >                                 |> sm'.concat "\n"
00:01:24 v #1100 > >                             fun ex =>
00:01:24 v #1101 > >                                 trace Critical
00:01:24 v #1102 > >                                     fun () => "spiral_builder.process_rust
00:01:24 v #1103 > > Exception"
00:01:24 v #1104 > >                                     fun () => { ex new_code_path
00:01:24 v #1105 > > external_command cargo_result }
00:01:24 v #1106 > >                                 None
00:01:24 v #1107 > >                         |> optionm'.box
00:01:24 v #1108 > >                         |> optionm'.unwrap
00:01:24 v #1109 > >                     { result' with
00:01:24 v #1110 > >                         code = Some new_code
00:01:24 v #1111 > >                         code_path = Some new_code_path
00:01:24 v #1112 > >                         output = Some output
00:01:24 v #1113 > >                     }
00:01:24 v #1114 > >             else
00:01:24 v #1115 > >                 inl wasm_path : string =
00:01:24 v #1116 > >
00:01:24 v #1117 > > $'$"target/spiral_builder/{!workspace_name}/target/wasm32-unknown-unknown/releas
00:01:24 v #1118 > > e/spiral_builder_{!hash_hex}.wasm"'
00:01:24 v #1119 > >
00:01:24 v #1120 > >                 inl command =
00:01:24 v #1121 > >                     inl invoke_block_path = "scripts/invoke-block.ps1"
00:01:24 v #1122 > >                     inl spiral_wasm_command : string =
00:01:24 v #1123 > >                         inl runtime_cmd =
00:01:24 v #1124 > >                             match runtime with
00:01:24 v #1125 > >                             | Some (Wasm cmd) => cmd
00:01:24 v #1126 > >                             | Some (Contract cmd) => cmd
00:01:24 v #1127 > >                             | _ => ""
00:01:24 v #1128 > >                         $'$"\'workspace/target/release/spiral_wasm -w
00:01:24 v #1129 > > {!wasm_path} -t Debug {!runtime_cmd}\'"'
00:01:24 v #1130 > >                     inl automation = "AUTOMATION" |>
00:01:24 v #1131 > > env.get_environment_variable
00:01:24 v #1132 > >                     $'$"pwsh -c \\\"pwsh {!invoke_block_path}
00:01:24 v #1133 > > {!spiral_wasm_command} -Linux -EnvironmentVariables
00:01:24 v #1134 > > AUTOMATION={!automation}\`nNEAR_RPC_TIMEOUT_SECS=100\\\""'
00:01:24 v #1135 > >
00:01:24 v #1136 > >                 if exit_code = 0 then
00:01:24 v #1137 > >                     inl exit_code, spiral_wasm_result =
00:01:24 v #1138 > >                         execution_options fun x => { x with
00:01:24 v #1139 > >                             command
00:01:24 v #1140 > >                             working_directory = workspace_root |> optionm'.some'
00:01:24 v #1141 > >                         }
00:01:24 v #1142 > >                         |> execute_with_options
00:01:24 v #1143 > >
00:01:24 v #1144 > >                     if exit_code = 0 then
00:01:24 v #1145 > >                         { result' with
00:01:24 v #1146 > >                             code = Some new_code
00:01:24 v #1147 > >                             code_path = Some new_code_path
00:01:24 v #1148 > >                             output = Some spiral_wasm_result
00:01:24 v #1149 > >                         }
00:01:24 v #1150 > >                     else
00:01:24 v #1151 > >                         trace Critical
00:01:24 v #1152 > >                             fun () => "spiral_builder.process_rust / wasm error"
00:01:24 v #1153 > >                             fun () => {
00:01:24 v #1154 > >                                 exit_code new_code_path cargo_result cleanup
00:01:24 v #1155 > >                                 spiral_wasm_result =
00:01:24 v #1156 > > $'$"\\n{!spiral_wasm_result}"' : string
00:01:24 v #1157 > >                             }
00:01:24 v #1158 > >                         result'
00:01:24 v #1159 > >                 else
00:01:24 v #1160 > >                     trace Critical
00:01:24 v #1161 > >                         fun () => "spiral_builder.process_rust / cargo error"
00:01:24 v #1162 > >                         fun () => {
00:01:24 v #1163 > >                             exit_code new_code_path wasm_path command cleanup
00:01:24 v #1164 > >                             cargo_result = $'$"\\n{!cargo_result}"' : string
00:01:24 v #1165 > >                         }
00:01:24 v #1166 > >                     result'
00:01:24 v #1167 > >
00:01:24 v #1168 > >         if cleanup then
00:01:24 v #1169 > >             inl cleanup =
00:01:24 v #1170 > >                 inl build_target =
00:01:24 v #1171 > >                     if runtime <> None
00:01:24 v #1172 > >                     then "wasm32-unknown-unknown/release"
00:01:24 v #1173 > >                     else "debug"
00:01:24 v #1174 > >
00:01:24 v #1175 > >                 [[ ".d"; ".exe"; ".pdb"; ".wasm"; "" ]]
00:01:24 v #1176 > >                 |> listm.map fun ext =>
00:01:24 v #1177 > >                     workspace_dir </>
00:01:24 v #1178 > > $'$"target/{!build_target}/spiral_builder_{!hash_hex}{!ext}"'
00:01:24 v #1179 > >                 |> listm.map fun path => path, path |> file_system.file_exists
00:01:24 v #1180 > >
00:01:24 v #1181 > >             trace Verbose
00:01:24 v #1182 > >                 fun () => "spiral_builder.process_rust / cleanup"
00:01:24 v #1183 > >                 fun () => { new_code_path cleanup }
00:01:24 v #1184 > >
00:01:24 v #1185 > >             cleanup
00:01:24 v #1186 > >             |> listm'.filter snd
00:01:24 v #1187 > >             |> listm.iter (fst >> file_system.file_delete)
00:01:24 v #1188 > >
00:01:24 v #1189 > >         result
00:01:25 v #1190 > >
00:01:25 v #1191 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:25 v #1192 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:25 v #1193 > > │ ## dib                                                                       │
00:01:25 v #1194 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:25 v #1195 > >
00:01:25 v #1196 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:25 v #1197 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:25 v #1198 > > │ ### process_dib                                                              │
00:01:25 v #1199 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:25 v #1200 > >
00:01:25 v #1201 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:25 v #1202 > > inl process_dib { path retries working_directory } =
00:01:25 v #1203 > >     inl exit_code, repl_result =
00:01:25 v #1204 > >         let rec loop retry =
00:01:25 v #1205 > >             inl exit_code, repl_result =
00:01:25 v #1206 > >                 runtime.execution_options fun x => { x with
00:01:25 v #1207 > >                     command = $'$"dotnet repl --exit-after-run --run
00:01:25 v #1208 > > \\\"{!path}\\\" --output-path \\\"{!path}.ipynb\\\""'
00:01:25 v #1209 > >                     environment_variables = ;[[
00:01:25 v #1210 > >                         "TRACE_LEVEL", "Verbose"
00:01:25 v #1211 > >                         "AUTOMATION", "True"
00:01:25 v #1212 > >                     ]]
00:01:25 v #1213 > >                     trace = false
00:01:25 v #1214 > >                     working_directory = working_directory |> optionm'.box
00:01:25 v #1215 > >                 }
00:01:25 v #1216 > >                 |> runtime.execute_with_options
00:01:25 v #1217 > >
00:01:25 v #1218 > >             if exit_code = 0 || retry >= retries
00:01:25 v #1219 > >             then exit_code, repl_result
00:01:25 v #1220 > >             else
00:01:25 v #1221 > >                 trace Debug
00:01:25 v #1222 > >                     fun () => "spiral_builder.run / repl error"
00:01:25 v #1223 > >                     fun () => { exit_code repl_result retry =
00:01:25 v #1224 > > $'$"{!retry}/{!retries}"' : string }
00:01:25 v #1225 > >                 loop (retry + 1)
00:01:25 v #1226 > >         loop 1
00:01:25 v #1227 > >
00:01:25 v #1228 > >     inl exit_code, result =
00:01:25 v #1229 > >         if exit_code <>. 0
00:01:25 v #1230 > >         then exit_code, repl_result
00:01:25 v #1231 > >         else
00:01:25 v #1232 > >             inl exit_code, jupyter_result =
00:01:25 v #1233 > >                 runtime.execution_options fun x => { x with
00:01:25 v #1234 > >                     command = $'$"jupyter nbconvert \\\"{!path}.ipynb\\\" --to
00:01:25 v #1235 > > html --HTMLExporter.theme=dark"'
00:01:25 v #1236 > >                 }
00:01:25 v #1237 > >                 |> runtime.execute_with_options
00:01:25 v #1238 > >
00:01:25 v #1239 > >             trace Debug
00:01:25 v #1240 > >                 fun () => "spiral_builder.run / dib / jupyter nbconvert"
00:01:25 v #1241 > >                 fun () => { exit_code jupyter_result_length = jupyter_result |>
00:01:25 v #1242 > > sm'.length : i32 }
00:01:25 v #1243 > >
00:01:25 v #1244 > >             if exit_code <>. 0
00:01:25 v #1245 > >             then exit_code, $'$"repl_result: {!repl_result}\n\njupyter_result:
00:01:25 v #1246 > > {!jupyter_result}"'
00:01:25 v #1247 > >             else
00:01:25 v #1248 > >                 inl exit_code, pwsh_replace_html_result =
00:01:25 v #1249 > >                     inl path = path |> sm'.replace "'" "''"
00:01:25 v #1250 > >                     runtime.execution_options fun x => { x with
00:01:25 v #1251 > >                         command = $'$"pwsh -c \\\"$counter = 1; $path =
00:01:25 v #1252 > > \'{!path}.html\'; (Get-Content $path -Raw) -replace
00:01:25 v #1253 > > \'(id=\\\\\\"cell-id=)[[a-fA-F0-9]]{{8}}\', {{ $_.Groups[[1]].Value + $counter++
00:01:25 v #1254 > > }} | Set-Content $path\\\""'
00:01:25 v #1255 > >                     }
00:01:25 v #1256 > >                     |> runtime.execute_with_options
00:01:25 v #1257 > >
00:01:25 v #1258 > >                 trace Debug
00:01:25 v #1259 > >                     fun () => "spiral_builder.run / dib / html cell ids"
00:01:25 v #1260 > >                     fun () => { exit_code pwsh_replace_html_result_length =
00:01:25 v #1261 > > pwsh_replace_html_result |> sm'.length : i32 }
00:01:25 v #1262 > >
00:01:25 v #1263 > >                 $'$"{!path}.html"'
00:01:25 v #1264 > >                 |> file_system.read_all_text
00:01:25 v #1265 > >                 |> sm'.replace "\r\n" "\n"
00:01:25 v #1266 > >                 |> file_system.write_all_text $'$"{!path}.html"'
00:01:25 v #1267 > >
00:01:25 v #1268 > >                 $'$"{!path}.ipynb"'
00:01:25 v #1269 > >                 |> file_system.read_all_text
00:01:25 v #1270 > >                 |> sm'.replace "\r\n" "\n"
00:01:25 v #1271 > >                 |> sm'.replace "\\r\\n" "\\n"
00:01:25 v #1272 > >                 |> file_system.write_all_text $'$"{!path}.ipynb"'
00:01:25 v #1273 > >
00:01:25 v #1274 > >                 exit_code, $'$"repl_result: {!repl_result}\n\njupyter_result:
00:01:25 v #1275 > > {!jupyter_result}\n\npwsh_replace_html_result: {!pwsh_replace_html_result}"'
00:01:25 v #1276 > >
00:01:25 v #1277 > >     trace Debug
00:01:25 v #1278 > >         fun () => "spiral_builder.run / dib"
00:01:25 v #1279 > >         fun () => { exit_code result_length = result |> sm'.length : i32 }
00:01:25 v #1280 > >
00:01:25 v #1281 > >     if exit_code <>. 0
00:01:25 v #1282 > >     then failwith $'$"spiral_builder.run / dib / exit_code: {!exit_code}
00:01:25 v #1283 > > result: {!result}"'
00:01:25 v #1284 > >     ;[[
00:01:25 v #1285 > >         "stdio",
00:01:25 v #1286 > >         result
00:01:25 v #1287 > >     ]]
00:01:25 v #1288 > >
00:01:25 v #1289 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:25 v #1290 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:25 v #1291 > > │ ## typescript                                                                │
00:01:25 v #1292 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:25 v #1293 > >
00:01:25 v #1294 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:25 v #1295 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:25 v #1296 > > │ ### process_typescript                                                       │
00:01:25 v #1297 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:25 v #1298 > >
00:01:25 v #1299 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:25 v #1300 > > inl process_typescript { fs_path deps trace_level } =
00:01:25 v #1301 > >     inl extension = "ts"
00:01:25 v #1302 > >
00:01:25 v #1303 > >     inl code = fs_path |> file_system.read_all_text
00:01:25 v #1304 > >
00:01:25 v #1305 > >     inl hash_hex = (extension, code) |> sm'.format_debug |> crypto.hash_text
00:01:25 v #1306 > >
00:01:25 v #1307 > >     inl workspace_name = "spiral_builder"
00:01:25 v #1308 > >
00:01:25 v #1309 > >     inl workspace_root_external = file_system.get_workspace_root_external ()
00:01:25 v #1310 > >     inl workspace_root = workspace_root_external |> resultm.box |>
00:01:25 v #1311 > > resultm.unwrap_or_else id
00:01:25 v #1312 > >
00:01:25 v #1313 > >     inl package_dir =
00:01:25 v #1314 > >         get_package_dir
00:01:25 v #1315 > >             { workspace_root name = workspace_name; target = Some TypeScript;
00:01:25 v #1316 > > hash = Some hash_hex }
00:01:25 v #1317 > >
00:01:25 v #1318 > >     inl fsproj_path =
00:01:25 v #1319 > >         persist_code_project {
00:01:25 v #1320 > >             workspace_root
00:01:25 v #1321 > >             package_dir
00:01:25 v #1322 > >             packages = [[ "Fable.Core" ]]
00:01:25 v #1323 > >             modules = [[]]
00:01:25 v #1324 > >             name = workspace_name
00:01:25 v #1325 > >             code
00:01:25 v #1326 > >         }
00:01:25 v #1327 > >
00:01:25 v #1328 > >     inl lib_path = workspace_root </> "lib/typescript/fable/fable_modules"
00:01:25 v #1329 > >     inl lib_dir_prefix = $'$"fable-library-{!extension}"'
00:01:25 v #1330 > >     inl lib_dir_prefix' = join lib_dir_prefix
00:01:25 v #1331 > >
00:01:25 v #1332 > >     inl versions : _ (string * string) =
00:01:25 v #1333 > >         lib_path
00:01:25 v #1334 > >         |> file_system.new_walk_dir
00:01:25 v #1335 > >         |> file_system.walk_dir_filter fun entry => async.new_future_move_send
00:01:25 v #1336 > > fun () =>
00:01:25 v #1337 > >             entry
00:01:25 v #1338 > >             |> file_system.dir_entry_file_type
00:01:25 v #1339 > >             |> async.await_send
00:01:25 v #1340 > >             |> resultm.map_error' sm'.format'
00:01:25 v #1341 > >             |> resultm.unbox
00:01:25 v #1342 > >             |> function
00:01:25 v #1343 > >                 | Ok file_type when file_type |> file_system.file_type_is_dir |>
00:01:25 v #1344 > > not => file_system.Ignore
00:01:25 v #1345 > >                 | _ =>
00:01:25 v #1346 > >                     inl path =
00:01:25 v #1347 > >                         entry
00:01:25 v #1348 > >                         |> file_system.dir_entry_path
00:01:25 v #1349 > >                         |> file_system.path_buf_display
00:01:25 v #1350 > >                         |> sm'.format'
00:01:25 v #1351 > >                         |> sm'.from_std_string
00:01:25 v #1352 > >                     if path |> file_system.get_directory_name |> sm'.starts_with
00:01:25 v #1353 > > lib_dir_prefix |> not
00:01:25 v #1354 > >                     then file_system.IgnoreDir
00:01:25 v #1355 > >                     else
00:01:25 v #1356 > >                         match path |> file_system.directory_get_parent |>
00:01:25 v #1357 > > optionm'.unbox with
00:01:25 v #1358 > >                         | Some parent when parent |> sm'.contains lib_dir_prefix
00:01:25 v #1359 > > |> not =>
00:01:25 v #1360 > >                             file_system.Continue
00:01:25 v #1361 > >                         | _ => file_system.IgnoreDir
00:01:25 v #1362 > >         |> async.stream_filter_map_futures fun (entry : _ _
00:01:25 v #1363 > > file_system.async_walkdir_error) =>
00:01:25 v #1364 > >             inl entry = entry |> resultm.map_error' sm'.format' |> resultm.unbox
00:01:25 v #1365 > >             match entry with
00:01:25 v #1366 > >             | Ok entry =>
00:01:25 v #1367 > >                 inl path =
00:01:25 v #1368 > >                     entry
00:01:25 v #1369 > >                     |> file_system.dir_entry_path
00:01:25 v #1370 > >                     |> file_system.path_buf_display
00:01:25 v #1371 > >                     |> sm'.format'
00:01:25 v #1372 > >                     |> sm'.from_std_string
00:01:25 v #1373 > >                 inl version =
00:01:25 v #1374 > >                     $'$"{!lib_dir_prefix'}\\.(?<a>[[\\d.]]+)$"'
00:01:25 v #1375 > >                     |> sm'.new_regex
00:01:25 v #1376 > >                     |> resultm.unwrap'
00:01:25 v #1377 > >                     |> sm'.regex_captures path
00:01:25 v #1378 > >                     |> am'.from_vec
00:01:25 v #1379 > >                     |> fun x => x : _ int _
00:01:25 v #1380 > >                     |> am'.try_item 0
00:01:25 v #1381 > >                     |> optionm.map (mapm.get "a" >> optionm'.unbox)
00:01:25 v #1382 > >                     |> optionm'.flatten
00:01:25 v #1383 > >                 version
00:01:25 v #1384 > >                 |> optionm.map fun version =>
00:01:25 v #1385 > >                     path, version
00:01:25 v #1386 > >             | Error error =>
00:01:25 v #1387 > >                 trace Critical
00:01:25 v #1388 > >                     fun () => "spiral_builder.process_typescript
00:01:25 v #1389 > > stream_filter_map"
00:01:25 v #1390 > >                     fun () => { error }
00:01:25 v #1391 > >                 None
00:01:25 v #1392 > >             |> optionm'.box
00:01:25 v #1393 > >         |> async.stream_collect_futures
00:01:25 v #1394 > >         |> async.await
00:01:25 v #1395 > >         |> async.into_par_iter
00:01:25 v #1396 > >         |> async.par_map id
00:01:25 v #1397 > >         |> async.par_collect
00:01:25 v #1398 > >
00:01:25 v #1399 > >     inl version =
00:01:25 v #1400 > >         versions
00:01:25 v #1401 > >         |> am'.from_vec
00:01:25 v #1402 > >         |> fun x => x : _ i32 _
00:01:25 v #1403 > >         |> am'.try_item 0
00:01:25 v #1404 > >
00:01:25 v #1405 > >     trace Debug
00:01:25 v #1406 > >         fun () => "spiral_builder.process_typescript"
00:01:25 v #1407 > >         fun () => { version }
00:01:25 v #1408 > >
00:01:25 v #1409 > >
00:01:25 v #1410 > >     let link_lib () =
00:01:25 v #1411 > >         match version with
00:01:25 v #1412 > >         | Some (_path, version) =>
00:01:25 v #1413 > >             inl lib_link_target_path = lib_path </>
00:01:25 v #1414 > > $'$"fable-library-{!extension}.{!version}"'
00:01:25 v #1415 > >             inl lib_link_path = package_dir </>
00:01:25 v #1416 > > $'$"fable_modules/fable-library-{!extension}.{!version}"'
00:01:25 v #1417 > >             lib_link_path |> file_system.link_directory lib_link_target_path
00:01:25 v #1418 > >         | None => failwith $'$"spiral_builder.process_typescript / fable library
00:01:25 v #1419 > > not found / lib_path: {!lib_path}"'
00:01:25 v #1420 > >
00:01:25 v #1421 > >     link_lib ()
00:01:25 v #1422 > >
00:01:25 v #1423 > >     inl exit_code, dotnet_fable_result =
00:01:25 v #1424 > >         execute_dotnet_fable { workspace_root_external fsproj_path extension
00:01:25 v #1425 > > package_dir runtime = None }
00:01:25 v #1426 > >
00:01:25 v #1427 > >     link_lib ()
00:01:25 v #1428 > >
00:01:25 v #1429 > >     if exit_code <>. 0 then
00:01:25 v #1430 > >         trace Critical
00:01:25 v #1431 > >             fun () => "spiral_builder.process_typescript"
00:01:25 v #1432 > >             fun () => { exit_code dotnet_fable_result }
00:01:25 v #1433 > >         { extension = Some extension; code = None; code_path = None; output =
00:01:25 v #1434 > > Some dotnet_fable_result }
00:01:25 v #1435 > >     else
00:01:25 v #1436 > >         inl deps =
00:01:25 v #1437 > >             deps
00:01:25 v #1438 > >             |> am'.vec_map fun dep =>
00:01:25 v #1439 > >                 inl dep = dep |> sm'.from_std_string
00:01:25 v #1440 > >                 if dep |> sm'.contains "="
00:01:25 v #1441 > >                 then dep
00:01:25 v #1442 > >                 else $'$"\\"{!dep}\\":\\"*\\""'
00:01:25 v #1443 > >             |> am'.from_vec
00:01:25 v #1444 > >             |> fun x => x : _ i32 _
00:01:25 v #1445 > >             |> seq.of_array'
00:01:25 v #1446 > >             |> sm'.concat ",\n"
00:01:25 v #1447 > >
00:01:25 v #1448 > >         inl package_json_content =
00:01:25 v #1449 > >             $'$"{{"'
00:01:25 v #1450 > >             +. $'$"  \\\"name\\\": \\\"spiral_builder_{!hash_hex}\\\","'
00:01:25 v #1451 > >             +. $'$"  \\\"dependencies\\\": {{"'
00:01:25 v #1452 > >             +. deps
00:01:25 v #1453 > >             +. $'$"  }},"'
00:01:25 v #1454 > >             +. $'$"    \\\"devDependencies\\\": {{"'
00:01:25 v #1455 > >             +. $'$"  }},"'
00:01:25 v #1456 > >             +. $'$"}}"'
00:01:25 v #1457 > >
00:01:25 v #1458 > >         inl workspace_package_json_content =
00:01:25 v #1459 > >             ""
00:01:25 v #1460 > >
00:01:25 v #1461 > >         inl package_json_path = package_dir </> "package.json"
00:01:25 v #1462 > >
00:01:25 v #1463 > >         inl workspace_dir = package_dir </> "../.."
00:01:25 v #1464 > >         inl workspace_package_json_path = workspace_dir </> "package.json"
00:01:25 v #1465 > >
00:01:25 v #1466 > >         package_json_content |> file_system.write_all_text_exists
00:01:25 v #1467 > > package_json_path
00:01:25 v #1468 > >
00:01:25 v #1469 > >         workspace_package_json_content |> file_system.write_all_text_exists
00:01:25 v #1470 > > workspace_package_json_path
00:01:25 v #1471 > >
00:01:25 v #1472 > >         inl new_code_path = package_dir </> $'$"{!workspace_name}.{!extension}"'
00:01:25 v #1473 > >         trace Debug
00:01:25 v #1474 > >             fun () => "spiral_builder.process_typescript"
00:01:25 v #1475 > >             fun () => { new_code_path }
00:01:25 v #1476 > >         inl new_code = new_code_path |> file_system.read_all_text
00:01:25 v #1477 > >
00:01:25 v #1478 > >         inl main_code_header =
00:01:25 v #1479 > >             "// spiral_builder.process_typescript"
00:01:25 v #1480 > >         inl main_code = "// spiral_builder.process_typescript"
00:01:25 v #1481 > >
00:01:25 v #1482 > >         inl cached = new_code |> sm'.contains main_code_header
00:01:25 v #1483 > >
00:01:25 v #1484 > >         inl new_code =
00:01:25 v #1485 > >             if cached
00:01:25 v #1486 > >             then new_code
00:01:25 v #1487 > >             else
00:01:25 v #1488 > >                 new_code
00:01:25 v #1489 > >                 |> sm'.replace
00:01:25 v #1490 > >                     $'$"\\\"./fable_modules/fable-library-ts.{!version}/"'
00:01:25 v #1491 > >
00:01:25 v #1492 > > $'$"\\\"{!workspace_root}/lib/typescript/fable/fable_modules/fable-library-ts.{!
00:01:25 v #1493 > > version}/"'
00:01:25 v #1494 > >                 |> sm'.replace_regex
00:01:25 v #1495 > >                     "\\s\\sdefaultOf\\(\\);"
00:01:25 v #1496 > >                     " defaultOf::<()>();"
00:01:25 v #1497 > >
00:01:25 v #1498 > >         if not cached then
00:01:25 v #1499 > >             $'$"{!new_code}\\n\\n{!main_code}\\n"'
00:01:25 v #1500 > >             |> file_system.write_all_text_exists new_code_path
00:01:25 v #1501 > >
00:01:25 v #1502 > >         inl command = $'$"bun run \\\"{!new_code_path}\\\""'
00:01:25 v #1503 > >         inl environment_variables =
00:01:25 v #1504 > >             match "~/.bun/bin" |> env.append_path with
00:01:25 v #1505 > >             | Some path => [[ "PATH", path ]]
00:01:25 v #1506 > >             | None => [[]]
00:01:25 v #1507 > >             ++ [[
00:01:25 v #1508 > >                 "TRACE_LEVEL", "Verbose"
00:01:25 v #1509 > >             ]]
00:01:25 v #1510 > >             |> listm'.box
00:01:25 v #1511 > >             |> listm'.to_array'
00:01:25 v #1512 > >         inl exit_code, run_result =
00:01:25 v #1513 > >             runtime.execution_options fun x => { x with
00:01:25 v #1514 > >                 command
00:01:25 v #1515 > >                 environment_variables
00:01:25 v #1516 > >                 working_directory = workspace_root_external |> resultm.box |>
00:01:25 v #1517 > > resultm.ok'
00:01:25 v #1518 > >             }
00:01:25 v #1519 > >             |> runtime.execute_with_options
00:01:25 v #1520 > >
00:01:25 v #1521 > >         inl external_command =
00:01:25 v #1522 > >             inl vars =
00:01:25 v #1523 > >                 a environment_variables
00:01:25 v #1524 > >                 |> am.map fun k, v => $'$"$env:{!k}=\'\'{!v}\'\'"' : string
00:01:25 v #1525 > >                 |> fun x => x : _ i32 _
00:01:25 v #1526 > >                 |> seq.of_array
00:01:25 v #1527 > >                 |> sm'.concat ";"
00:01:25 v #1528 > >             $'$"pwsh -c \'{!vars}; {!command}\'"' : string
00:01:25 v #1529 > >         if exit_code = 0 then
00:01:25 v #1530 > >             inl output =
00:01:25 v #1531 > >                 try
00:01:25 v #1532 > >                     fun () =>
00:01:25 v #1533 > >                         run_result
00:01:25 v #1534 > >                         |> sm'.split "\n"
00:01:25 v #1535 > >                         |> fun x => a x : _ i32 _
00:01:25 v #1536 > >                         |> seq.of_array
00:01:25 v #1537 > >                         |> sm'.concat "\n"
00:01:25 v #1538 > >                     fun ex =>
00:01:25 v #1539 > >                         trace Critical
00:01:25 v #1540 > >                             fun () => "spiral_builder.process_typescript
00:01:25 v #1541 > > Exception"
00:01:25 v #1542 > >                             fun () => { ex new_code_path external_command
00:01:25 v #1543 > > run_result }
00:01:25 v #1544 > >                         None
00:01:25 v #1545 > >                 |> optionm'.box
00:01:25 v #1546 > >                 |> optionm'.unwrap
00:01:25 v #1547 > >
00:01:25 v #1548 > >             {
00:01:25 v #1549 > >                 extension = Some extension
00:01:25 v #1550 > >                 code = Some new_code
00:01:25 v #1551 > >                 code_path = Some new_code_path
00:01:25 v #1552 > >                 output = Some output
00:01:25 v #1553 > >             }
00:01:25 v #1554 > >         else
00:01:25 v #1555 > >             trace Critical
00:01:25 v #1556 > >                 fun () => "spiral_builder.process_typescript / error"
00:01:25 v #1557 > >                 fun () => { exit_code run_result new_code_path external_command
00:01:25 v #1558 > > }
00:01:25 v #1559 > >             { extension = Some extension; code = None; code_path = None; output
00:01:25 v #1560 > > = None }
00:01:26 v #1561 > >
00:01:26 v #1562 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:26 v #1563 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:26 v #1564 > > │ ## python                                                                    │
00:01:26 v #1565 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:26 v #1566 > >
00:01:26 v #1567 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:26 v #1568 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:26 v #1569 > > │ ### process_python                                                           │
00:01:26 v #1570 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:26 v #1571 > >
00:01:26 v #1572 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:26 v #1573 > > inl process_python { fs_path deps trace_level } =
00:01:26 v #1574 > >     inl extension = "py"
00:01:26 v #1575 > >     inl is_trace = trace_level = Verbose
00:01:26 v #1576 > >     inl _trace (fn : () -> string) =
00:01:26 v #1577 > >         if is_trace
00:01:26 v #1578 > >         then trace Info (fun () => $'$"spiral_builder.process_python / {!fn
00:01:26 v #1579 > > ()}"') id
00:01:26 v #1580 > >         else fn () |> console.write_line
00:01:26 v #1581 > >
00:01:26 v #1582 > >     inl code = fs_path |> file_system.read_all_text
00:01:26 v #1583 > >
00:01:26 v #1584 > >     inl hash_hex = (extension, code) |> sm'.format_debug |> crypto.hash_text
00:01:26 v #1585 > >
00:01:26 v #1586 > >     inl workspace_name = "spiral_builder"
00:01:26 v #1587 > >
00:01:26 v #1588 > >     inl workspace_root_external = file_system.get_workspace_root_external ()
00:01:26 v #1589 > >     inl workspace_root = workspace_root_external |> resultm.box |>
00:01:26 v #1590 > > resultm.unwrap_or_else id
00:01:26 v #1591 > >
00:01:26 v #1592 > >     inl package_dir =
00:01:26 v #1593 > >         get_package_dir { workspace_root name = workspace_name; target = Some
00:01:26 v #1594 > > Python; hash = Some hash_hex }
00:01:26 v #1595 > >
00:01:26 v #1596 > >     inl fsproj_path =
00:01:26 v #1597 > >         persist_code_project {
00:01:26 v #1598 > >             workspace_root
00:01:26 v #1599 > >             package_dir
00:01:26 v #1600 > >             packages = [[ "Fable.Core" ]]
00:01:26 v #1601 > >             modules = [[]]
00:01:26 v #1602 > >             name = workspace_name
00:01:26 v #1603 > >             code
00:01:26 v #1604 > >         }
00:01:26 v #1605 > >
00:01:26 v #1606 > >     inl lib_path = workspace_root </> "lib/python/fable/fable_modules"
00:01:26 v #1607 > >
00:01:26 v #1608 > >     inl lib_link_target_path = lib_path </> $'$"fable_library"'
00:01:26 v #1609 > >     inl lib_link_path = package_dir </> $'$"fable_modules/fable_library"'
00:01:26 v #1610 > >
00:01:26 v #1611 > >     lib_link_path |> file_system.link_directory lib_link_target_path
00:01:26 v #1612 > >
00:01:26 v #1613 > >     inl exit_code, dotnet_fable_result =
00:01:26 v #1614 > >         execute_dotnet_fable { workspace_root_external fsproj_path extension
00:01:26 v #1615 > > package_dir runtime = None }
00:01:26 v #1616 > >
00:01:26 v #1617 > >     if exit_code <>. 0 then
00:01:26 v #1618 > >         trace Critical
00:01:26 v #1619 > >             fun () => "spiral_builder.process_python"
00:01:26 v #1620 > >             fun () => { exit_code dotnet_fable_result }
00:01:26 v #1621 > >         { extension = Some extension; code = None; code_path = None; output =
00:01:26 v #1622 > > Some dotnet_fable_result }
00:01:26 v #1623 > >     else
00:01:26 v #1624 > >         inl deps =
00:01:26 v #1625 > >             deps
00:01:26 v #1626 > >             |> am'.vec_map fun dep =>
00:01:26 v #1627 > >                 inl dep = dep |> sm'.from_std_string
00:01:26 v #1628 > >                 if dep |> sm'.contains "="
00:01:26 v #1629 > >                 then dep
00:01:26 v #1630 > >                 else $'$"\\"{!dep}\\":\\"*\\""'
00:01:26 v #1631 > >             |> am'.from_vec
00:01:26 v #1632 > >             |> fun x => x : _ i32 _
00:01:26 v #1633 > >             |> seq.of_array'
00:01:26 v #1634 > >             |> sm'.concat ",\n"
00:01:26 v #1635 > >
00:01:26 v #1636 > >         inl package_json_content =
00:01:26 v #1637 > >             $'$"{{"'
00:01:26 v #1638 > >             +. $'$"  \\\"name\\\": \\\"spiral_builder_{!hash_hex}\\\","'
00:01:26 v #1639 > >             +. $'$"  \\\"dependencies\\\": {{"'
00:01:26 v #1640 > >             +. deps
00:01:26 v #1641 > >             +. $'$"  }},"'
00:01:26 v #1642 > >             +. $'$"    \\\"devDependencies\\\": {{"'
00:01:26 v #1643 > >             +. $'$"  }},"'
00:01:26 v #1644 > >             +. $'$"}}"'
00:01:26 v #1645 > >
00:01:26 v #1646 > >         inl workspace_package_json_content =
00:01:26 v #1647 > >             ""
00:01:26 v #1648 > >
00:01:26 v #1649 > >         inl package_json_path = package_dir </> "package.json"
00:01:26 v #1650 > >
00:01:26 v #1651 > >         inl workspace_dir = package_dir </> "../.."
00:01:26 v #1652 > >         inl workspace_package_json_path = workspace_dir </> "package.json"
00:01:26 v #1653 > >
00:01:26 v #1654 > >         package_json_content |> file_system.write_all_text_exists
00:01:26 v #1655 > > package_json_path
00:01:26 v #1656 > >
00:01:26 v #1657 > >         workspace_package_json_content |> file_system.write_all_text_exists
00:01:26 v #1658 > > workspace_package_json_path
00:01:26 v #1659 > >
00:01:26 v #1660 > >         inl new_code_path = package_dir </> $'$"{!workspace_name}.{!extension}"'
00:01:26 v #1661 > >         trace Debug
00:01:26 v #1662 > >             fun () => "spiral_builder.process_python"
00:01:26 v #1663 > >             fun () => { new_code_path }
00:01:26 v #1664 > >         inl new_code = new_code_path |> file_system.read_all_text
00:01:26 v #1665 > >
00:01:26 v #1666 > >         inl main_code_header =
00:01:26 v #1667 > >             "# spiral_builder.process_python"
00:01:26 v #1668 > >         inl main_code = "# spiral_builder.process_python"
00:01:26 v #1669 > >
00:01:26 v #1670 > >         inl cached = new_code |> sm'.contains main_code_header
00:01:26 v #1671 > >
00:01:26 v #1672 > >         inl new_code =
00:01:26 v #1673 > >             if cached
00:01:26 v #1674 > >             then new_code
00:01:26 v #1675 > >             else
00:01:26 v #1676 > >                 new_code
00:01:26 v #1677 > >                 |> sm'.replace
00:01:26 v #1678 > >                     ("),)" +. !\($'"\\\";\\\".into()"'))
00:01:26 v #1679 > >                     "));"
00:01:26 v #1680 > >                 |> sm'.replace_regex
00:01:26 v #1681 > >                     "\\s\\sdefaultOf\\(\\);"
00:01:26 v #1682 > >                     " defaultOf::<()>();"
00:01:26 v #1683 > >
00:01:26 v #1684 > >         if not cached
00:01:26 v #1685 > >         then
00:01:26 v #1686 > >             $'$"{!new_code}\\n\\n{!main_code}\\n"'
00:01:26 v #1687 > >             |> file_system.write_all_text_exists new_code_path
00:01:26 v #1688 > >
00:01:26 v #1689 > >         inl command = $'$"python \\\"{!new_code_path}\\\""'
00:01:26 v #1690 > >         inl environment_variables =
00:01:26 v #1691 > >             ;[[
00:01:26 v #1692 > >                 "TRACE_LEVEL", "Verbose"
00:01:26 v #1693 > >             ]]
00:01:26 v #1694 > >         inl exit_code, run_result =
00:01:26 v #1695 > >             runtime.execution_options fun x => { x with
00:01:26 v #1696 > >                 command
00:01:26 v #1697 > >                 environment_variables
00:01:26 v #1698 > >                 working_directory = workspace_root_external |> resultm.box |>
00:01:26 v #1699 > > resultm.ok'
00:01:26 v #1700 > >             }
00:01:26 v #1701 > >             |> runtime.execute_with_options
00:01:26 v #1702 > >
00:01:26 v #1703 > >         inl external_command =
00:01:26 v #1704 > >             inl vars =
00:01:26 v #1705 > >                 a environment_variables
00:01:26 v #1706 > >                 |> am.map fun k, v => $'$"$env:{!k}=\'\'{!v}\'\'"' : string
00:01:26 v #1707 > >                 |> fun x => x : _ i32 _
00:01:26 v #1708 > >                 |> seq.of_array
00:01:26 v #1709 > >                 |> sm'.concat ";"
00:01:26 v #1710 > >             $'$"pwsh -c \'{!vars}; {!command}\'"' : string
00:01:26 v #1711 > >         if exit_code = 0 then
00:01:26 v #1712 > >             inl output =
00:01:26 v #1713 > >                 try
00:01:26 v #1714 > >                     fun () =>
00:01:26 v #1715 > >                         run_result
00:01:26 v #1716 > >                         |> sm'.split "\n"
00:01:26 v #1717 > >                         |> fun x => a x : _ i32 _
00:01:26 v #1718 > >                         |> seq.of_array
00:01:26 v #1719 > >                         |> sm'.concat "\n"
00:01:26 v #1720 > >                     fun ex =>
00:01:26 v #1721 > >                         trace Critical
00:01:26 v #1722 > >                             fun () => "spiral_builder.process_python
00:01:26 v #1723 > > Exception"
00:01:26 v #1724 > >                             fun () => { ex new_code_path external_command
00:01:26 v #1725 > > run_result }
00:01:26 v #1726 > >                         None
00:01:26 v #1727 > >                 |> optionm'.box
00:01:26 v #1728 > >                 |> optionm'.unwrap
00:01:26 v #1729 > >
00:01:26 v #1730 > >             {
00:01:26 v #1731 > >                 extension = Some extension
00:01:26 v #1732 > >                 code = Some new_code
00:01:26 v #1733 > >                 code_path = Some new_code_path
00:01:26 v #1734 > >                 output = Some output
00:01:26 v #1735 > >             }
00:01:26 v #1736 > >         else
00:01:26 v #1737 > >             trace Critical
00:01:26 v #1738 > >                 fun () => "spiral_builder.process_python / error"
00:01:26 v #1739 > >                 fun () => { exit_code run_result new_code_path external_command
00:01:26 v #1740 > > }
00:01:26 v #1741 > >             { extension = Some extension; code = None; code_path = None; output
00:01:26 v #1742 > > = None }
00:01:26 v #1743 > >
00:01:26 v #1744 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:26 v #1745 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:26 v #1746 > > │ ## cuda                                                                      │
00:01:26 v #1747 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:26 v #1748 > >
00:01:27 v #1749 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:27 v #1750 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:27 v #1751 > > │ ### process_cuda                                                             │
00:01:27 v #1752 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:27 v #1753 > >
00:01:27 v #1754 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:27 v #1755 > > inl process_cuda { py_path env deps } =
00:01:27 v #1756 > >     inl extension = "py"
00:01:27 v #1757 > >
00:01:27 v #1758 > >     inl new_code_path = py_path
00:01:27 v #1759 > >     inl new_code = new_code_path |> file_system.read_all_text
00:01:27 v #1760 > >
00:01:27 v #1761 > >     inl workspace_root_external = file_system.get_workspace_root_external ()
00:01:27 v #1762 > >     inl workspace_root = workspace_root_external |> resultm.box |>
00:01:27 v #1763 > > resultm.unwrap_or_else id
00:01:27 v #1764 > >
00:01:27 v #1765 > >     inl package_dir = new_code_path |> file_system.directory_get_parent |>
00:01:27 v #1766 > > optionm'.default_value' ""
00:01:27 v #1767 > >
00:01:27 v #1768 > >     inl manifest_path =
00:01:27 v #1769 > >         match env with
00:01:27 v #1770 > >         | Pip => package_dir </> "requirements.txt"
00:01:27 v #1771 > >         | Poetry => package_dir </> "pyproject.toml"
00:01:27 v #1772 > >
00:01:27 v #1773 > >     inl deps =
00:01:27 v #1774 > >         deps
00:01:27 v #1775 > >         |> am'.vec_map fun dep =>
00:01:27 v #1776 > >             inl dep = dep |> sm'.from_std_string
00:01:27 v #1777 > >             if dep |> sm'.contains "="
00:01:27 v #1778 > >             then dep
00:01:27 v #1779 > >             elif dep |> sm'.ends_with "]]"
00:01:27 v #1780 > >             then dep |> sm'.replace "[[" $'$"={{version=\'*\',features=[["' |>
00:01:27 v #1781 > > fun x => $'$"{!x}}}"'
00:01:27 v #1782 > >             else $'$"{!dep}=\'*\'"'
00:01:27 v #1783 > >         |> am'.from_vec
00:01:27 v #1784 > >         |> fun x => x : _ i32 _
00:01:27 v #1785 > >         |> seq.of_array'
00:01:27 v #1786 > >         |> sm'.concat "\n"
00:01:27 v #1787 > >
00:01:27 v #1788 > >     inl exit_code, run_result =
00:01:27 v #1789 > >         if deps = ""
00:01:27 v #1790 > >         then 0, ""
00:01:27 v #1791 > >         else
00:01:27 v #1792 > >             inl manifest =
00:01:27 v #1793 > >                 match env with
00:01:27 v #1794 > >                 | Pip =>
00:01:27 v #1795 > >                     deps
00:01:27 v #1796 > >                 | Poetry =>
00:01:27 v #1797 > >                     $'$"[[tool.poetry]]"'
00:01:27 v #1798 > >                     +#. $'$"name = \\\"test\\\""'
00:01:27 v #1799 > >                     +#. $'$"version = \\\"0.0.1\\\""'
00:01:27 v #1800 > >                     +#. $'$"description = \\\"\\\""'
00:01:27 v #1801 > >                     +#. $'$"authors = [[]]"'
00:01:27 v #1802 > >                     +#. $'$""'
00:01:27 v #1803 > >                     +#. $'$"[[tool.poetry.dependencies]]"'
00:01:27 v #1804 > >                     +#. $'$"python=\\\"~3.12\\\""'
00:01:27 v #1805 > >                     +#. $'$"{!deps}"'
00:01:27 v #1806 > >                     +#. $'$""'
00:01:27 v #1807 > >                     +#. $'$"[[build-system]]"'
00:01:27 v #1808 > >                     +#. $'$"requires = [[\\\"poetry-core\\\"]]"'
00:01:27 v #1809 > >                     +#. $'$"build-backend = \\\"poetry.core.masonry.api\\\""'
00:01:27 v #1810 > >
00:01:27 v #1811 > >             manifest |> file_system.write_all_text_exists manifest_path
00:01:27 v #1812 > >
00:01:27 v #1813 > >             runtime.execution_options fun x => { x with
00:01:27 v #1814 > >                 command =
00:01:27 v #1815 > >                     match env with
00:01:27 v #1816 > >                     | Pip => $'$"pip install -r requirements.txt"'
00:01:27 v #1817 > >                     | Poetry => $'$"poetry install"'
00:01:27 v #1818 > >                 working_directory = package_dir |> optionm'.some'
00:01:27 v #1819 > >             }
00:01:27 v #1820 > >             |> runtime.execute_with_options
00:01:27 v #1821 > >
00:01:27 v #1822 > >     if exit_code <>. 0 then
00:01:27 v #1823 > >         trace Critical
00:01:27 v #1824 > >             fun () => "spiral_builder.process_cuda / env install error"
00:01:27 v #1825 > >             fun () => { env exit_code run_result new_code_path }
00:01:27 v #1826 > >         { extension = Some extension; code = None; code_path = None; output =
00:01:27 v #1827 > > None }
00:01:27 v #1828 > >     else
00:01:27 v #1829 > >         inl command =
00:01:27 v #1830 > >             match env with
00:01:27 v #1831 > >             | Pip => $'$"python \\\"{!new_code_path}\\\""'
00:01:27 v #1832 > >             | Poetry => $'$"poetry run python \\\"{!new_code_path}\\\""'
00:01:27 v #1833 > >         inl environment_variables =
00:01:27 v #1834 > >             ;[[
00:01:27 v #1835 > >                 "TRACE_LEVEL", "Verbose"
00:01:27 v #1836 > >             ]]
00:01:27 v #1837 > >         inl exit_code, run_result =
00:01:27 v #1838 > >             runtime.execution_options fun x => { x with
00:01:27 v #1839 > >                 command
00:01:27 v #1840 > >                 environment_variables
00:01:27 v #1841 > >                 working_directory = package_dir |> optionm'.some'
00:01:27 v #1842 > >             }
00:01:27 v #1843 > >             |> runtime.execute_with_options
00:01:27 v #1844 > >
00:01:27 v #1845 > >         inl external_command =
00:01:27 v #1846 > >             inl vars =
00:01:27 v #1847 > >                 a environment_variables
00:01:27 v #1848 > >                 |> am.map fun k, v => $'$"$env:{!k}=\'\'{!v}\'\'"' : string
00:01:27 v #1849 > >                 |> fun x => x : _ i32 _
00:01:27 v #1850 > >                 |> seq.of_array
00:01:27 v #1851 > >                 |> sm'.concat ";"
00:01:27 v #1852 > >             $'$"pwsh -c \'{!vars}; {!command}\'"' : string
00:01:27 v #1853 > >         if exit_code = 0
00:01:27 v #1854 > >             || (run_result |> sm'.contains
00:01:27 v #1855 > > "cupy_backends.cuda.api.runtime.CUDARuntimeError: cudaErrorInsufficientDriver")
00:01:27 v #1856 > > then
00:01:27 v #1857 > >             inl output =
00:01:27 v #1858 > >                 try
00:01:27 v #1859 > >                     fun () =>
00:01:27 v #1860 > >                         run_result
00:01:27 v #1861 > >                         |> sm'.split "\n"
00:01:27 v #1862 > >                         |> fun x => a x : _ i32 _
00:01:27 v #1863 > >                         |> seq.of_array
00:01:27 v #1864 > >                         |> sm'.concat "\n"
00:01:27 v #1865 > >                     fun ex =>
00:01:27 v #1866 > >                         trace Critical
00:01:27 v #1867 > >                             fun () => "spiral_builder.process_cuda / Exception"
00:01:27 v #1868 > >                             fun () => { ex run_result new_code_path
00:01:27 v #1869 > > external_command }
00:01:27 v #1870 > >                         None
00:01:27 v #1871 > >                 |> optionm'.box
00:01:27 v #1872 > >                 |> optionm'.unwrap
00:01:27 v #1873 > >
00:01:27 v #1874 > >             {
00:01:27 v #1875 > >                 extension = Some extension
00:01:27 v #1876 > >                 code = Some new_code
00:01:27 v #1877 > >                 code_path = Some new_code_path
00:01:27 v #1878 > >                 output = Some output
00:01:27 v #1879 > >             }
00:01:27 v #1880 > >         else
00:01:27 v #1881 > >             trace Critical
00:01:27 v #1882 > >                 fun () => "spiral_builder.process_cuda / error"
00:01:27 v #1883 > >                 fun () => { exit_code run_result new_code_path external_command
00:01:27 v #1884 > > }
00:01:27 v #1885 > >             { extension = Some extension; code = None; code_path = None; output
00:01:27 v #1886 > > = None }
00:01:27 v #1887 > >
00:01:27 v #1888 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:27 v #1889 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:27 v #1890 > > │ ## fsharp                                                                    │
00:01:27 v #1891 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:27 v #1892 > >
00:01:27 v #1893 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:27 v #1894 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:27 v #1895 > > │ ### process_fsharp                                                           │
00:01:27 v #1896 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:27 v #1897 > >
00:01:27 v #1898 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:27 v #1899 > > inl process_fsharp { spi_path } =
00:01:27 v #1900 > >     inl extension = "fsx"
00:01:27 v #1901 > >
00:01:27 v #1902 > >     inl new_code_path = spi_path
00:01:27 v #1903 > >     inl new_code = new_code_path |> file_system.read_all_text
00:01:27 v #1904 > >
00:01:27 v #1905 > >     inl workspace_root_external = file_system.get_workspace_root_external ()
00:01:27 v #1906 > >     inl workspace_root = workspace_root_external |> resultm.box |>
00:01:27 v #1907 > > resultm.unwrap_or_else id
00:01:27 v #1908 > >
00:01:27 v #1909 > >     inl supervisor_path = workspace_root </>
00:01:27 v #1910 > > $"apps/spiral/dist/Supervisor!(platform.get_executable_suffix ())"
00:01:27 v #1911 > >     inl code_dir = new_code_path |> file_system.directory_get_parent |>
00:01:27 v #1912 > > optionm'.default_value' ""
00:01:27 v #1913 > >     inl file_name = new_code_path |> file_system.get_file_name_without_extension
00:01:27 v #1914 > >     inl output_path = code_dir </> $'$"{!file_name}.{!extension}"'
00:01:27 v #1915 > >     inl command = $'$"{!supervisor_path} --build-file \\\"{!new_code_path}\\\"
00:01:27 v #1916 > > \\\"{!output_path}\\\""'
00:01:27 v #1917 > >     inl environment_variables =
00:01:27 v #1918 > >         ;[[
00:01:27 v #1919 > >             "TRACE_LEVEL", "Verbose"
00:01:27 v #1920 > >         ]]
00:01:27 v #1921 > >     inl exit_code, run_result =
00:01:27 v #1922 > >         runtime.execution_options fun x => { x with
00:01:27 v #1923 > >             command
00:01:27 v #1924 > >             environment_variables
00:01:27 v #1925 > >             working_directory = workspace_root_external |> resultm.box |>
00:01:27 v #1926 > > resultm.ok'
00:01:27 v #1927 > >         }
00:01:27 v #1928 > >         |> runtime.execute_with_options
00:01:27 v #1929 > >
00:01:27 v #1930 > >     inl external_command =
00:01:27 v #1931 > >         inl vars =
00:01:27 v #1932 > >             a environment_variables
00:01:27 v #1933 > >             |> am.map fun k, v => $'$"$env:{!k}=\'\'{!v}\'\'"' : string
00:01:27 v #1934 > >             |> fun x => x : _ i32 _
00:01:27 v #1935 > >             |> seq.of_array
00:01:27 v #1936 > >             |> sm'.concat ";"
00:01:27 v #1937 > >         $'$"pwsh -c \'{!vars}; {!command}\'"' : string
00:01:27 v #1938 > >     if exit_code = 0 then
00:01:27 v #1939 > >         inl output =
00:01:27 v #1940 > >             try
00:01:27 v #1941 > >                 fun () =>
00:01:27 v #1942 > >                     run_result
00:01:27 v #1943 > >                     |> sm'.split "\n"
00:01:27 v #1944 > >                     |> fun x => a x : _ i32 _
00:01:27 v #1945 > >                     |> seq.of_array
00:01:27 v #1946 > >                     |> sm'.concat "\n"
00:01:27 v #1947 > >                 fun ex =>
00:01:27 v #1948 > >                     trace Critical
00:01:27 v #1949 > >                         fun () => "spiral_builder.process_fsharp / Exception"
00:01:27 v #1950 > >                         fun () => { ex run_result new_code_path external_command
00:01:27 v #1951 > > }
00:01:27 v #1952 > >                     None
00:01:27 v #1953 > >             |> optionm'.box
00:01:27 v #1954 > >             |> optionm'.unwrap
00:01:27 v #1955 > >
00:01:27 v #1956 > >         {
00:01:27 v #1957 > >             extension = Some extension
00:01:27 v #1958 > >             code = Some new_code
00:01:27 v #1959 > >             code_path = Some new_code_path
00:01:27 v #1960 > >             output = Some output
00:01:27 v #1961 > >         }
00:01:27 v #1962 > >     else
00:01:27 v #1963 > >         trace Critical
00:01:27 v #1964 > >             fun () => "spiral_builder.process_fsharp / error"
00:01:27 v #1965 > >             fun () => { exit_code run_result new_code_path external_command }
00:01:27 v #1966 > >         { extension = Some extension; code = None; code_path = None; output =
00:01:27 v #1967 > > None }
00:01:28 v #1968 > >
00:01:28 v #1969 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:28 v #1970 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:28 v #1971 > > │ ## run                                                                       │
00:01:28 v #1972 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:28 v #1973 > >
00:01:28 v #1974 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:28 v #1975 > > let rec run trace_level (matches : runtime.arg_matches) : async.future_pin
00:01:28 v #1976 > > (resultm.result' string string) =
00:01:28 v #1977 > >     fun () =>
00:01:28 v #1978 > >         match matches |> runtime.matches_subcommand |> optionm'.unbox with
00:01:28 v #1979 > >         | Some (subcommand, arg_matches)
00:01:28 v #1980 > >                 when (subcommand |> sm'.from_std_string) = (get_args () .cuda |>
00:01:28 v #1981 > > fst) =>
00:01:28 v #1982 > >
00:01:28 v #1983 > >             inl py_path =
00:01:28 v #1984 > >                 arg_matches
00:01:28 v #1985 > >                 |> runtime.matches_get_one ((get_args () .cuda |> snd).py_path
00:01:28 v #1986 > > |> fst)
00:01:28 v #1987 > >                 |> optionm'.unbox
00:01:28 v #1988 > >                 |> optionm.value
00:01:28 v #1989 > >                 |> sm'.from_std_string
00:01:28 v #1990 > >
00:01:28 v #1991 > >             inl env =
00:01:28 v #1992 > >                 arg_matches
00:01:28 v #1993 > >                 |> runtime.matches_get_one ((get_args () .cuda |> snd).env |>
00:01:28 v #1994 > > fst)
00:01:28 v #1995 > >                 |> optionm'.unbox
00:01:28 v #1996 > >                 |> optionm.map (
00:01:28 v #1997 > >                     sm'.from_std_string
00:01:28 v #1998 > >                     >> reflection.union_try_pick
00:01:28 v #1999 > >                 )
00:01:28 v #2000 > >                 |> optionm'.flatten
00:01:28 v #2001 > >                 |> optionm'.default_value Pip
00:01:28 v #2002 > >
00:01:28 v #2003 > >             inl deps : am'.vec sm'.std_string =
00:01:28 v #2004 > >                 arg_matches
00:01:28 v #2005 > >                 |> runtime.matches_get_many ((get_args () .cuda |> snd).deps |>
00:01:28 v #2006 > > fst)
00:01:28 v #2007 > >                 |> optionm'.unbox
00:01:28 v #2008 > >                 |> optionm'.default_value (;[[]] |> am'.to_vec)
00:01:28 v #2009 > >
00:01:28 v #2010 > >             inl command_result =
00:01:28 v #2011 > >                 process_cuda { py_path env deps }
00:01:28 v #2012 > >                 |> fun { extension code output } =>
00:01:28 v #2013 > >                     ;[[
00:01:28 v #2014 > >                         "extension", extension |> optionm'.default_value ""
00:01:28 v #2015 > >                         "code", code |> optionm'.default_value ""
00:01:28 v #2016 > >                         "output", output |> optionm'.default_value ""
00:01:28 v #2017 > >                     ]]
00:01:28 v #2018 > >
00:01:28 v #2019 > >             ;[[
00:01:28 v #2020 > >                 "command_result",
00:01:28 v #2021 > >                 command_result
00:01:28 v #2022 > >                 |> am'.to_vec
00:01:28 v #2023 > >                 |> am'.vec_map' fun k, v =>
00:01:28 v #2024 > >                     new_pair (sm'.to_std_string k) (sm'.to_std_string v)
00:01:28 v #2025 > >                 |> mapm.b_tree_map_from_vec_pairs
00:01:28 v #2026 > >                 |> sm'.serialize
00:01:28 v #2027 > >                 |> resultm.unwrap'
00:01:28 v #2028 > >                 |> sm'.from_std_string
00:01:28 v #2029 > >             ]]
00:01:28 v #2030 > >
00:01:28 v #2031 > >         | Some (subcommand, arg_matches)
00:01:28 v #2032 > >                 when (subcommand |> sm'.from_std_string) = (get_args () .fable
00:01:28 v #2033 > > |> fst) =>
00:01:28 v #2034 > >
00:01:28 v #2035 > >             inl fs_path =
00:01:28 v #2036 > >                 arg_matches
00:01:28 v #2037 > >                 |> runtime.matches_get_one ((get_args () .fable |> snd).fs_path
00:01:28 v #2038 > > |> fst)
00:01:28 v #2039 > >                 |> optionm'.unbox
00:01:28 v #2040 > >                 |> optionm.value
00:01:28 v #2041 > >                 |> sm'.from_std_string
00:01:28 v #2042 > >
00:01:28 v #2043 > >             inl command =
00:01:28 v #2044 > >                 arg_matches
00:01:28 v #2045 > >                 |> runtime.matches_get_one ((get_args () .fable |> snd).command
00:01:28 v #2046 > > |> fst)
00:01:28 v #2047 > >                 |> optionm'.unbox
00:01:28 v #2048 > >                 |> optionm.map sm'.from_std_string
00:01:28 v #2049 > >
00:01:28 v #2050 > >             inl command_result =
00:01:28 v #2051 > >                 match command with
00:01:28 v #2052 > >                 | Some command =>
00:01:28 v #2053 > >                     get_command ()
00:01:28 v #2054 > >                     |> runtime.command_get_matches_from (
00:01:28 v #2055 > >                         $'$"_ {!command} --fs-path \\\"{!fs_path}\\\""' |>
00:01:28 v #2056 > > runtime.split_args |> resultm.get
00:01:28 v #2057 > >                     )
00:01:28 v #2058 > >                     |> run trace_level
00:01:28 v #2059 > >                     |> async.await
00:01:28 v #2060 > >                     |> resultm.unwrap'
00:01:28 v #2061 > >                 | None => "{}"
00:01:28 v #2062 > >
00:01:28 v #2063 > >             ;[[
00:01:28 v #2064 > >                 "command_result",
00:01:28 v #2065 > >                 command_result
00:01:28 v #2066 > >             ]]
00:01:28 v #2067 > >
00:01:28 v #2068 > >         | Some (subcommand, arg_matches)
00:01:28 v #2069 > >             when (subcommand |> sm'.from_std_string) = (get_args () .dib |> fst)
00:01:28 v #2070 > > =>
00:01:28 v #2071 > >
00:01:28 v #2072 > >             inl path =
00:01:28 v #2073 > >                 arg_matches
00:01:28 v #2074 > >                 |> runtime.matches_get_one ((get_args () .dib |> snd).path |>
00:01:28 v #2075 > > fst)
00:01:28 v #2076 > >                 |> optionm'.map'' (
00:01:28 v #2077 > >                     sm'.from_std_string
00:01:28 v #2078 > >                     >> file_system.absolute_path
00:01:28 v #2079 > >                 )
00:01:28 v #2080 > >                 |> optionm'.unwrap
00:01:28 v #2081 > >
00:01:28 v #2082 > >             inl retries =
00:01:28 v #2083 > >                 arg_matches
00:01:28 v #2084 > >                 |> runtime.matches_get_one ((get_args () .dib |> snd).retries |>
00:01:28 v #2085 > > fst)
00:01:28 v #2086 > >                 |> optionm'.default_value' 1u8
00:01:28 v #2087 > >
00:01:28 v #2088 > >             inl working_directory =
00:01:28 v #2089 > >                 arg_matches
00:01:28 v #2090 > >                 |> runtime.matches_get_one ((get_args () .dib |>
00:01:28 v #2091 > > snd).working_directory |> fst)
00:01:28 v #2092 > >                 |> optionm'.unbox
00:01:28 v #2093 > >
00:01:28 v #2094 > >             process_dib { path retries working_directory }
00:01:28 v #2095 > >
00:01:28 v #2096 > >         | matches =>
00:01:28 v #2097 > >             match matches with
00:01:28 v #2098 > >             | Some (subcommand, arg_matches)
00:01:28 v #2099 > >                     when (subcommand |> sm'.from_std_string) = (get_args ()
00:01:28 v #2100 > > .rust |> fst) =>
00:01:28 v #2101 > >
00:01:28 v #2102 > >                 inl fs_path =
00:01:28 v #2103 > >                     arg_matches
00:01:28 v #2104 > >                     |> runtime.matches_get_one ((get_args () .rust |>
00:01:28 v #2105 > > snd).fs_path |> fst)
00:01:28 v #2106 > >                     |> optionm'.unbox
00:01:28 v #2107 > >                     |> optionm.value
00:01:28 v #2108 > >                     |> sm'.from_std_string
00:01:28 v #2109 > >
00:01:28 v #2110 > >                 inl deps : am'.vec sm'.std_string =
00:01:28 v #2111 > >                     arg_matches
00:01:28 v #2112 > >                     |> runtime.matches_get_many ((get_args () .rust |> snd).deps
00:01:28 v #2113 > > |> fst)
00:01:28 v #2114 > >                     |> optionm'.unbox
00:01:28 v #2115 > >                     |> optionm'.default_value (;[[]] |> am'.to_vec)
00:01:28 v #2116 > >
00:01:28 v #2117 > >                 inl cleanup =
00:01:28 v #2118 > >                     arg_matches
00:01:28 v #2119 > >                     |> runtime.matches_get_flag ((get_args () .rust |>
00:01:28 v #2120 > > snd).cleanup |> fst)
00:01:28 v #2121 > >
00:01:28 v #2122 > >                 inl wasm =
00:01:28 v #2123 > >                     arg_matches
00:01:28 v #2124 > >                     |> runtime.matches_get_one ((get_args () .rust |> snd).wasm
00:01:28 v #2125 > > |> fst)
00:01:28 v #2126 > >                     |> optionm'.unbox
00:01:28 v #2127 > >                     |> optionm.map sm'.from_std_string
00:01:28 v #2128 > >
00:01:28 v #2129 > >                 inl contract =
00:01:28 v #2130 > >                     arg_matches
00:01:28 v #2131 > >                     |> runtime.matches_get_one ((get_args () .rust |>
00:01:28 v #2132 > > snd).contract |> fst)
00:01:28 v #2133 > >                     |> optionm'.unbox
00:01:28 v #2134 > >                     |> optionm.map sm'.from_std_string
00:01:28 v #2135 > >
00:01:28 v #2136 > >                 inl runtime =
00:01:28 v #2137 > >                     match wasm, contract with
00:01:28 v #2138 > >                     | Some wasm, _ => Wasm wasm |> Some
00:01:28 v #2139 > >                     | _, Some contract => Contract contract |> Some
00:01:28 v #2140 > >                     | _ => None
00:01:28 v #2141 > >
00:01:28 v #2142 > >                 process_rust { fs_path deps trace_level runtime cleanup }
00:01:28 v #2143 > >
00:01:28 v #2144 > >             | Some (subcommand, arg_matches)
00:01:28 v #2145 > >                     when (subcommand |> sm'.from_std_string) = (get_args ()
00:01:28 v #2146 > > .typescript |> fst) =>
00:01:28 v #2147 > >
00:01:28 v #2148 > >                 inl fs_path =
00:01:28 v #2149 > >                     arg_matches
00:01:28 v #2150 > >                     |> runtime.matches_get_one ((get_args () .typescript |>
00:01:28 v #2151 > > snd).fs_path |> fst)
00:01:28 v #2152 > >                     |> optionm'.unbox
00:01:28 v #2153 > >                     |> optionm.value
00:01:28 v #2154 > >                     |> sm'.from_std_string
00:01:28 v #2155 > >
00:01:28 v #2156 > >                 inl deps : am'.vec sm'.std_string =
00:01:28 v #2157 > >                     arg_matches
00:01:28 v #2158 > >                     |> runtime.matches_get_many ((get_args () .typescript |>
00:01:28 v #2159 > > snd).deps |> fst)
00:01:28 v #2160 > >                     |> optionm'.unbox
00:01:28 v #2161 > >                     |> optionm'.default_value (;[[]] |> am'.to_vec)
00:01:28 v #2162 > >
00:01:28 v #2163 > >                 process_typescript { fs_path deps trace_level }
00:01:28 v #2164 > >
00:01:28 v #2165 > >             | Some (subcommand, arg_matches)
00:01:28 v #2166 > >                     when (subcommand |> sm'.from_std_string) = (get_args ()
00:01:28 v #2167 > > .python |> fst) =>
00:01:28 v #2168 > >                 inl fs_path =
00:01:28 v #2169 > >                     arg_matches
00:01:28 v #2170 > >                     |> runtime.matches_get_one ((get_args () .python |>
00:01:28 v #2171 > > snd).fs_path |> fst)
00:01:28 v #2172 > >                     |> optionm'.unbox
00:01:28 v #2173 > >                     |> optionm.value
00:01:28 v #2174 > >                     |> sm'.from_std_string
00:01:28 v #2175 > >
00:01:28 v #2176 > >                 inl deps : am'.vec sm'.std_string =
00:01:28 v #2177 > >                     arg_matches
00:01:28 v #2178 > >                     |> runtime.matches_get_many ((get_args () .python |>
00:01:28 v #2179 > > snd).deps |> fst)
00:01:28 v #2180 > >                     |> optionm'.unbox
00:01:28 v #2181 > >                     |> optionm'.default_value (;[[]] |> am'.to_vec)
00:01:28 v #2182 > >
00:01:28 v #2183 > >                 process_python { fs_path deps trace_level }
00:01:28 v #2184 > >
00:01:28 v #2185 > >             | Some (subcommand, arg_matches) =>
00:01:28 v #2186 > >                 trace Debug
00:01:28 v #2187 > >                     fun () => "spiral_builder.run / invalid subcommand"
00:01:28 v #2188 > >                     fun () => { subcommand arg_matches }
00:01:28 v #2189 > >
00:01:28 v #2190 > >                 { extension = None; code = None; code_path = None; output = None
00:01:28 v #2191 > > }
00:01:28 v #2192 > >             | _ =>
00:01:28 v #2193 > >                 { extension = None; code = None; code_path = None; output = None
00:01:28 v #2194 > > }
00:01:28 v #2195 > >             |> fun { extension code code_path output } =>
00:01:28 v #2196 > >                 ;[[
00:01:28 v #2197 > >                     "extension", extension |> optionm'.default_value ""
00:01:28 v #2198 > >                     "code", code |> optionm'.default_value ""
00:01:28 v #2199 > >                     "code_path", code_path |> optionm'.default_value ""
00:01:28 v #2200 > >                     "output", output |> optionm'.default_value ""
00:01:28 v #2201 > >                 ]]
00:01:28 v #2202 > >         |> am'.to_vec
00:01:28 v #2203 > >         |> am'.vec_map' fun k, v =>
00:01:28 v #2204 > >             new_pair (sm'.to_std_string k) (sm'.to_std_string v)
00:01:28 v #2205 > >         |> mapm.b_tree_map_from_vec_pairs
00:01:28 v #2206 > >         |> sm'.serialize
00:01:28 v #2207 > >         |> resultm.map_error' (sm'.format' >> sm'.from_std_string)
00:01:28 v #2208 > >         |> resultm.map' sm'.from_std_string
00:01:28 v #2209 > >     |> async.new_future_move
00:01:28 v #2210 > >
00:01:28 v #2211 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:28 v #2212 > > //// test
00:01:28 v #2213 > > ///! rust -d async-walkdir chrono clap encoding_rs encoding_rs_io futures rand
00:01:28 v #2214 > > rayon regex serde_json sha2
00:01:28 v #2215 > >
00:01:28 v #2216 > > inl file_name = "main.fs"
00:01:28 v #2217 > > inl code = "let method0 () =\n    3 - 6 |> System.Console.WriteLine\nmethod0
00:01:28 v #2218 > > ()\n"
00:01:28 v #2219 > >
00:01:28 v #2220 > > inl temp_dir, disposable =
00:01:28 v #2221 > >     (file_name, code)
00:01:28 v #2222 > >     |> sm'.format_debug
00:01:28 v #2223 > >     |> crypto.hash_text
00:01:28 v #2224 > >     |> file_system.create_temp_dir'
00:01:28 v #2225 > > inl fs_path = temp_dir </> file_name
00:01:28 v #2226 > >
00:01:28 v #2227 > > code |> file_system.write_all_text fs_path
00:01:28 v #2228 > >
00:01:28 v #2229 > > get_command ()
00:01:28 v #2230 > > |> runtime.command_get_matches_from ($'$"_ fable -f \\\"{!fs_path}\\\" -c
00:01:28 v #2231 > > \\\"rust -d regex=\'*\'\\\""' |> runtime.split_args |> resultm.get)
00:01:28 v #2232 > > |> run Verbose
00:01:28 v #2233 > > |> async.block_on_futures
00:01:28 v #2234 > > |> resultm.unwrap'
00:01:28 v #2235 > > |> sm'.deserialize
00:01:28 v #2236 > > |> resultm.unwrap'
00:01:28 v #2237 > > |> mapm.get ("command_result" |> sm'.to_std_string)
00:01:28 v #2238 > > |> optionm'.unwrap
00:01:28 v #2239 > > |> sm'.from_std_string
00:01:28 v #2240 > > |> sm'.deserialize
00:01:28 v #2241 > > |> resultm.unwrap'
00:01:28 v #2242 > > |> fun result =>
00:01:28 v #2243 > >     result
00:01:28 v #2244 > >     |> mapm.get ("extension" |> sm'.to_std_string)
00:01:28 v #2245 > >     |> optionm'.unwrap
00:01:28 v #2246 > >     |> sm'.from_std_string
00:01:28 v #2247 > >     |> _assert_eq "rs"
00:01:28 v #2248 > >     result
00:01:28 v #2249 > >     |> mapm.get ("output" |> sm'.to_std_string)
00:01:28 v #2250 > >     |> optionm'.unwrap
00:01:28 v #2251 > >     |> sm'.from_std_string
00:01:28 v #2252 > >     |> _assert_eq "-3"
00:01:28 v #2253 > >
00:01:28 v #2254 > > disposable |> use |> ignore
00:02:12 v #2255 > >
00:02:12 v #2256 > > ╭─[ 43.60s - return value ]────────────────────────────────────────────────────╮
00:02:12 v #2257 > > │ 00:00:00 v #1 file_system.create_dir / { dir =                         │
00:02:12 v #2258 > > │ C:\Users\i574n\AppData\Local\Temp\!create_temp_path_\spiral_builder_4731434d │
00:02:12 v #2259 > > │ b19c87e07958d9acd80efbae146062dcb98c9866b204b8d9fbcf4658\84b99b0b-d6d4-d4b8- │
00:02:12 v #2260 > > │ 7f79-3c480ce421da }                                                          │
00:02:12 v #2261 > > │ 00:00:00 v #2 file_system.create_dir / { dir =                         │
00:02:12 v #2262 > > │ c:\home\git\polyglot\target/spiral_builder\spiral_builder\packages\Rust\34ab │
00:02:12 v #2263 > > │ 53ebc795bc28e69c93f16f6227b083afc493df0b85441a97d0332fae0026 }               │
00:02:12 v #2264 > > │ 00:00:00 d #3 runtime.execute_with_options / { file_name = dotnet;     │
00:02:12 v #2265 > > │ arguments = ["fable",                                                        │
00:02:12 v #2266 > > │ "c:/home/git/polyglot/target/spiral_builder/spiral_builder/packages/Rust/34a │
00:02:12 v #2267 > > │ b53ebc795bc28e69c93f16f6227b083afc493df0b85441a97d0332fae0026/spiral_builder │
00:02:12 v #2268 > > │ .fsproj", "--optimize", "--lang", "rs", "--extension", ".rs", "--outDir",    │
00:02:12 v #2269 > > │ "c:\\home\\git\\polyglot\\target/spiral_builder\\spiral_builder\\packages\\R │
00:02:12 v #2270 > > │ ust\\34ab53ebc795bc28e69c93f16f6227b083afc493df0b85441a97d0332fae0026",      │
00:02:12 v #2271 > > │ "--define", "_WINDOWS"]; options = { command = dotnet fable                  │
00:02:12 v #2272 > > │ "c:/home/git/polyglot/target/spiral_builder/spiral_builder/packages/Rust/34a │
00:02:12 v #2273 > > │ b53ebc795bc28e69c93f16f6227b083afc493df0b85441a97d0332fae0026/spiral_builder │
00:02:12 v #2274 > > │ .fsproj" --optimize --lang rs --extension .rs --outDir                       │
00:02:12 v #2275 > > │ "c:\home\git\polyglot\target/spiral_builder\spiral_builder\packages\Rust\34a │
00:02:12 v #2276 > > │ b53ebc795bc28e69c93f16f6227b083afc493df0b85441a97d0332fae0026" --define      │
00:02:12 v #2277 > > │ _WINDOWS; cancellation_token = None; environment_variables = Array(MutCell([ │
00:02:12 v #2278 > > │ ])); on_line = None; stdin = None; trace = true; working_directory = None }  │
00:02:12 v #2279 > > │ }                                                                            │
00:02:12 v #2280 > > │ 00:00:00 v #4 > Fable                                                  │
00:02:12 v #2281 > > │ ...der\packages\Rust\34ab53ebc795bc28e69c93f16f6227b083afc493df0b85441a97d03 │
00:02:12 v #2282 > > │ 32fae0026\spiral_builder.rs; cleanup =                                       │
00:02:12 v #2283 > > │ UH4_1("c:\home\git\polyglot\target/spiral_builder\spiral_builder\packages\Ru │
00:02:12 v #2284 > > │ st\34ab53ebc795bc28e69c93f16f6227b083afc493df0b85441a97d0332fae0026\../../.. │
00:02:12 v #2285 > > │ \target/debug/spiral_builder_34ab53ebc795bc28e69c93f16f6227b083afc493df0b854 │
00:02:12 v #2286 > > │ 41a97d0332fae0026.d", true,                                                  │
00:02:12 v #2287 > > │ UH4_1("c:\home\git\polyglot\target/spiral_builder\spiral_builder\packages\Ru │
00:02:12 v #2288 > > │ st\34ab53ebc795bc28e69c93f16f6227b083afc493df0b85441a97d0332fae0026\../../.. │
00:02:12 v #2289 > > │ \target/debug/spiral_builder_34ab53ebc795bc28e69c93f16f6227b083afc493df0b854 │
00:02:12 v #2290 > > │ 41a97d0332fae0026.exe", true,                                                │
00:02:12 v #2291 > > │ UH4_1("c:\home\git\polyglot\target/spiral_builder\spiral_builder\packages\Ru │
00:02:12 v #2292 > > │ st\34ab53ebc795bc28e69c93f16f6227b083afc493df0b85441a97d0332fae0026\../../.. │
00:02:12 v #2293 > > │ \target/debug/spiral_builder_34ab53ebc795bc28e69c93f16f6227b083afc493df0b854 │
00:02:12 v #2294 > > │ 41a97d0332fae0026.pdb", true,                                                │
00:02:12 v #2295 > > │ UH4_1("c:\home\git\polyglot\target/spiral_builder\spiral_builder\packages\Ru │
00:02:12 v #2296 > > │ st\34ab53ebc795bc28e69c93f16f6227b083afc493df0b85441a97d0332fae0026\../../.. │
00:02:12 v #2297 > > │ \target/debug/spiral_builder_34ab53ebc795bc28e69c93f16f6227b083afc493df0b854 │
00:02:12 v #2298 > > │ 41a97d0332fae0026.wasm", false,                                              │
00:02:12 v #2299 > > │ UH4_1("c:\home\git\polyglot\target/spiral_builder\spiral_builder\packages\Ru │
00:02:12 v #2300 > > │ st\34ab53ebc795bc28e69c93f16f6227b083afc493df0b85441a97d0332fae0026\../../.. │
00:02:12 v #2301 > > │ \target/debug/spiral_builder_34ab53ebc795bc28e69c93f16f6227b083afc493df0b854 │
00:02:12 v #2302 > > │ 41a97d0332fae0026", false, UH4_0))))) }                                      │
00:02:12 v #2303 > > │ __assert_eq / actual: "rs" / expected: "rs"                                  │
00:02:12 v #2304 > > │ __assert_eq / actual: "-3" / expected: "-3"                                  │
00:02:12 v #2305 > > │                                                                              │
00:02:12 v #2306 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:12 v #2307 > >
00:02:12 v #2308 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:12 v #2309 > > //// test
00:02:12 v #2310 > > ///! rust -d async-walkdir chrono clap encoding_rs encoding_rs_io futures rand
00:02:12 v #2311 > > rayon regex serde_json sha2
00:02:12 v #2312 > >
00:02:12 v #2313 > > inl file_name = "main.fs"
00:02:12 v #2314 > > inl code = "3 - 6 |> System.Console.WriteLine\n"
00:02:12 v #2315 > >
00:02:12 v #2316 > > inl temp_dir, disposable =
00:02:12 v #2317 > >     (file_name, code)
00:02:12 v #2318 > >     |> sm'.format_debug
00:02:12 v #2319 > >     |> crypto.hash_text
00:02:12 v #2320 > >     |> file_system.create_temp_dir'
00:02:12 v #2321 > > inl fs_path = temp_dir </> file_name
00:02:12 v #2322 > >
00:02:12 v #2323 > > code |> file_system.write_all_text fs_path
00:02:12 v #2324 > >
00:02:12 v #2325 > > get_command ()
00:02:12 v #2326 > > |> runtime.command_get_matches_from ($'$"_ fable -f \\\"{!fs_path}\\\" -c
00:02:12 v #2327 > > \\\"typescript\\\""' |> runtime.split_args |> resultm.get)
00:02:12 v #2328 > > |> run Verbose
00:02:12 v #2329 > > |> async.block_on_futures
00:02:12 v #2330 > > |> resultm.unwrap'
00:02:12 v #2331 > > |> sm'.deserialize
00:02:12 v #2332 > > |> resultm.unwrap'
00:02:12 v #2333 > > |> mapm.get ("command_result" |> sm'.to_std_string)
00:02:12 v #2334 > > |> optionm'.unwrap
00:02:12 v #2335 > > |> sm'.from_std_string
00:02:12 v #2336 > > |> sm'.deserialize
00:02:12 v #2337 > > |> resultm.unwrap'
00:02:12 v #2338 > > |> fun result =>
00:02:12 v #2339 > >     result
00:02:12 v #2340 > >     |> mapm.get ("extension" |> sm'.to_std_string)
00:02:12 v #2341 > >     |> optionm'.unwrap
00:02:12 v #2342 > >     |> sm'.from_std_string
00:02:12 v #2343 > >     |> _assert_eq "ts"
00:02:12 v #2344 > >     result
00:02:12 v #2345 > >     |> mapm.get ("output" |> sm'.to_std_string)
00:02:12 v #2346 > >     |> optionm'.unwrap
00:02:12 v #2347 > >     |> sm'.from_std_string
00:02:12 v #2348 > >     |> _assert_eq "-3"
00:02:12 v #2349 > >
00:02:12 v #2350 > > disposable |> use |> ignore
00:02:52 v #2351 > >
00:02:52 v #2352 > > ╭─[ 39.95s - return value ]────────────────────────────────────────────────────╮
00:02:52 v #2353 > > │ 00:00:00 v #1 file_system.create_dir / { dir =                         │
00:02:52 v #2354 > > │ C:\Users\i574n\AppData\Local\Temp\!create_temp_path_\spiral_builder_3ffe636d │
00:02:52 v #2355 > > │ eec6075ee3cc05f2b7c6ee45777da34610e2ea37d4128f223dc3b33c\c6422374-71e4-07d4- │
00:02:52 v #2356 > > │ 0ba4-c3084b24fbba }                                                          │
00:02:52 v #2357 > > │ 00:00:00 v #2 file_system.create_dir / { dir =                         │
00:02:52 v #2358 > > │ c:\home\git\polyglot\target/spiral_builder\spiral_builder\packages\TypeScrip │
00:02:52 v #2359 > > │ t\702335b0756baa7db0d02dbbeaf9fc04cf2c3b7dbb45866c578c5109aaa8c4a8 }         │
00:02:52 v #2360 > > │ 00:00:00 d #3 spiral_builder.process_typescript / { version =          │
00:02:52 v #2361 > > │ US46_0("c:\home\git\polyglot\lib/typescript/fable/fable_modules\fable-librar │
00:02:52 v #2362 > > │ y-ts.4.21.0", "4.21.0") }                                                    │
00:02:52 v #2363 > > │ 00:00:00 d #4 runtime.execute_with_options / { file_name = dotnet;     │
00:02:52 v #2364 > > │ arguments = ["fable",                                                        │
00:02:52 v #2365 > > │ "c:/home/git/polyglot/target/spiral_builder/spiral_builder/packages/TypeScri │
00:02:52 v #2366 > > │ pt/702335b0756baa7db0d02dbbeaf9fc04cf2c3b7dbb45866c578c5109aaa8c4a8/spiral_b │
00:02:52 v #2367 > > │ uilder.fsproj", "--optimize", "--lang", "ts", "--extension", ".ts",          │
00:02:52 v #2368 > > │ "--outDir",                                                                  │
00:02:52 v #2369 > > │ "c:\\home\\git\\polyglot\\target/spiral_builder\\spiral_builder\\packages\\T │
00:02:52 v #2370 > > │ ypeScript\\702335b0756baa7db0d02dbbeaf9fc04cf2c3b7dbb45866c578c5109aaa8c4a8" │
00:02:52 v #2371 > > │ , "--define", "_WINDOWS"]; options = { command = dotnet fable                │
00:02:52 v #2372 > > │ "c:/home/git/polyglot/target/spiral_builder/spiral_builder/packages/TypeScri │
00:02:52 v #2373 > > │ pt/702335b0756baa7db0d02dbbeaf9fc04cf2c3b7dbb45866c578c5109aaa8c4a8/spiral_b │
00:02:52 v #2374 > > │ uilder.fsproj" --optimize --lang ts --extension .ts --outDir                 │
00:02:52 v #2375 > > │ "c:\home\git\polyglot\target/spiral_builder\spiral_builder\packages\TypeScri │
00:02:52 v #2376 > > │ pt\702335b0756baa7db0d02dbbeaf9fc04cf2c3b7dbb45866c578c5109a...74n\scoop\app │
00:02:52 v #2377 > > │ s\python312\current\.;C:\Users\i574n\scoop\apps\perl\current\perl\site\bin;C │
00:02:52 v #2378 > > │ :\Users\i574n\scoop\apps\perl\current\perl\bin;C:\Users\i574n\scoop\apps\eli │
00:02:52 v #2379 > > │ xir\current\bin;C:\Users\i574n\scoop\apps\rustup\current\.cargo\bin;C:\Users │
00:02:52 v #2380 > > │ \i574n\scoop\apps\latex\current\texmfs\install\miktex\bin\x64;C:\Users\i574n │
00:02:52 v #2381 > > │ \scoop\apps\dotnet-sdk-preview\current;C:\Users\i574n\scoop\apps\dotnet-sdk\ │
00:02:52 v #2382 > > │ current;C:\Users\i574n\scoop\apps\gsudo\current;C:\Users\i574n\scoop\apps\py │
00:02:52 v #2383 > > │ thon\current;C:\Users\i574n\scoop\apps\nircmd\current;C:\Users\i574n\AppData │
00:02:52 v #2384 > > │ \Local\Microsoft\WindowsApps;C:\Users\i574n/scoop/buckets/mold/home/windows/ │
00:02:52 v #2385 > > │ path;C:\Users\i574n/scoop/persist/rustup/.cargo/bin;C:\Users\i574n/scoop/app │
00:02:52 v #2386 > > │ s/nvm/current/nodejs/nodejs;C:\Users\i574n/scoop/apps/cygwin/current/root/bi │
00:02:52 v #2387 > > │ n;C:\Users\i574n\AppData\Local\Programs\Microsoft VS                         │
00:02:52 v #2388 > > │ Code\bin;C:\Users\i574n\AppData\Local\Microsoft\WindowsApps;C:\Users\i574n\. │
00:02:52 v #2389 > > │ bun\bin;C:\Users\i574n\.dotnet\tools;C:\Users\i574n\scoop\shims;C:\Users\i57 │
00:02:52 v #2390 > > │ 4n\.fly\bin;C:\Program                                                       │
00:02:52 v #2391 > > │ Files\Wasmtime\bin;C:\Users\i574n/.cargo/bin;C:\Users\i574n/.bun/bin;C:\User │
00:02:52 v #2392 > > │ s\i574n/.cargo/bin;C:\Users\i574n/.bun/bin;C:\Users\i574n/.cargo/bin;C:\User │
00:02:52 v #2393 > > │ s\i574n/.bun/bin"), ("TRACE_LEVEL", "Verbose")])); on_line = None; stdin =   │
00:02:52 v #2394 > > │ None; trace = true; working_directory = None } }                             │
00:02:52 v #2395 > > │ 00:00:00 v #19 > -3                                                    │
00:02:52 v #2396 > > │ 00:00:00 v #20 runtime.execute_with_options / result / { exit_code =   │
00:02:52 v #2397 > > │ 0; std_trace_length = 2 }                                                    │
00:02:52 v #2398 > > │ __assert_eq / actual: "ts" / expected: "ts"                                  │
00:02:52 v #2399 > > │ __assert_eq / actual: "-3" / expected: "-3"                                  │
00:02:52 v #2400 > > │                                                                              │
00:02:52 v #2401 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:52 v #2402 > >
00:02:52 v #2403 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:52 v #2404 > > //// test
00:02:52 v #2405 > > ///! rust -d async-walkdir chrono clap encoding_rs encoding_rs_io futures rand
00:02:52 v #2406 > > rayon regex serde_json sha2
00:02:52 v #2407 > >
00:02:52 v #2408 > > inl file_name = "main.fs"
00:02:52 v #2409 > > inl code = "3 - 6 |> System.Console.WriteLine\n"
00:02:52 v #2410 > >
00:02:52 v #2411 > > inl temp_dir, disposable =
00:02:52 v #2412 > >     (file_name, code)
00:02:52 v #2413 > >     |> sm'.format_debug
00:02:52 v #2414 > >     |> crypto.hash_text
00:02:52 v #2415 > >     |> file_system.create_temp_dir'
00:02:52 v #2416 > > inl fs_path = temp_dir </> file_name
00:02:52 v #2417 > >
00:02:52 v #2418 > > code |> file_system.write_all_text fs_path
00:02:52 v #2419 > >
00:02:52 v #2420 > > get_command ()
00:02:52 v #2421 > > |> runtime.command_get_matches_from ($'$"_ fable -f \\\"{!fs_path}\\\" -c
00:02:52 v #2422 > > \\\"python\\\""' |> runtime.split_args |> resultm.get)
00:02:52 v #2423 > > |> run Verbose
00:02:52 v #2424 > > |> async.block_on_futures
00:02:52 v #2425 > > |> resultm.unwrap'
00:02:52 v #2426 > > |> sm'.deserialize
00:02:52 v #2427 > > |> resultm.unwrap'
00:02:52 v #2428 > > |> mapm.get ("command_result" |> sm'.to_std_string)
00:02:52 v #2429 > > |> optionm'.unwrap
00:02:52 v #2430 > > |> sm'.from_std_string
00:02:52 v #2431 > > |> sm'.deserialize
00:02:52 v #2432 > > |> resultm.unwrap'
00:02:52 v #2433 > > |> fun result =>
00:02:52 v #2434 > >     result
00:02:52 v #2435 > >     |> mapm.get ("extension" |> sm'.to_std_string)
00:02:52 v #2436 > >     |> optionm'.unwrap
00:02:52 v #2437 > >     |> sm'.from_std_string
00:02:52 v #2438 > >     |> _assert_eq "py"
00:02:52 v #2439 > >     result
00:02:52 v #2440 > >     |> mapm.get ("output" |> sm'.to_std_string)
00:02:52 v #2441 > >     |> optionm'.unwrap
00:02:52 v #2442 > >     |> sm'.from_std_string
00:02:52 v #2443 > >     |> _assert_eq "-3"
00:02:52 v #2444 > >
00:02:52 v #2445 > > disposable |> use |> ignore
00:03:30 v #2446 > >
00:03:30 v #2447 > > ╭─[ 38.74s - return value ]────────────────────────────────────────────────────╮
00:03:30 v #2448 > > │ 00:00:00 v #1 file_system.create_dir / { dir =                         │
00:03:30 v #2449 > > │ C:\Users\i574n\AppData\Local\Temp\!create_temp_path_\spiral_builder_1f450275 │
00:03:30 v #2450 > > │ cbb0cd791546d0cb5d16ff983d2b24e2b318f38f5f8afddd9ec58015\c6422374-71e4-07d4- │
00:03:30 v #2451 > > │ 0ba4-c3084b24fbba }                                                          │
00:03:30 v #2452 > > │ 00:00:00 v #2 file_system.create_dir / { dir =                         │
00:03:30 v #2453 > > │ c:\home\git\polyglot\target/spiral_builder\spiral_builder\packages\Python\cb │
00:03:30 v #2454 > > │ 8f3dd33197bb0bc95f09b3f3057a6844a0b70d75477350491883d14d8680ce }             │
00:03:30 v #2455 > > │ 00:00:00 d #3 runtime.execute_with_options / { file_name = dotnet;     │
00:03:30 v #2456 > > │ arguments = ["fable",                                                        │
00:03:30 v #2457 > > │ "c:/home/git/polyglot/target/spiral_builder/spiral_builder/packages/Python/c │
00:03:30 v #2458 > > │ b8f3dd33197bb0bc95f09b3f3057a6844a0b70d75477350491883d14d8680ce/spiral_build │
00:03:30 v #2459 > > │ er.fsproj", "--optimize", "--lang", "py", "--extension", ".py", "--outDir",  │
00:03:30 v #2460 > > │ "c:\\home\\git\\polyglot\\target/spiral_builder\\spiral_builder\\packages\\P │
00:03:30 v #2461 > > │ ython\\cb8f3dd33197bb0bc95f09b3f3057a6844a0b70d75477350491883d14d8680ce",    │
00:03:30 v #2462 > > │ "--define", "_WINDOWS"]; options = { command = dotnet fable                  │
00:03:30 v #2463 > > │ "c:/home/git/polyglot/target/spiral_builder/spiral_builder/packages/Python/c │
00:03:30 v #2464 > > │ b8f3dd33197bb0bc95f09b3f3057a6844a0b70d75477350491883d14d8680ce/spiral_build │
00:03:30 v #2465 > > │ er.fsproj" --optimize --lang py --extension .py --outDir                     │
00:03:30 v #2466 > > │ "c:\home\git\polyglot\target/spiral_builder\spiral_builder\packages\Python\c │
00:03:30 v #2467 > > │ b8f3dd33197bb0bc95f09b3f3057a6844a0b70d75477350491883d14d8680ce" --define    │
00:03:30 v #2468 > > │ _WINDOWS; cancellation_token = None; environment_variables = Array(MutCell([ │
00:03:30 v #2469 > > │ ])); on_line = None; stdin = None; trace = true; working_directory = None }  │
00:03:30 v #2470 > > │ }                                                                            │
00:03:30 v #2471 > > │ 00:00:00 v #...#10 > Retrieving project options from cache, in case of │
00:03:30 v #2472 > > │ issues run `dotnet fable clean` or try `--noCache` option.                   │
00:03:30 v #2473 > > │ 00:00:00 v #11 > Project and references (1 source files) parsed in     │
00:03:30 v #2474 > > │ 178ms                                                                        │
00:03:30 v #2475 > > │ 00:00:00 v #12 >                                                       │
00:03:30 v #2476 > > │ 00:00:00 v #13 > Skipped compilation because all generated files are   │
00:03:30 v #2477 > > │ up-to-date!                                                                  │
00:03:30 v #2478 > > │ 00:00:00 v #14 runtime.execute_with_options / result / { exit_code =   │
00:03:30 v #2479 > > │ 0; std_trace_length = 534 }                                                  │
00:03:30 v #2480 > > │ 00:00:00 d #15 spiral_builder.process_python / { new_code_path =       │
00:03:30 v #2481 > > │ c:\home\git\polyglot\target/spiral_builder\spiral_builder\packages\Python\cb │
00:03:30 v #2482 > > │ 8f3dd33197bb0bc95f09b3f3057a6844a0b70d75477350491883d14d8680ce\spiral_builde │
00:03:30 v #2483 > > │ r.py }                                                                       │
00:03:30 v #2484 > > │ 00:00:00 d #16 runtime.execute_with_options / { file_name = python;    │
00:03:30 v #2485 > > │ arguments = [                                                                │
00:03:30 v #2486 > > │ "c:\\home\\git\\polyglot\\target/spiral_builder\\spiral_builder\\packages\\P │
00:03:30 v #2487 > > │ ython\\cb8f3dd33197bb0bc95f09b3f3057a6844a0b70d75477350491883d14d8680ce\\spi │
00:03:30 v #2488 > > │ ral_builder.py"]; options = { command = python                               │
00:03:30 v #2489 > > │ "c:\home\git\polyglot\target/spiral_builder\spiral_builder\packages\Python\c │
00:03:30 v #2490 > > │ b8f3dd33197bb0bc95f09b3f3057a6844a0b70d75477350491883d14d8680ce\spiral_build │
00:03:30 v #2491 > > │ er.py"; cancellation_token = None; environment_variables = Array(MutCell([   │
00:03:30 v #2492 > > │ ("TRACE_LEVEL", "Verbose")])); on_line = None; stdin = None; trace = true;   │
00:03:30 v #2493 > > │ working_directory = None } }                                                 │
00:03:30 v #2494 > > │ 00:00:00 v #17 > -3                                                    │
00:03:30 v #2495 > > │ 00:00:00 v #18 runtime.execute_with_options / result / { exit_code =   │
00:03:30 v #2496 > > │ 0; std_trace_length = 2 }                                                    │
00:03:30 v #2497 > > │ __assert_eq / actual: "py" / expected: "py"                                  │
00:03:30 v #2498 > > │ __assert_eq / actual: "-3" / expected: "-3"                                  │
00:03:30 v #2499 > > │                                                                              │
00:03:30 v #2500 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:30 v #2501 > >
00:03:30 v #2502 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:30 v #2503 > > //// test
00:03:30 v #2504 > > ///! rust -d async-walkdir chrono clap encoding_rs encoding_rs_io futures rand
00:03:30 v #2505 > > rayon regex serde_json sha2
00:03:30 v #2506 > >
00:03:30 v #2507 > > inl file_name = "test.dib"
00:03:30 v #2508 > > inl code =
00:03:30 v #2509 > >
00:03:30 v #2510 > > "#!meta\n\n{\"kernelInfo\":{\"defaultKernelName\":\"fsharp\",\"items\":[[]]}}\n\
00:03:30 v #2511 > > n#!fsharp\n\n3 - 6\n"
00:03:30 v #2512 > >
00:03:30 v #2513 > > inl temp_dir, disposable =
00:03:30 v #2514 > >     (file_name, code)
00:03:30 v #2515 > >     |> sm'.format_debug
00:03:30 v #2516 > >     |> crypto.hash_text
00:03:30 v #2517 > >     |> file_system.create_temp_dir'
00:03:30 v #2518 > > inl path = temp_dir </> file_name |> file_system.normalize_path
00:03:30 v #2519 > >
00:03:30 v #2520 > > code
00:03:30 v #2521 > > |> file_system.write_all_text path
00:03:30 v #2522 > >
00:03:30 v #2523 > > get_command ()
00:03:30 v #2524 > > |> runtime.command_get_matches_from ($'$"_ dib -p {!path}"' |>
00:03:30 v #2525 > > runtime.split_args |> resultm.get)
00:03:30 v #2526 > > |> run Verbose
00:03:30 v #2527 > > |> async.block_on_futures
00:03:30 v #2528 > > |> resultm.unwrap'
00:03:30 v #2529 > > |> __assert sm'.contains Silent "<pre>-3 "
00:03:30 v #2530 > >
00:03:30 v #2531 > > $'$"{!path}.html"'
00:03:30 v #2532 > > |> file_system.read_all_text
00:03:30 v #2533 > > |> __assert sm'.contains Silent "\"cell-id=1\""
00:03:30 v #2534 > >
00:03:30 v #2535 > > disposable |> use |> ignore
00:04:18 v #2536 > >
00:04:18 v #2537 > > ╭─[ 47.67s - return value ]────────────────────────────────────────────────────╮
00:04:18 v #2538 > > │ 00:00:00 v #1 file_system.create_dir / { dir =                         │
00:04:18 v #2539 > > │ C:\Users\i574n\AppData\Local\Temp\!create_temp_path_\spiral_builder_680d2686 │
00:04:18 v #2540 > > │ 0398589b71ed6c0ead7c88c95627e5b090b93964e0a303daff1ef3cf\af524e22-8e9a-5d18- │
00:04:18 v #2541 > > │ 99ed-bd86e1b74623 }                                                          │
00:04:18 v #2542 > > │ 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet;     │
00:04:18 v #2543 > > │ arguments = ["repl", "--exit-after-run", "--run",                            │
00:04:18 v #2544 > > │ "c:/Users/i574n/AppData/Local/Temp/!create_temp_path_/spiral_builder_680d268 │
00:04:18 v #2545 > > │ 60398589b71ed6c0ead7c88c95627e5b090b93964e0a303daff1ef3cf/af524e22-8e9a-5d18 │
00:04:18 v #2546 > > │ -99ed-bd86e1b74623/test.dib", "--output-path",                               │
00:04:18 v #2547 > > │ "c:/Users/i574n/AppData/Local/Temp/!create_temp_path_/spiral_builder_680d268 │
00:04:18 v #2548 > > │ 60398589b71ed6c0ead7c88c95627e5b090b93964e0a303daff1ef3cf/af524e22-8e9a-5d18 │
00:04:18 v #2549 > > │ -99ed-bd86e1b74623/test.dib.ipynb"]; options = { command = dotnet repl       │
00:04:18 v #2550 > > │ --exit-after-run --run                                                       │
00:04:18 v #2551 > > │ "c:/Users/i574n/AppData/Local/Temp/!create_temp_path_/spiral_builder_680d268 │
00:04:18 v #2552 > > │ 60398589b71ed6c0ead7c88c95627e5b090b93964e0a303daff1ef3cf/af524e22-8e9a-5d18 │
00:04:18 v #2553 > > │ -99ed-bd86e1b74623/test.dib" --output-path                                   │
00:04:18 v #2554 > > │ "c:/Users/i574n/AppData/Local/Temp/!create_temp_path_/spiral_builder_680d268 │
00:04:18 v #2555 > > │ 60398589b71ed6c0ead7c88c95627e5b090b93964e0a303daff1ef3cf/af524e22-8e9a-5d18 │
00:04:18 v #2556 > > │ -99ed-bd86e1b74623/test.dib.ipynb"; cancellation_token = None;               │
00:04:18 v #2557 > > │ environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"),           │
00:04:18 v #2558 > > │ ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false;      │
00:04:18 v #2559 > > │ working_directory = None } }                                                 │
00:04:18 v #2560 > > │ >                                                                            │
00:04:18 v #2561 > > │ > ── fsharp                                                                  │
00:04:18 v #2562 > > │ ──────────────────────────────────────────────────────────────────────       │
00:04:18 v #2563 > > │ > 3 - 6                                                                      │
00:04:18 v #2564 > > │ >                                                                            │
00:04:18 v #2565 > > │ > ╭─[ 3.98s - return va....dib.html                                          │
00:04:18 v #2566 > > │ 00:00:07 v #11 runtime.execute_with_options / result / { exit_code =   │
00:04:18 v #2567 > > │ 0; std_trace_length = 1126 }                                                 │
00:04:18 v #2568 > > │ 00:00:07 d #12 spiral_builder.run / dib / jupyter nbconvert / {        │
00:04:18 v #2569 > > │ exit_code = 0; jupyter_result_length = 1126 }                                │
00:04:18 v #2570 > > │ 00:00:07 d #13 runtime.execute_with_options / { file_name = pwsh;      │
00:04:18 v #2571 > > │ arguments = ["-c", "$counter = 1; $path =                                    │
00:04:18 v #2572 > > │ 'c:/Users/i574n/AppData/Local/Temp/!create_temp_path_/spiral_builder_680d268 │
00:04:18 v #2573 > > │ 60398589b71ed6c0ead7c88c95627e5b090b93964e0a303daff1ef3cf/af524e22-8e9a-5d18 │
00:04:18 v #2574 > > │ -99ed-bd86e1b74623/test.dib.html'; (Get-Content $path -Raw) -replace         │
00:04:18 v #2575 > > │ '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } |     │
00:04:18 v #2576 > > │ Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path =    │
00:04:18 v #2577 > > │ 'c:/Users/i574n/AppData/Local/Temp/!create_temp_path_/spiral_builder_680d268 │
00:04:18 v #2578 > > │ 60398589b71ed6c0ead7c88c95627e5b090b93964e0a303daff1ef3cf/af524e22-8e9a-5d18 │
00:04:18 v #2579 > > │ -99ed-bd86e1b74623/test.dib.html'; (Get-Content $path -Raw) -replace         │
00:04:18 v #2580 > > │ '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } |       │
00:04:18 v #2581 > > │ Set-Content $path"; cancellation_token = None; environment_variables =       │
00:04:18 v #2582 > > │ Array(MutCell([])); on_line = None; stdin = None; trace = true;              │
00:04:18 v #2583 > > │ working_directory = None } }                                                 │
00:04:18 v #2584 > > │ 00:00:08 v #14 runtime.execute_with_options / result / { exit_code =   │
00:04:18 v #2585 > > │ 0; std_trace_length = 0 }                                                    │
00:04:18 v #2586 > > │ 00:00:08 d #15 spiral_builder.run / dib / html cell ids / { exit_code  │
00:04:18 v #2587 > > │ = 0; pwsh_replace_html_result_length = 0 }                                   │
00:04:18 v #2588 > > │ 00:00:08 d #16 spiral_builder.run / dib / { exit_code = 0;             │
00:04:18 v #2589 > > │ result_length = 4108 }                                                       │
00:04:18 v #2590 > > │                                                                              │
00:04:18 v #2591 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:04:18 v #2592 > >
00:04:18 v #2593 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:18 v #2594 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:04:18 v #2595 > > │ ## tests                                                                     │
00:04:18 v #2596 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:04:18 v #2597 > >
00:04:18 v #2598 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:18 v #2599 > > inl tests () =
00:04:18 v #2600 > >     testing.run_tests {
00:04:18 v #2601 > >         verify_app = get_command >> runtime.command_debug_assert
00:04:18 v #2602 > >     }
00:04:19 v #2603 > >
00:04:19 v #2604 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:19 v #2605 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:04:19 v #2606 > > │ ## main                                                                      │
00:04:19 v #2607 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:04:19 v #2608 > >
00:04:19 v #2609 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:19 v #2610 > > ///! _
00:04:19 v #2611 > >
00:04:19 v #2612 > > inl main (args : array_base string) =
00:04:19 v #2613 > >     inl trace_state = get_trace_state_or_init None
00:04:19 v #2614 > >
00:04:19 v #2615 > >     trace Debug
00:04:19 v #2616 > >         fun () => "spiral_builder.main"
00:04:19 v #2617 > >         fun () => { args }
00:04:19 v #2618 > >
00:04:19 v #2619 > >     inl command = get_command ()
00:04:19 v #2620 > >     inl arg_matches = command |> runtime.command_get_matches
00:04:19 v #2621 > >
00:04:19 v #2622 > >     inl trace_state_level = trace_state.level
00:04:19 v #2623 > >
00:04:19 v #2624 > >     inl result =
00:04:19 v #2625 > >         arg_matches
00:04:19 v #2626 > >         |> run *trace_state_level
00:04:19 v #2627 > >         |> async.block_on_futures
00:04:19 v #2628 > >         |> resultm.unwrap'
00:04:19 v #2629 > >
00:04:19 v #2630 > >     if *trace_state_level = Info
00:04:19 v #2631 > >     then result |> console.write_line
00:04:19 v #2632 > >
00:04:19 v #2633 > >     0i32
00:04:19 v #2634 > >
00:04:19 v #2635 > > inl main () =
00:04:19 v #2636 > >     $'let tests () = !tests ()' : ()
00:04:19 v #2637 > >     $'let main args = !main args' : ()
00:04:24 v #2638 > 00:04:22 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 113537 }
00:04:24 v #2639 > 00:04:22 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/polyglot/apps/spiral/builder/spiral_builder.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/polyglot/apps/spiral/builder/spiral_builder.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:04:25 v #2640 > 00:04:23 v #5 ! [NbConvertApp] Converting notebook c:/home/git/polyglot/apps/spiral/builder/spiral_builder.dib.ipynb to html
00:04:25 v #2641 > 00:04:23 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:04:25 v #2642 > 00:04:23 v #7 !   validate(nb)
00:04:26 v #2643 > 00:04:24 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:04:26 v #2644 > 00:04:24 v #9 !   return _pygments_highlight(
00:04:28 v #2645 > 00:04:26 v #10 ! [NbConvertApp] Writing 601756 bytes to c:\home\git\polyglot\apps\spiral\builder\spiral_builder.dib.html
00:04:28 v #2646 > 00:04:26 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 888 }
00:04:28 v #2647 > 00:04:26 d #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 888 }
00:04:28 v #2648 > 00:04:26 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/polyglot/apps/spiral/builder/spiral_builder.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/polyglot/apps/spiral/builder/spiral_builder.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:04:28 v #2649 > 00:04:27 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:04:28 v #2650 > 00:04:27 d #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:04:28 v #2651 > 00:04:27 d #16 spiral_builder.run / dib / { exit_code = 0; result_length = 114484 }
00:04:28 d #2652 runtime.execute_with_options_async / { exit_code = 0; output_length = 122435 }
00:04:28 d #3 main / executeCommand / exitCode: 0 / command: ../../../workspace/target/release/spiral_builder.exe dib --path spiral_builder.dib
00:04:28 v #5 async.run_with_timeout_async / { timeout = 100 }
00:00:00 d #1 writeDibCode / output: Spi / path: spiral_builder.dib
00:00:00 d #2 parseDibCode / output: Spi / file: spiral_builder.dib
00:00:00 v #1 async.run_with_timeout_async / { timeout = 180 }
00:00:00 d #1 runtime.execute_with_options_async / { file_name = dotnet; arguments = US5_0
  ""C:\home\git\polyglot\deps\The-Spiral-Language\The Spiral Language 2\artifacts\bin\The Spiral Language 2\release\Spiral.dll" --port 13805 --default-int i32 --default-float f64"; options = { command = dotnet "C:\home\git\polyglot\deps\The-Spiral-Language\The Spiral Language 2\artifacts\bin\The Spiral Language 2\release\Spiral.dll" --port 13805 --default-int i32 --default-float f64; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = Some <fun:main@595-7>; stdin = None; trace = true; working_directory = Some "C:\home\git\polyglot" } }
00:00:00 v #2 > 00:00:00 d #1 pwd: C:\home\git\polyglot
00:00:00 v #3 > 00:00:00 d #2 dllPath: C:\home\git\polyglot\deps\The-Spiral-Language\The Spiral Language 2\artifacts\bin\The Spiral Language 2\release
00:00:00 v #4 > 00:00:00 d #3 targetDir: C:\home\git\polyglot\target/spiral_Eval
00:00:01 v #2 async.run_with_timeout_async / { timeout = 100 }
00:00:01 v #3 async.run_with_timeout_async / { timeout = 100 }
00:00:01 v #5 > Starting the Spiral Server. It is bound to: http://localhost:13805
00:00:01 v #4 async.run_with_timeout_async / { timeout = 100 }
00:00:01 v #1 Supervisor.sendJson / port: 13805 / json: {"Ping":true} / result:
00:00:01 v #2 Supervisor.awaitCompiler / Ping / result: 'Some null' / port: 13805 / retry: 1
00:00:01 v #6 > Server bound to: http://localhost:13805
00:00:01 v #5 async.run_with_timeout_async / { timeout = 180 }
00:00:02 d #3 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: spiral_builder.spi
00:00:02 d #4 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: spiral_builder.spi
00:00:02 d #5 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: spiral_builder.spi
00:00:02 v #6 Supervisor.sendJson / port: 13805 / json: {"FileOpen":{"spiText":"/// # spiral_builder\nopen file_system_operators\nopen rust.rust_operators\n...ain args\u0027 : ()\n","uri":"file:///c:/home/git/polyglot/apps/spiral/builder/spiral_builder.spi"}} / result:
00:00:02 v #7 Supervisor.sendJson / port: 13805 / json: {"BuildFile":{"backend":"Fsharp","uri":"file:///c:/home/git/polyglot/apps/spiral/builder/spiral_builder.spi"}} / result:
00:00:02 d #8 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: spiral_builder.spi
00:00:02 d #9 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: spiral_builder.spi
00:00:03 d #10 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: spiral_builder.spi
00:00:03 d #11 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: spiral_builder.spi
00:00:03 d #12 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: spiral_builder.spi
00:00:03 d #13 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: spiral_builder.spi
00:00:04 d #14 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: spiral_builder.spi
00:00:04 d #15 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: spiral_builder.spi
00:00:04 d #16 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: spiral_builder.spi
00:00:04 d #17 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: spiral_builder.spi
00:00:05 d #18 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: spiral_builder.spi
00:00:05 d #19 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: spiral_builder.spi
00:00:05 d #20 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: spiral_builder.spi
00:00:05 d #21 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: spiral_builder.spi
00:00:06 d #22 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: spiral_builder.spi
00:00:06 d #23 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: spiral_builder.spi
00:00:06 d #24 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: spiral_builder.spi
00:00:06 d #25 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: spiral_builder.spi
00:00:07 d #26 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: spiral_builder.spi
00:00:07 d #27 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: spiral_builder.spi
00:00:07 d #28 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: spiral_builder.spi
00:00:07 d #29 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: spiral_builder.spi
00:00:08 d #30 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: spiral_builder.spi
00:00:08 d #31 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: spiral_builder.spi
00:00:08 d #32 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: spiral_builder.spi
00:00:08 d #33 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: spiral_builder.spi
00:00:09 d #34 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: spiral_builder.spi
00:00:09 d #35 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: spiral_builder.spi
00:00:09 d #36 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: spiral_builder.spi
00:00:09 d #37 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: spiral_builder.spi
00:00:10 d #38 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: spiral_builder.spi
00:00:10 d #39 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: spiral_builder.spi
00:00:10 d #40 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: spiral_builder.spi
00:00:10 d #41 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: spiral_builder.spi
00:00:11 d #42 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: spiral_builder.spi
00:00:11 d #43 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: spiral_builder.spi
00:00:11 d #44 Supervisor.buildFile / AsyncSeq.scan / outputContent:
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("&$0")>]
type Ref<'T> = class end
#else
type Ref<'T> = 'T
#endif

#if FABLE_COMPILER
[<Fable.Co...()
        ()
    0
let v0 : (unit -> unit) = closure0()
let tests () = v0 ()
let v1 : ((string []) -> int32) = closure1()
let main args = v1 args
()
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: spiral_builder.spi
00:00:11 d #45 Supervisor.buildFile / takeWhileInclusive / outputContent:
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("&$0")>]
type Ref<'T> = class end
#else
type Ref<'T> = 'T
#endif

#if FABLE_COMPILER
[<Fable.Co...()
        ()
    0
let v0 : (unit -> unit) = closure0()
let tests () = v0 ()
let v1 : ((string []) -> int32) = closure1()
let main args = v1 args
()
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: spiral_builder.spi
00:00:11 d #46 FileSystem.watchWithFilter / Disposing watch stream / filter: FileName, LastWrite
00:00:11 v #6 async.run_with_timeout_async / { timeout = 100 }
00:00:00 d #1 persistCodeProject / packages: [Fable.Core] / modules: [lib/spiral/common.fsx; lib/spiral/sm.fsx; lib/spiral/crypto.fsx; ... ] / name: spiral_builder / hash:  / code.Length: 1423691
targetDir: C:\home\git\polyglot\target\Builder\spiral_builder
Fable 4.21.0: F# to Rust compiler (status: alpha)

Thanks to the contributor! @jbeeko
Stand with Ukraine! https://standwithukraine.com.ua/

Parsing target\Builder\spiral_builder\spiral_builder.fsproj...
Retrieving project options from cache, in case of issues run `dotnet fable clean` or try `--noCache` option.
Project and references (14 source files) parsed in 203ms

Started Fable compilation...

Fable compilation finished in 14027ms

.\lib\spiral\common.fsx(2015,0): (2015,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
.\lib\spiral\sm.fsx(517,0): (517,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
.\lib\spiral\crypto.fsx(2239,0): (2239,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
.\lib\spiral\date_time.fsx(1613,0): (1613,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
.\lib\spiral\async_.fsx(146,0): (146,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
.\lib\spiral\threading.fsx(140,0): (140,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
.\lib\spiral\networking.fsx(20552,0): (20552,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
.\lib\spiral\platform.fsx(116,0): (116,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
.\lib\spiral\runtime.fsx(9265,0): (9265,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
.\lib\spiral\file_system.fsx(35073,0): (35073,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
.\lib\spiral\trace.fsx(2052,0): (2052,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
   Compiling fable_library_rust v0.1.0 (C:\home\git\polyglot\lib\rust\fable\fable_modules\fable-library-rust)
   Compiling spiral_builder v0.0.1 (C:\home\git\polyglot\apps\spiral\builder)
    Finished `release` profile [optimized] target(s) in 22.26s
     Running unittests spiral_builder.rs (C:\home\git\polyglot\workspace\target\release\deps\spiral_builder-1946bf53ea519377.exe)

running 1 test
test module_7e2cd9e0::Spiral_builder::verify_app ... ok

successes:

successes:
    module_7e2cd9e0::Spiral_builder::verify_app

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Compiling fable_library_rust v0.1.0 (C:\home\git\polyglot\lib\rust\fable\fable_modules\fable-library-rust)
   Compiling spiral_builder v0.0.1 (C:\home\git\polyglot\apps\spiral\builder)
error: failed to remove file `C:\home\git\polyglot\workspace\target\release\spiral_builder.exe`

Caused by:
  Access is denied. (os error 5)

# Invoke-Block / $retry: 1/1 / $Location:  / Get-Location: C:\home\git\polyglot\apps\spiral\builder / $OnError: Continue / $exitcode: 101 / $EnvVars: {
  "PATH": "C:\\Users\\i574n\\scoop\\apps\\pwsh\\current;C:\\Program Files\\NVIDIA\\CUDNN\\v9.1\\bin;C:\\ProgramData\\scoop\\shims;C:\\WINDOWS\\system32;C:\\WINDOWS;C:\\WINDOWS\\System32\\Wbem;C:\\WINDOWS\\System32\\WindowsPowerShell\\v1.0\\;C:\\WINDOWS\\System32\\OpenSSH\\;C:\\ProgramData\\chocolatey\\bin;C:\\Program Files\\dotnet\\;C:\\WINDOWS\\system32;C:\\WINDOWS;C:\\WINDOWS\\System32\\Wbem;C:\\WINDOWS\\System32\\WindowsPowerShell\\v1.0\\;C:\\WINDOWS\\System32\\OpenSSH\\;C:\\Program Files\\Intel\\WiFi\\bin\\;C:\\Program Files\\Common Files\\Intel\\WirelessCommon\\;C:\\Program Files\\Perforce;C:\\Program Files\\Wasmtime\\bin;C:\\Program Files\\Perforce\\;C:\\Users\\i574n\\scoop\\apps\\vscode-insiders\\current\\bin;C:\\Users\\i574n\\scoop\\apps\\haskell\\current\\lib\\bin;C:\\Users\\i574n\\scoop\\apps\\python312\\current\\Scripts;C:\\Users\\i574n\\scoop\\apps\\python312\\current\\.;C:\\Users\\i574n\\scoop\\apps\\perl\\current\\perl\\site\\bin;C:\\Users\\i574n\\scoop\\apps\\perl\\current\\perl\\bin;C:\\Users\\i574n\\scoop\\apps\\elixir\\current\\bin;C:\\Users\\i574n\\scoop\\apps\\rustup\\current\\.cargo\\bin;C:\\Users\\i574n\\scoop\\apps\\latex\\current\\texmfs\\install\\miktex\\bin\\x64;C:\\Users\\i574n\\scoop\\apps\\dotnet-sdk-preview\\current;C:\\Users\\i574n\\scoop\\apps\\dotnet-sdk\\current;C:\\Users\\i574n\\scoop\\apps\\gsudo\\current;C:\\Users\\i574n\\scoop\\apps\\python\\current;C:\\Users\\i574n\\scoop\\apps\\nircmd\\current;C:\\Users\\i574n\\AppData\\Local\\Microsoft\\WindowsApps;C:\\Users\\i574n/scoop/buckets/mold/home/windows/path;C:\\Users\\i574n/scoop/persist/rustup/.cargo/bin;C:\\Users\\i574n/scoop/apps/nvm/current/nodejs/nodejs;C:\\Users\\i574n/scoop/apps/cygwin/current/root/bin;C:\\Users\\i574n\\AppData\\Local\\Programs\\Microsoft VS Code\\bin;C:\\Users\\i574n\\AppData\\Local\\Microsoft\\WindowsApps;C:\\Users\\i574n\\.bun\\bin;C:\\Users\\i574n\\.dotnet\\tools;C:\\Users\\i574n\\scoop\\shims;C:\\Users\\i574n\\.fly\\bin;C:\\Program Files\\Wasmtime\\bin;C:\\Users\\i574n/.cargo/bin;C:\\Users\\i574n/.bun/bin;C:\\Users\\i574n/.cargo/bin;C:\\Users\\i574n/.bun/bin;C:\\Users\\i574n/.cargo/bin;C:\\Users\\i574n/.bun/bin"
} / $Error: '' / $ScriptBlock:
'cargo build --release'

In [ ]:
{ pwsh ../apps/spiral/wasm/build.ps1 } | Invoke-Block
00:00:00 v #1 async.run_with_timeout_async / { timeout = 180 }
00:00:00 d #1 runtime.execute_with_options_async / { file_name = dotnet; arguments = US5_0
  ""C:\home\git\polyglot\deps\The-Spiral-Language\The Spiral Language 2\artifacts\bin\The Spiral Language 2\release\Spiral.dll" --port 13805 --default-int i32 --default-float f64"; options = { command = dotnet "C:\home\git\polyglot\deps\The-Spiral-Language\The Spiral Language 2\artifacts\bin\The Spiral Language 2\release\Spiral.dll" --port 13805 --default-int i32 --default-float f64; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = Some <fun:main@595-7>; stdin = None; trace = true; working_directory = Some "C:\home\git\polyglot" } }
00:00:00 v #2 > 00:00:00 d #1 pwd: C:\home\git\polyglot
00:00:00 v #3 > 00:00:00 d #2 dllPath: C:\home\git\polyglot\deps\The-Spiral-Language\The Spiral Language 2\artifacts\bin\The Spiral Language 2\release
00:00:00 v #4 > 00:00:00 d #3 targetDir: C:\home\git\polyglot\target/spiral_Eval
00:00:01 v #2 async.run_with_timeout_async / { timeout = 100 }
00:00:01 v #3 async.run_with_timeout_async / { timeout = 100 }
00:00:01 v #5 > Starting the Spiral Server. It is bound to: http://localhost:13805
00:00:01 v #4 async.run_with_timeout_async / { timeout = 100 }
00:00:01 v #1 Supervisor.sendJson / port: 13805 / json: {"Ping":true} / result:
00:00:01 v #2 Supervisor.awaitCompiler / Ping / result: 'Some null' / port: 13805 / retry: 1
00:00:01 v #6 > Server bound to: http://localhost:13805
00:00:01 d #7 runtime.execute_with_options_async / { file_name = ../../../workspace/target/release/spiral_builder.exe; arguments = US5_0 "dib --path spiral_wasm.dib"; options = { command = ../../../workspace/target/release/spiral_builder.exe dib --path spiral_wasm.dib; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:00:01 v #8 > 00:00:00 d #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "spiral_wasm.dib"])) }
00:00:01 v #9 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/polyglot/apps/spiral/wasm/spiral_wasm.dib", "--output-path", "c:/home/git/polyglot/apps/spiral/wasm/spiral_wasm.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/polyglot/apps/spiral/wasm/spiral_wasm.dib" --output-path "c:/home/git/polyglot/apps/spiral/wasm/spiral_wasm.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:00:03 v #10 > >
00:00:03 v #11 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:03 v #12 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:03 v #13 > > │ # spiral_wasm                                                                │
00:00:03 v #14 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 v #15 > >
00:00:07 v #16 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:07 v #17 > > open rust.rust_operators
00:00:07 v #18 > > open rust
00:00:07 v #19 > > open sm'_operators
00:00:11 v #20 > >
00:00:11 v #21 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:11 v #22 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:11 v #23 > > │ ## spiral_wasm                                                               │
00:00:11 v #24 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:11 v #25 > >
00:00:11 v #26 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:11 v #27 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:11 v #28 > > │ ### get_args                                                                 │
00:00:11 v #29 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:11 v #30 > >
00:00:11 v #31 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:11 v #32 > > inl get_args () =
00:00:11 v #33 > >     {
00:00:11 v #34 > >         exception = "exception", 'e'
00:00:11 v #35 > >         trace_level = "trace_level", 't'
00:00:11 v #36 > >         wasm = "wasm", 'w'
00:00:11 v #37 > >     }
00:00:11 v #38 > >
00:00:11 v #39 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:11 v #40 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:11 v #41 > > │ ### get_command                                                              │
00:00:11 v #42 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:11 v #43 > >
00:00:11 v #44 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:11 v #45 > > let get_command () =
00:00:11 v #46 > >     ##"command"
00:00:11 v #47 > >     |> runtime.new_command
00:00:11 v #48 > >     |> runtime.command_args_override_self true
00:00:11 v #49 > >     |> runtime.command_init_arg (get_args () .exception) (
00:00:11 v #50 > >         runtime.arg_num_args_range (
00:00:11 v #51 > >             runtime.new_value_range
00:00:11 v #52 > >                 true
00:00:11 v #53 > >                 (am'.End id)
00:00:11 v #54 > >                 (am'.End fun _ => (1i32 |> convert : unativeint))
00:00:11 v #55 > >         )
00:00:11 v #56 > >         >> runtime.arg_require_equals true
00:00:11 v #57 > >         >> runtime.arg_default_missing_value ""
00:00:11 v #58 > >     )
00:00:11 v #59 > >     |> runtime.command_init_arg (get_args () .trace_level) (
00:00:11 v #60 > >         real runtime.arg_union `trace_level ignore
00:00:11 v #61 > >     )
00:00:11 v #62 > >     |> runtime.command_init_arg (get_args () .wasm) (
00:00:11 v #63 > >         runtime.arg_required true
00:00:11 v #64 > >     )
00:00:12 v #65 > >
00:00:12 v #66 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:12 v #67 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:12 v #68 > > │ ### run                                                                      │
00:00:12 v #69 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:12 v #70 > >
00:00:12 v #71 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:12 v #72 > > let rec run
00:00:12 v #73 > >     (matches : runtime.arg_matches)
00:00:12 v #74 > >     : async.future_pin (
00:00:12 v #75 > >         resultm.result'
00:00:12 v #76 > >             u8
00:00:12 v #77 > >             resultm.anyhow_error
00:00:12 v #78 > >     )
00:00:12 v #79 > >     =
00:00:12 v #80 > >     fun () =>
00:00:12 v #81 > >         inl wasm_path =
00:00:12 v #82 > >             matches
00:00:12 v #83 > >             |> runtime.matches_get_one (get_args () .wasm |> fst)
00:00:12 v #84 > >             |> optionm'.unbox
00:00:12 v #85 > >             |> optionm.value
00:00:12 v #86 > >             |> sm'.from_std_string
00:00:12 v #87 > >
00:00:12 v #88 > >         trace Verbose (fun () => "spiral_wasm.run") fun () => { wasm_path }
00:00:12 v #89 > >
00:00:12 v #90 > >         inl wasm = wasm_path |> file_system.read |> resultm.try'
00:00:12 v #91 > >
00:00:12 v #92 > >         let fn (retry : u8) =
00:00:12 v #93 > >             fun () =>
00:00:12 v #94 > >                 inl worker = near_workspaces.sandbox_worker () |> resultm.try'
00:00:12 v #95 > >                 inl contract = worker |> near_workspaces.dev_deploy wasm |>
00:00:12 v #96 > > async.await |> resultm.try'
00:00:12 v #97 > >
00:00:12 v #98 > >                 trace Verbose (fun () => "spiral_wasm.run") fun () => { retry
00:00:12 v #99 > > worker contract }
00:00:12 v #100 > >
00:00:12 v #101 > >                 inl result =
00:00:12 v #102 > >                     contract
00:00:12 v #103 > >                     |> near_workspaces.call "state_main"
00:00:12 v #104 > >                     |> near_workspaces.gas (near_workspaces.from_tgas 300)
00:00:12 v #105 > >                     |> near_workspaces.transact
00:00:12 v #106 > >                     |> async.await
00:00:12 v #107 > >                     |> resultm.try'
00:00:12 v #108 > >
00:00:12 v #109 > >                 trace Verbose (fun () => "spiral_wasm.run") fun () => { retry
00:00:12 v #110 > > result }
00:00:12 v #111 > >
00:00:12 v #112 > >                 result
00:00:12 v #113 > >                 |> near_workspaces.logs
00:00:12 v #114 > >                 |> am'.vec_map sm'.ref_to_std_string
00:00:12 v #115 > >                 |> am'.vec_for_each console.write_line
00:00:12 v #116 > >
00:00:12 v #117 > >                 trace_raw Info (fun () => " ")
00:00:12 v #118 > >                 result |> near_workspaces.print_usd retry
00:00:12 v #119 > >
00:00:12 v #120 > >                 inl result2 = result |> near_workspaces.into_result
00:00:12 v #121 > >
00:00:12 v #122 > >                 trace Verbose (fun () => "spiral_wasm.run") fun () => { result2
00:00:12 v #123 > > }
00:00:12 v #124 > >
00:00:12 v #125 > >                 inl receipt_failures = result |>
00:00:12 v #126 > > near_workspaces.receipt_failures
00:00:12 v #127 > >                 inl receipt_failures_len = receipt_failures |> am'.vec_len |>
00:00:12 v #128 > > i32
00:00:12 v #129 > >
00:00:12 v #130 > >                 trace Verbose
00:00:12 v #131 > >                     fun () => "spiral_wasm.run"
00:00:12 v #132 > >                     fun () => { receipt_failures_len receipt_failures }
00:00:12 v #133 > >
00:00:12 v #134 > >                 inl receipt_outcomes = result |>
00:00:12 v #135 > > near_workspaces.receipt_outcomes
00:00:12 v #136 > >                 inl receipt_outcomes_len = receipt_outcomes |> am'.vec_len |>
00:00:12 v #137 > > i32
00:00:12 v #138 > >
00:00:12 v #139 > >                 trace Verbose
00:00:12 v #140 > >                     fun () => "spiral_wasm.run"
00:00:12 v #141 > >                     fun () => { receipt_outcomes_len receipt_outcomes }
00:00:12 v #142 > >
00:00:12 v #143 > >                 inl json = result |> near_workspaces.json
00:00:12 v #144 > >
00:00:12 v #145 > >                 trace Verbose (fun () => "spiral_wasm.run") fun () => { json }
00:00:12 v #146 > >
00:00:12 v #147 > >                 inl borsh = result |> near_workspaces.borsh
00:00:12 v #148 > >
00:00:12 v #149 > >                 trace Verbose (fun () => "spiral_wasm.run") fun () => { borsh }
00:00:12 v #150 > >
00:00:12 v #151 > >                 inl error = { receipt_outcomes_len retry receipt_failures } |>
00:00:12 v #152 > > sm'.format
00:00:12 v #153 > >                 if receipt_failures_len > 0
00:00:12 v #154 > >                 then (Ok (Some error) : _ _ resultm.anyhow_error) |> resultm.box
00:00:12 v #155 > >                 elif receipt_outcomes_len > 1
00:00:12 v #156 > >                 then (Ok None : _ _ resultm.anyhow_error) |> resultm.box
00:00:12 v #157 > >                 else error |> resultm.anyhow_error |> resultm.err
00:00:12 v #158 > >             |> async.new_future_move
00:00:12 v #159 > >
00:00:12 v #160 > >         let rec loop (retry : u8) =
00:00:12 v #161 > >             inl max = 15
00:00:12 v #162 > >             inl init (error : _ string) =
00:00:12 v #163 > >                 fun () =>
00:00:12 v #164 > >                     { retry error }
00:00:12 v #165 > >                 |> async.new_future_move
00:00:12 v #166 > >             fun () =>
00:00:12 v #167 > >                 inl result =
00:00:12 v #168 > >                     fn retry
00:00:12 v #169 > >                     |> async.await
00:00:12 v #170 > >                     |> resultm.map_error' sm'.format'
00:00:12 v #171 > >                     |> resultm.unbox
00:00:12 v #172 > >                 match result with
00:00:12 v #173 > >                 | Ok (None) =>
00:00:12 v #174 > >                     init None
00:00:12 v #175 > >                     |> async.await
00:00:12 v #176 > >                     |> Ok
00:00:12 v #177 > >                 | Ok (Some error) =>
00:00:12 v #178 > >                     trace Critical (fun () => "spiral_wasm.run / Ok (Some
00:00:12 v #179 > > error)") fun () => { retry error }
00:00:12 v #180 > >                     init (Some error)
00:00:12 v #181 > >                     |> async.await
00:00:12 v #182 > >                     |> Error
00:00:12 v #183 > >                 | Error error when retry >= max =>
00:00:12 v #184 > >                     trace Warning (fun () => "spiral_wasm.run / Error error")
00:00:12 v #185 > > fun () => { retry error }
00:00:12 v #186 > >                     trace_raw Warning (fun () => "\n")
00:00:12 v #187 > >                     init None
00:00:12 v #188 > >                     |> async.await
00:00:12 v #189 > >                     |> Ok
00:00:12 v #190 > >                 | Error error =>
00:00:12 v #191 > >                     trace Warning (fun () => "spiral_wasm.run / Error error")
00:00:12 v #192 > > fun () => { retry error }
00:00:12 v #193 > >                     trace_raw Warning (fun () => "\n")
00:00:12 v #194 > >                     loop (retry + 1) |> async.await
00:00:12 v #195 > >             |> async.new_future_move
00:00:12 v #196 > >         inl retries = loop 1 |> async.await
00:00:12 v #197 > >
00:00:12 v #198 > >         trace Verbose (fun () => "spiral_wasm.run") fun () => { retries }
00:00:12 v #199 > >
00:00:12 v #200 > >         match retries with
00:00:12 v #201 > >         | Ok { retry } => Ok retry |> resultm.box
00:00:12 v #202 > >         | Error { retry error } => { retries error } |> sm'.format |>
00:00:12 v #203 > > resultm.anyhow_error |> resultm.err
00:00:12 v #204 > >
00:00:12 v #205 > >     |> async.new_future_move
00:00:12 v #206 > >
00:00:12 v #207 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:12 v #208 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:12 v #209 > > │ ### main                                                                     │
00:00:12 v #210 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:12 v #211 > >
00:00:12 v #212 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:12 v #213 > > ///! _
00:00:12 v #214 > >
00:00:12 v #215 > > inl main (args : array_base string) =
00:00:12 v #216 > >     inl command = get_command ()
00:00:12 v #217 > >     inl arg_matches = command |> runtime.command_get_matches
00:00:12 v #218 > >
00:00:12 v #219 > >     inl trace_level =
00:00:12 v #220 > >         arg_matches
00:00:12 v #221 > >         |> runtime.matches_get_one (get_args () .trace_level |> fst)
00:00:12 v #222 > >         |> optionm'.unbox
00:00:12 v #223 > >         |> optionm.map (
00:00:12 v #224 > >             sm'.from_std_string
00:00:12 v #225 > >             >> reflection.union_try_pick
00:00:12 v #226 > >         )
00:00:12 v #227 > >         |> optionm'.flatten
00:00:12 v #228 > >         |> optionm'.default_value Verbose
00:00:12 v #229 > >
00:00:12 v #230 > >     inl trace_state = get_trace_state_or_init (Some trace_level)
00:00:12 v #231 > >
00:00:12 v #232 > >     trace Verbose
00:00:12 v #233 > >         fun () => "spiral_wasm.main"
00:00:12 v #234 > >         fun () => { args }
00:00:12 v #235 > >
00:00:12 v #236 > >     inl exception =
00:00:12 v #237 > >         arg_matches
00:00:12 v #238 > >         |> runtime.matches_get_one (get_args () .exception |> fst)
00:00:12 v #239 > >         |> optionm'.map (sm'.from_std_string >> sm'.trim_start [[ '\\' ]] >>
00:00:12 v #240 > > sm'.trim_end [[ '\\' ]])
00:00:12 v #241 > >         |> optionm'.unbox
00:00:12 v #242 > >
00:00:12 v #243 > >     inl result =
00:00:12 v #244 > >         arg_matches
00:00:12 v #245 > >         |> run
00:00:12 v #246 > >         |> async.block_on_tokio
00:00:12 v #247 > >         |> resultm.map_error' sm'.format'
00:00:12 v #248 > >
00:00:12 v #249 > >     match result |> resultm.unbox, exception with
00:00:12 v #250 > >     | Ok retries, Some exception =>
00:00:12 v #251 > >         ($'$"spiral_wasm.main / retries: {!retries} / exception:
00:00:12 v #252 > > \'{!exception}\'"' : string)
00:00:12 v #253 > >         |> resultm.err |> resultm.unwrap'
00:00:12 v #254 > >     | Error _error, Some ("") =>
00:00:12 v #255 > >         ()
00:00:12 v #256 > >     | Error error, Some exception when error |> sm'.from_std_string |>
00:00:12 v #257 > > sm'.contains exception =>
00:00:12 v #258 > >         ()
00:00:12 v #259 > >     | Error error, Some exception =>
00:00:12 v #260 > >         ($'$"spiral_wasm.main / exception: \'{!exception}\' / error: {!error}"'
00:00:12 v #261 > > : string)
00:00:12 v #262 > >         |> resultm.err |> resultm.unwrap'
00:00:12 v #263 > >     | Ok _retries, _ =>
00:00:12 v #264 > >         ()
00:00:12 v #265 > >     | Error _error, _ =>
00:00:12 v #266 > >         result |> resultm.unwrap' |> ignore
00:00:12 v #267 > >
00:00:12 v #268 > >     0i32
00:00:12 v #269 > >
00:00:12 v #270 > > inl main () =
00:00:12 v #271 > >     $'let main args = !main args' : ()
00:00:14 v #272 > 00:00:12 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 9685 }
00:00:14 v #273 > 00:00:12 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/polyglot/apps/spiral/wasm/spiral_wasm.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/polyglot/apps/spiral/wasm/spiral_wasm.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:00:16 v #274 > 00:00:14 v #5 ! [NbConvertApp] Converting notebook c:/home/git/polyglot/apps/spiral/wasm/spiral_wasm.dib.ipynb to html
00:00:16 v #275 > 00:00:14 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:00:16 v #276 > 00:00:14 v #7 !   validate(nb)
00:00:16 v #277 > 00:00:14 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:00:16 v #278 > 00:00:14 v #9 !   return _pygments_highlight(
00:00:16 v #279 > 00:00:15 v #10 ! [NbConvertApp] Writing 306844 bytes to c:\home\git\polyglot\apps\spiral\wasm\spiral_wasm.dib.html
00:00:17 v #280 > 00:00:15 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 876 }
00:00:17 v #281 > 00:00:15 d #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 876 }
00:00:17 v #282 > 00:00:15 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/polyglot/apps/spiral/wasm/spiral_wasm.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/polyglot/apps/spiral/wasm/spiral_wasm.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:00:17 v #283 > 00:00:15 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:00:17 v #284 > 00:00:15 d #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:00:17 v #285 > 00:00:15 d #16 spiral_builder.run / dib / { exit_code = 0; result_length = 10620 }
00:00:17 d #286 runtime.execute_with_options_async / { exit_code = 0; output_length = 13785 }
00:00:17 d #3 main / executeCommand / exitCode: 0 / command: ../../../workspace/target/release/spiral_builder.exe dib --path spiral_wasm.dib
00:00:17 v #5 async.run_with_timeout_async / { timeout = 100 }
00:00:00 d #1 writeDibCode / output: Spi / path: spiral_wasm.dib
00:00:00 d #2 parseDibCode / output: Spi / file: spiral_wasm.dib
00:00:00 v #1 async.run_with_timeout_async / { timeout = 180 }
00:00:00 d #1 runtime.execute_with_options_async / { file_name = dotnet; arguments = US5_0
  ""C:\home\git\polyglot\deps\The-Spiral-Language\The Spiral Language 2\artifacts\bin\The Spiral Language 2\release\Spiral.dll" --port 13805 --default-int i32 --default-float f64"; options = { command = dotnet "C:\home\git\polyglot\deps\The-Spiral-Language\The Spiral Language 2\artifacts\bin\The Spiral Language 2\release\Spiral.dll" --port 13805 --default-int i32 --default-float f64; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = Some <fun:main@595-7>; stdin = None; trace = true; working_directory = Some "C:\home\git\polyglot" } }
00:00:00 v #2 > 00:00:00 d #1 pwd: C:\home\git\polyglot
00:00:00 v #3 > 00:00:00 d #2 dllPath: C:\home\git\polyglot\deps\The-Spiral-Language\The Spiral Language 2\artifacts\bin\The Spiral Language 2\release
00:00:00 v #4 > 00:00:00 d #3 targetDir: C:\home\git\polyglot\target/spiral_Eval
00:00:01 v #2 async.run_with_timeout_async / { timeout = 100 }
00:00:01 v #5 > Starting the Spiral Server. It is bound to: http://localhost:13805
00:00:01 v #3 async.run_with_timeout_async / { timeout = 100 }
00:00:01 v #1 Supervisor.sendJson / port: 13805 / json: {"Ping":true} / result:
00:00:01 v #2 Supervisor.awaitCompiler / Ping / result: 'Some null' / port: 13805 / retry: 1
00:00:01 v #6 > Server bound to: http://localhost:13805
00:00:01 v #4 async.run_with_timeout_async / { timeout = 180 }
00:00:01 d #3 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: spiral_wasm.spi
00:00:01 d #4 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: spiral_wasm.spi
00:00:01 d #5 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: spiral_wasm.spi
00:00:02 v #6 Supervisor.sendJson / port: 13805 / json: {"FileOpen":{"spiText":"/// # spiral_wasm\nopen rust.rust_operators\nopen rust\nopen sm\u0027_operat...s = !main args\u0027 : ()\n","uri":"file:///c:/home/git/polyglot/apps/spiral/wasm/spiral_wasm.spi"}} / result:
00:00:02 v #7 Supervisor.sendJson / port: 13805 / json: {"BuildFile":{"backend":"Fsharp","uri":"file:///c:/home/git/polyglot/apps/spiral/wasm/spiral_wasm.spi"}} / result:
00:00:02 d #8 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: spiral_wasm.spi
00:00:02 d #9 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: spiral_wasm.spi
00:00:02 d #10 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: spiral_wasm.spi
00:00:02 d #11 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: spiral_wasm.spi
00:00:03 d #12 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: spiral_wasm.spi
00:00:03 d #13 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: spiral_wasm.spi
00:00:03 d #14 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: spiral_wasm.spi
00:00:03 d #15 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: spiral_wasm.spi
00:00:04 d #16 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: spiral_wasm.spi
00:00:04 d #17 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: spiral_wasm.spi
00:00:04 d #18 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: spiral_wasm.spi
00:00:04 d #19 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: spiral_wasm.spi
00:00:05 d #20 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: spiral_wasm.spi
00:00:05 d #21 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: spiral_wasm.spi
00:00:06 d #22 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: spiral_wasm.spi
00:00:06 d #23 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: spiral_wasm.spi
00:00:06 d #24 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: spiral_wasm.spi
00:00:06 d #25 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: spiral_wasm.spi
00:00:06 d #26 Supervisor.buildFile / AsyncSeq.scan / outputContent:
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("&$0")>]
type Ref<'T> = class end
#else
type Ref<'T> = 'T
#endif

#if FABLE_COMPILER
[<Fable.Co... #endif
            _v343 
            ()
        | _ ->
            ()
    0
let v0 : ((string []) -> int32) = closure0()
let main args = v0 args
()
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: spiral_wasm.spi
00:00:06 d #27 Supervisor.buildFile / takeWhileInclusive / outputContent:
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("&$0")>]
type Ref<'T> = class end
#else
type Ref<'T> = 'T
#endif

#if FABLE_COMPILER
[<Fable.Co... #endif
            _v343 
            ()
        | _ ->
            ()
    0
let v0 : ((string []) -> int32) = closure0()
let main args = v0 args
()
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: spiral_wasm.spi
00:00:06 d #28 FileSystem.watchWithFilter / Disposing watch stream / filter: FileName, LastWrite
00:00:06 v #5 async.run_with_timeout_async / { timeout = 100 }
00:00:00 d #1 persistCodeProject / packages: [Fable.Core] / modules: [lib/spiral/common.fsx; lib/spiral/sm.fsx; lib/spiral/crypto.fsx; ... ] / name: spiral_wasm / hash:  / code.Length: 216753
targetDir: C:\home\git\polyglot\target\Builder\spiral_wasm
Fable 4.21.0: F# to Rust compiler (status: alpha)

Thanks to the contributor! @josselinauguste
Stand with Ukraine! https://standwithukraine.com.ua/

Parsing target\Builder\spiral_wasm\spiral_wasm.fsproj...
Retrieving project options from cache, in case of issues run `dotnet fable clean` or try `--noCache` option.
Project and references (14 source files) parsed in 185ms

Started Fable compilation...

Fable compilation finished in 8094ms

.\lib\spiral\common.fsx(2015,0): (2015,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
.\lib\spiral\sm.fsx(517,0): (517,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
.\lib\spiral\crypto.fsx(2239,0): (2239,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
.\lib\spiral\date_time.fsx(1613,0): (1613,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
.\lib\spiral\async_.fsx(146,0): (146,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
.\lib\spiral\threading.fsx(140,0): (140,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
.\lib\spiral\networking.fsx(20552,0): (20552,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
.\lib\spiral\platform.fsx(116,0): (116,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
.\lib\spiral\runtime.fsx(9265,0): (9265,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
.\lib\spiral\file_system.fsx(35073,0): (35073,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
.\lib\spiral\trace.fsx(2052,0): (2052,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!

    Directory: C:\home\git\polyglot\target\Builder\spiral_wasm\target

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d----          2024-11-12  4:54 AM                rs
   Compiling fable_library_rust v0.1.0 (/mnt/c/home/git/polyglot/lib/rust/fable/fable_modules/fable-library-rust)
   Compiling spiral_wasm v0.0.1 (/mnt/c/home/git/polyglot/apps/spiral/wasm)
    Finished `release` profile [optimized] target(s) in 2m 06s

In [ ]:
{ pwsh ../lib/math/build.ps1 } | Invoke-Block
00:00:00 v #1 async.run_with_timeout_async / { timeout = 180 }
00:00:00 d #1 runtime.execute_with_options_async / { file_name = dotnet; arguments = US5_0
  ""C:\home\git\polyglot\deps\The-Spiral-Language\The Spiral Language 2\artifacts\bin\The Spiral Language 2\release\Spiral.dll" --port 13805 --default-int i32 --default-float f64"; options = { command = dotnet "C:\home\git\polyglot\deps\The-Spiral-Language\The Spiral Language 2\artifacts\bin\The Spiral Language 2\release\Spiral.dll" --port 13805 --default-int i32 --default-float f64; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = Some <fun:main@595-7>; stdin = None; trace = true; working_directory = Some "C:\home\git\polyglot" } }
00:00:01 v #2 > 00:00:00 d #1 pwd: C:\home\git\polyglot
00:00:01 v #3 > 00:00:00 d #2 dllPath: C:\home\git\polyglot\deps\The-Spiral-Language\The Spiral Language 2\artifacts\bin\The Spiral Language 2\release
00:00:01 v #4 > 00:00:00 d #3 targetDir: C:\home\git\polyglot\target/spiral_Eval
00:00:01 v #2 async.run_with_timeout_async / { timeout = 100 }
00:00:01 v #3 async.run_with_timeout_async / { timeout = 100 }
00:00:01 v #5 > Starting the Spiral Server. It is bound to: http://localhost:13805
00:00:01 v #4 async.run_with_timeout_async / { timeout = 100 }
00:00:01 v #1 Supervisor.sendJson / port: 13805 / json: {"Ping":true} / result:
00:00:01 v #2 Supervisor.awaitCompiler / Ping / result: 'Some null' / port: 13805 / retry: 1
00:00:01 v #6 > Server bound to: http://localhost:13805
00:00:01 d #7 runtime.execute_with_options_async / { file_name = ../../workspace/target/release/spiral_builder.exe; arguments = US5_0 "dib --path math.dib --retries 1"; options = { command = ../../workspace/target/release/spiral_builder.exe dib --path math.dib --retries 1; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:00:01 v #8 > 00:00:00 d #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "math.dib", "--retries", "1"])) }
00:00:01 v #9 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/polyglot/lib/math/math.dib", "--output-path", "c:/home/git/polyglot/lib/math/math.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/polyglot/lib/math/math.dib" --output-path "c:/home/git/polyglot/lib/math/math.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:00:03 v #10 > >
00:00:03 v #11 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:03 v #12 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:03 v #13 > > │ # math                                                                       │
00:00:03 v #14 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 v #15 > >
00:00:07 v #16 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:07 v #17 > > open testing
00:00:07 v #18 > > open rust.rust_operators
00:00:07 v #19 > > open rust
00:00:12 v #20 > >
00:00:12 v #21 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:12 v #22 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:12 v #23 > > │ ## complex                                                                   │
00:00:12 v #24 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:12 v #25 > >
00:00:12 v #26 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:12 v #27 > > nominal complex t =
00:00:12 v #28 > >     `(
00:00:12 v #29 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:00:12 v #30 > > Fable.Core.Emit(\"num_complex::Complex<$0>\")>]]\n#endif\ntype
00:00:12 v #31 > > num_complex_Complex<'T> = class end"
00:00:12 v #32 > >         $'' : $'num_complex_Complex<`t>'
00:00:12 v #33 > >     )
00:00:12 v #34 > >
00:00:12 v #35 > > inl complex forall t. ((re : t), (im : t)) : complex t =
00:00:12 v #36 > >     !\\((re, im), $'"num_complex::Complex::new($0, $1)"')
00:00:12 v #37 > >
00:00:12 v #38 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:12 v #39 > > //// test
00:00:12 v #40 > > ///! rust -d num-complex
00:00:12 v #41 > >
00:00:12 v #42 > > complex (0f64, 0f64)
00:00:12 v #43 > > |> sm'.format'
00:00:12 v #44 > > |> sm'.from_std_string
00:00:12 v #45 > > |> _assert_eq "0+0i"
00:00:18 v #46 > >
00:00:18 v #47 > > ╭─[ 6.03s - return value ]─────────────────────────────────────────────────────╮
00:00:18 v #48 > > │ __assert_eq / actual: "0+0i" / expected: "0+0i"                              │
00:00:18 v #49 > > │                                                                              │
00:00:18 v #50 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:18 v #51 > >
00:00:18 v #52 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:18 v #53 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:18 v #54 > > │ ## re                                                                        │
00:00:18 v #55 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:18 v #56 > >
00:00:18 v #57 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:18 v #58 > > inl re forall t. (c : complex t) : t =
00:00:18 v #59 > >     !\\(c, $'"$0.re"')
00:00:19 v #60 > >
00:00:19 v #61 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:19 v #62 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:19 v #63 > > │ ## im                                                                        │
00:00:19 v #64 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:19 v #65 > >
00:00:19 v #66 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:19 v #67 > > inl im forall t. (c : complex t) : t =
00:00:19 v #68 > >     !\\(c, $'"$0.im"')
00:00:19 v #69 > >
00:00:19 v #70 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:19 v #71 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:19 v #72 > > │ ## complex_unbox                                                             │
00:00:19 v #73 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:19 v #74 > >
00:00:19 v #75 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:19 v #76 > > inl complex_unbox forall t. (c : complex t) =
00:00:19 v #77 > >     re c, im c
00:00:20 v #78 > >
00:00:20 v #79 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:20 v #80 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:20 v #81 > > │ ## (~.^)                                                                     │
00:00:20 v #82 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:20 v #83 > >
00:00:20 v #84 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:20 v #85 > > inl (~.^) c = complex c
00:00:20 v #86 > >
00:00:20 v #87 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:20 v #88 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:20 v #89 > > │ ## complex_eq                                                                │
00:00:20 v #90 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:20 v #91 > >
00:00:20 v #92 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:20 v #93 > > inl complex_eq forall t. (a : complex t) (b : complex t) : bool =
00:00:20 v #94 > >     !\\((a, b), $'"$0 == $1"')
00:00:21 v #95 > >
00:00:21 v #96 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:21 v #97 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:21 v #98 > > │ ## (.=)                                                                      │
00:00:21 v #99 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:21 v #100 > >
00:00:21 v #101 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:21 v #102 > > inl (.=) a b = complex_eq a b
00:00:21 v #103 > >
00:00:21 v #104 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:21 v #105 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:21 v #106 > > │ ## equable complex                                                           │
00:00:21 v #107 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:21 v #108 > >
00:00:21 v #109 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:21 v #110 > > instance equable complex t = complex_eq
00:00:21 v #111 > >
00:00:21 v #112 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:21 v #113 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:21 v #114 > > │ ## complex_add                                                               │
00:00:21 v #115 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:21 v #116 > >
00:00:21 v #117 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:21 v #118 > > inl complex_add forall t. (a : complex t) (b : complex t) : complex t =
00:00:21 v #119 > >     !\\((a, b), $'"$0 + $1"')
00:00:22 v #120 > >
00:00:22 v #121 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:22 v #122 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:22 v #123 > > │ ## (.+)                                                                      │
00:00:22 v #124 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:22 v #125 > >
00:00:22 v #126 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:22 v #127 > > inl (.+) a b = complex_add a b
00:00:22 v #128 > >
00:00:22 v #129 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:22 v #130 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:22 v #131 > > │ ## complex_sub                                                               │
00:00:22 v #132 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:22 v #133 > >
00:00:22 v #134 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:22 v #135 > > inl complex_sub forall t. (a : complex t) (b : complex t) : complex t =
00:00:22 v #136 > >     !\\((a, b), $'"$0 - $1"')
00:00:23 v #137 > >
00:00:23 v #138 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:23 v #139 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:23 v #140 > > │ ## (.-)                                                                      │
00:00:23 v #141 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:23 v #142 > >
00:00:23 v #143 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:23 v #144 > > inl (.-) a b = complex_sub a b
00:00:23 v #145 > >
00:00:23 v #146 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:23 v #147 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:23 v #148 > > │ ## complex_mult                                                              │
00:00:23 v #149 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:23 v #150 > >
00:00:23 v #151 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:23 v #152 > > inl complex_mult forall t. (a : complex t) (b : complex t) : complex t =
00:00:23 v #153 > >     !\\((a, b), $'"$0 * $1"')
00:00:23 v #154 > >
00:00:23 v #155 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:23 v #156 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:23 v #157 > > │ ## (.*)                                                                      │
00:00:23 v #158 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:23 v #159 > >
00:00:23 v #160 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:23 v #161 > > inl (.*) a b = complex_mult a b
00:00:24 v #162 > >
00:00:24 v #163 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:24 v #164 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:24 v #165 > > │ ## complex_div                                                               │
00:00:24 v #166 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:24 v #167 > >
00:00:24 v #168 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:24 v #169 > > inl complex_div forall t. (a : complex t) (b : complex t) : complex t =
00:00:24 v #170 > >     !\\((a, b), $'"$0 / $1"')
00:00:24 v #171 > >
00:00:24 v #172 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:24 v #173 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:24 v #174 > > │ ## (./)                                                                      │
00:00:24 v #175 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:24 v #176 > >
00:00:24 v #177 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:24 v #178 > > inl (./) a b = complex_div a b
00:00:25 v #179 > >
00:00:25 v #180 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:25 v #181 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:25 v #182 > > │ ## powc                                                                      │
00:00:25 v #183 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:25 v #184 > >
00:00:25 v #185 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:25 v #186 > > inl powc forall t. (s : complex t) (c : complex t) : complex t =
00:00:25 v #187 > >     !\\((c, s), $'"num_complex::Complex::powc($0, $1)"')
00:00:25 v #188 > >
00:00:25 v #189 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:25 v #190 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:25 v #191 > > │ ## (.**)                                                                     │
00:00:25 v #192 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:25 v #193 > >
00:00:25 v #194 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:25 v #195 > > inl (.**) a b = powc b a
00:00:26 v #196 > >
00:00:26 v #197 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:26 v #198 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:26 v #199 > > │ ## complex_sin                                                               │
00:00:26 v #200 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:26 v #201 > >
00:00:26 v #202 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:26 v #203 > > inl complex_sin forall t. (c : complex t) : complex t =
00:00:26 v #204 > >     !\\(c, $'"$0.sin()"')
00:00:26 v #205 > >
00:00:26 v #206 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:26 v #207 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:26 v #208 > > │ ## conj                                                                      │
00:00:26 v #209 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:26 v #210 > >
00:00:26 v #211 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:26 v #212 > > inl conj forall t. (c : complex t) : complex t =
00:00:26 v #213 > >     !\\(c, $'"$0.conj()"')
00:00:26 v #214 > >
00:00:26 v #215 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:26 v #216 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:26 v #217 > > │ ## zeta                                                                      │
00:00:26 v #218 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:26 v #219 > >
00:00:26 v #220 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:26 v #221 > > inl zeta log (gamma : complex f64 -> complex f64) (s : complex f64) : complex
00:00:26 v #222 > > f64 =
00:00:26 v #223 > >     inl rec zeta count gamma s =
00:00:26 v #224 > >         if log then
00:00:26 v #225 > >             !\\((count, s), $'"println\!(\\\"zeta / count: {:?} / s: {:?}\\\",
00:00:26 v #226 > > $0, $1)"')
00:00:26 v #227 > >         if re s > 1 then
00:00:26 v #228 > >             (.^(0, 0), (am.init 10000i32 id : a i32 _))
00:00:26 v #229 > >             ||> am.fold fun acc n =>
00:00:26 v #230 > >                 acc .+ (.^(1, 0) ./ (.^(f64 n, 0) .** s))
00:00:26 v #231 > >         else
00:00:26 v #232 > >             inl gamma_term = gamma (.^(1, 0) .- s)
00:00:26 v #233 > >             inl sin_term = .^(pi, 0) .* s ./ .^(2, 0) |> complex_sin
00:00:26 v #234 > >             inl one_minus_s = .^(1 - re s, -(im s))
00:00:26 v #235 > >             inl mirror_term =
00:00:26 v #236 > >                 if re one_minus_s <= 1
00:00:26 v #237 > >                 then .^(0, 0)
00:00:26 v #238 > >                 else
00:00:26 v #239 > >                     if count <= 3
00:00:26 v #240 > >                     then zeta (count + 1) gamma one_minus_s
00:00:26 v #241 > >                     else one_minus_s
00:00:26 v #242 > >             inl reflection_formula =
00:00:26 v #243 > >                 .^(2, 0) .* (.^(pi, 0) .** s) .* sin_term .* gamma_term .*
00:00:26 v #244 > > mirror_term
00:00:26 v #245 > >             reflection_formula
00:00:26 v #246 > >     join zeta 0i32 gamma s
00:00:27 v #247 > >
00:00:27 v #248 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:27 v #249 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:27 v #250 > > │ ## bound                                                                     │
00:00:27 v #251 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:27 v #252 > >
00:00:27 v #253 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:27 v #254 > > nominal bound t =
00:00:27 v #255 > >     `(
00:00:27 v #256 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:00:27 v #257 > > Fable.Core.Emit(\"pyo3::Bound<$0>\")>]]\n#endif\ntype pyo3_Bound<'T> = class
00:00:27 v #258 > > end"
00:00:27 v #259 > >         $'' : $'pyo3_Bound<`t>'
00:00:27 v #260 > >     )
00:00:27 v #261 > >
00:00:27 v #262 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:27 v #263 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:27 v #264 > > │ ## python                                                                    │
00:00:27 v #265 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:27 v #266 > >
00:00:27 v #267 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:27 v #268 > > nominal python =
00:00:27 v #269 > >     `(
00:00:27 v #270 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:00:27 v #271 > > Fable.Core.Emit(\"pyo3::Python\")>]]\n#endif\ntype pyo3_Python = class end"
00:00:27 v #272 > >         $'' : $'pyo3_Python'
00:00:27 v #273 > >     )
00:00:28 v #274 > >
00:00:28 v #275 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:28 v #276 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:28 v #277 > > │ ## pymodule                                                                  │
00:00:28 v #278 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:28 v #279 > >
00:00:28 v #280 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:28 v #281 > > nominal pymodule =
00:00:28 v #282 > >     `(
00:00:28 v #283 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:00:28 v #284 > > Fable.Core.Emit(\"pyo3::types::PyModule\")>]]\n#endif\ntype pyo3_types_PyModule
00:00:28 v #285 > > = class end"
00:00:28 v #286 > >         $'' : $'pyo3_types_PyModule'
00:00:28 v #287 > >     )
00:00:28 v #288 > >
00:00:28 v #289 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:28 v #290 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:28 v #291 > > │ ## pyany                                                                     │
00:00:28 v #292 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:28 v #293 > >
00:00:28 v #294 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:28 v #295 > > nominal pyany =
00:00:28 v #296 > >     `(
00:00:28 v #297 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:00:28 v #298 > > Fable.Core.Emit(\"pyo3::PyAny\")>]]\n#endif\ntype pyo3_PyAny = class end"
00:00:28 v #299 > >         $'' : $'pyo3_PyAny'
00:00:28 v #300 > >     )
00:00:28 v #301 > >
00:00:28 v #302 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:28 v #303 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:28 v #304 > > │ ## pyerr                                                                     │
00:00:28 v #305 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:28 v #306 > >
00:00:28 v #307 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:28 v #308 > > nominal pyerr =
00:00:28 v #309 > >     `(
00:00:28 v #310 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:00:28 v #311 > > Fable.Core.Emit(\"pyo3::PyErr\")>]]\n#endif\ntype pyo3_PyErr = class end"
00:00:28 v #312 > >         $'' : $'pyo3_PyErr'
00:00:28 v #313 > >     )
00:00:29 v #314 > >
00:00:29 v #315 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:29 v #316 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:29 v #317 > > │ ## eval                                                                      │
00:00:29 v #318 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:29 v #319 > >
00:00:29 v #320 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:29 v #321 > > inl module_from_code (py : python) (code : string) : _ (bound pymodule) _ =
00:00:29 v #322 > >     inl py = join py
00:00:29 v #323 > >     inl code = code |> sm'.as_str
00:00:29 v #324 > >     !\\(code, $'"pyo3::types::PyModule::from_code_bound(!py, $0, \\"\\",
00:00:29 v #325 > > \\"\\")"')
00:00:29 v #326 > >     |> resultm.map_error'' fun (x : pyerr) => x |> sm'.format'
00:00:29 v #327 > >
00:00:29 v #328 > > inl use_pyanymethods () =
00:00:29 v #329 > >     global "Fable.Core.RustInterop.emitRustExpr () \");\nuse
00:00:29 v #330 > > pyo3::prelude::PyAnyMethods;\n//\""
00:00:29 v #331 > >
00:00:29 v #332 > > inl getattr (attr : string) (module : bound pymodule) : _ (bound pyany) _ =
00:00:29 v #333 > >     inl attr = join attr
00:00:29 v #334 > >     inl attr = attr |> sm'.as_str
00:00:29 v #335 > >     inl module = join module
00:00:29 v #336 > >     use_pyanymethods ()
00:00:29 v #337 > >     !\\(attr, $'"!module.getattr($0)"')
00:00:29 v #338 > >     |> resultm.map_error'' fun (x : pyerr) => x |> sm'.format'
00:00:29 v #339 > >
00:00:29 v #340 > > inl call forall t. (args : t) (module : bound pyany) : _ (bound pyany) _ =
00:00:29 v #341 > >     inl args = join args
00:00:29 v #342 > >     inl module = join module
00:00:29 v #343 > >     !\($'"pyo3::prelude::PyAnyMethods::call(&!module, ((*!args).0, *(*!args).1),
00:00:29 v #344 > > None)"')
00:00:29 v #345 > >     |> resultm.map_error'' fun (x : pyerr) => x |> sm'.format'
00:00:29 v #346 > >
00:00:29 v #347 > > inl extract forall t. (result : bound pyany) : _ t _ =
00:00:29 v #348 > >     inl result = join result
00:00:29 v #349 > >     use_pyanymethods ()
00:00:29 v #350 > >     !\($'"!result.extract()"')
00:00:29 v #351 > >     |> resultm.map_error'' fun (x : pyerr) => x |> sm'.format'
00:00:29 v #352 > >
00:00:29 v #353 > > inl eval py code (args : pair bool (pair f64 f64)) : _ (_ f64) sm'.std_string =
00:00:29 v #354 > >     inl code =
00:00:29 v #355 > >         code
00:00:29 v #356 > >         |> module_from_code py
00:00:29 v #357 > >         |> resultm.unwrap'
00:00:29 v #358 > >     inl fn =
00:00:29 v #359 > >         code
00:00:29 v #360 > >         |> getattr "fn"
00:00:29 v #361 > >         |> resultm.unwrap'
00:00:29 v #362 > >
00:00:29 v #363 > >     fn
00:00:29 v #364 > >     |> call args
00:00:29 v #365 > >     |> resultm.try'
00:00:29 v #366 > >     |> extract
00:00:29 v #367 > >     |> resultm.try'
00:00:29 v #368 > >     |> complex
00:00:29 v #369 > >     |> Ok
00:00:29 v #370 > >     |> resultm.box
00:00:29 v #371 > >
00:00:29 v #372 > > inl call1_ log py s code =
00:00:29 v #373 > >     inl code = join (a code : _ i32 _) |> sm'.concat_array_trailing "\n"
00:00:29 v #374 > >
00:00:29 v #375 > >     inl s = new_pair (re s) (im s)
00:00:29 v #376 > >     inl args = new_pair log s
00:00:29 v #377 > >
00:00:29 v #378 > >     eval py code args
00:00:29 v #379 > >
00:00:29 v #380 > > inl call1_ log name py s line =
00:00:29 v #381 > >     inl s = join s
00:00:29 v #382 > >     join
00:00:29 v #383 > >         ;[[
00:00:29 v #384 > >             $'$"import sys"'
00:00:29 v #385 > >             $'$"import traceback"'
00:00:29 v #386 > >             $'$"import re"'
00:00:29 v #387 > >             $'$"count = 0"'
00:00:29 v #388 > >             $'$"memory_address_pattern = re.compile(r\' at 0x[[0-9a-fA-F]]+\')"'
00:00:29 v #389 > >             $'$"def trace_calls(frame, event, arg):"'
00:00:29 v #390 > >             $'$"    global count"'
00:00:29 v #391 > >             $'$"    count += 1"'
00:00:29 v #392 > >             $'$"    if count < 200:"'
00:00:29 v #393 > >             $'$"        try:"'
00:00:29 v #394 > >             $'$"            args = {{ k: v for k, v in frame.f_locals.items() if
00:00:29 v #395 > > frame.f_code.co_name \!= \'make_mpc\' and k not in [[\'ctx\']] and not
00:00:29 v #396 > > callable(v) }}"'
00:00:29 v #397 > >             $'$"            args_str = \', \'.join([[
00:00:29 v #398 > > f\\\"{{k}}={{re.sub(memory_address_pattern, \' at 0x<?>\', repr(v))}}\\\" for k,
00:00:29 v #399 > > v in args.items() ]])"'
00:00:29 v #400 > >             $'$"            print(f\\\"{{event}}({!name}) / f_code.co_name:
00:00:29 v #401 > > {{frame.f_code.co_name}} / f_locals: {{args_str}} / f_lineno: {{frame.f_lineno}}
00:00:29 v #402 > > / f_code.co_filename:
00:00:29 v #403 > > {{frame.f_code.co_filename.split(\'site-packages\')[[-1]]}} / f_back.f_lineno:
00:00:29 v #404 > > {{ \'\' if frame.f_back is None else frame.f_back.f_lineno }}
00:00:29 v #405 > > f_back.f_code.co_filename: {{ \'\' if frame.f_back is None else
00:00:29 v #406 > > frame.f_back.f_code.co_filename.split(\'site-packages\')[[-1]] }} / arg:
00:00:29 v #407 > > {{re.sub(memory_address_pattern, \' at 0x<?>\', repr(arg))}}\\\", flush=True)"'
00:00:29 v #408 > >             $'$"        except ValueError as e:"'
00:00:29 v #409 > >             $'$"            print(f\'{!name} / e: {{e}}\', flush=True)"'
00:00:29 v #410 > >             $'$"        return trace_calls"'
00:00:29 v #411 > >             $'$"import mpmath"'
00:00:29 v #412 > >             $'$"def fn(log, s):"'
00:00:29 v #413 > >             $'$"    global count"'
00:00:29 v #414 > >             $'$"    if log:"'
00:00:29 v #415 > >             $'$"        print(f\'{!name} / s: {{s}} / count: {{count}}\',
00:00:29 v #416 > > flush=True)"'
00:00:29 v #417 > >             $'$"    s = complex(*s)"'
00:00:29 v #418 > >             $'$"    try:"'
00:00:29 v #419 > >             $'$"        if log: sys.settrace(trace_calls)"'
00:00:29 v #420 > >             line
00:00:29 v #421 > >             $'$"        if log:"'
00:00:29 v #422 > >             $'$"            sys.settrace(None)"'
00:00:29 v #423 > >             $'$"            print(f\'{!name} / result: {{s}} / count:
00:00:29 v #424 > > {{count}}\', flush=True)"'
00:00:29 v #425 > >             $'$"    except ValueError as e:"'
00:00:29 v #426 > >             $'$"        if s.real == 1:"'
00:00:29 v #427 > >             $'$"            s = complex(float(\'inf\'), 0)"'
00:00:29 v #428 > >             $'$"    return (s.real, s.imag)"'
00:00:29 v #429 > >         ]]
00:00:29 v #430 > >         |> call1_ log py s
00:00:29 v #431 > >
00:00:29 v #432 > > inl gamma_ log py s =
00:00:29 v #433 > >     call1_ log "gamma_" py s $'$"        s = mpmath.gamma(s)"'
00:00:29 v #434 > >
00:00:29 v #435 > > inl zeta_ log py s =
00:00:29 v #436 > >     call1_ log "zeta_" py s $'$"        s = mpmath.zeta(s)"'
00:00:29 v #437 > >
00:00:29 v #438 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:29 v #439 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:29 v #440 > > │ ## run_test                                                                  │
00:00:29 v #441 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:29 v #442 > >
00:00:29 v #443 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:29 v #444 > > inl run_test log (fn : (complex f64 -> complex f64) * (complex f64 -> complex
00:00:29 v #445 > > f64) -> ()) =
00:00:29 v #446 > >     inl fn_ (py : python) : resultm.result' () pyerr =
00:00:29 v #447 > >         inl nan () =
00:00:29 v #448 > >             !\($'"f64::NAN"')
00:00:29 v #449 > >         inl gamma__ = fun (s : complex f64) =>
00:00:29 v #450 > >             inl result = gamma_ log py s
00:00:29 v #451 > >             if log then
00:00:29 v #452 > >                 inl s = join s
00:00:29 v #453 > >                 !\($'"println\!(\\\"gamma__ / s: {:?} / result: {:?}\\\", !s,
00:00:29 v #454 > > !result)"')
00:00:29 v #455 > >             result |> resultm.ok' |> optionm'.unbox |> optionm'.default_value
00:00:29 v #456 > > .^(nan (), nan ())
00:00:29 v #457 > >         inl zeta__ = fun (s : complex f64) =>
00:00:29 v #458 > >             inl result = zeta_ log py s
00:00:29 v #459 > >
00:00:29 v #460 > >             inl z = zeta true gamma__ s
00:00:29 v #461 > >
00:00:29 v #462 > >             if log then
00:00:29 v #463 > >                 inl s = join s
00:00:29 v #464 > >                 !\($'"println\!(\\\"zeta__ / s: {:?} / result: {:?} / z:
00:00:29 v #465 > > {:?}\\\", !s, !result, !z)"')
00:00:29 v #466 > >
00:00:29 v #467 > >     //             re result - re x |> abs
00:00:29 v #468 > >     //             |> _assert_lt 0.001
00:00:29 v #469 > >
00:00:29 v #470 > >     //             im result - im x |> abs
00:00:29 v #471 > >     //             |> _assert_lt 0.001
00:00:29 v #472 > >
00:00:29 v #473 > >             result |> resultm.ok' |> optionm'.unbox |> optionm'.default_value
00:00:29 v #474 > > .^(nan (), nan ())
00:00:29 v #475 > >         join fn (zeta__, gamma__)
00:00:29 v #476 > >
00:00:29 v #477 > >         Ok ()
00:00:29 v #478 > >         |> resultm.box
00:00:29 v #479 > >
00:00:29 v #480 > >     join
00:00:29 v #481 > >         !\($'"pyo3::prepare_freethreaded_python()"') : ()
00:00:29 v #482 > >
00:00:29 v #483 > >         !\($'"let __run_test = pyo3::Python::with_gil(|py| -> pyo3::PyResult<()>
00:00:29 v #484 > > { //"')
00:00:29 v #485 > >
00:00:29 v #486 > >         let x' = fn_ (!\($'"py"') : python)
00:00:29 v #487 > >         inl x' = join x'
00:00:29 v #488 > >
00:00:29 v #489 > >         inl closure_fix = 2u8, 1u8
00:00:29 v #490 > >         x' |> rust.fix_closure closure_fix
00:00:29 v #491 > >
00:00:29 v #492 > >         (!\($'"__run_test"') : _ () pyerr)
00:00:29 v #493 > >         |> resultm.unwrap'
00:00:30 v #494 > >
00:00:30 v #495 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:30 v #496 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:30 v #497 > > │ ## test_zeta_at_known_values_                                                │
00:00:30 v #498 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:30 v #499 > >
00:00:30 v #500 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:30 v #501 > > inl test_zeta_at_known_values_ log = run_test log fun zeta, gamma =>
00:00:30 v #502 > >     ;[[
00:00:30 v #503 > >         .^(2, 0), pi ** 2 / 6
00:00:30 v #504 > >         .^(-1, 0), -1 / 12
00:00:30 v #505 > >     ]]
00:00:30 v #506 > >     |> fun x => a x : _ i32 _
00:00:30 v #507 > >     |> am.iter fun s, e =>
00:00:30 v #508 > >         inl result = zeta s
00:00:30 v #509 > >
00:00:30 v #510 > >         result |> im |> _assert_eq 0
00:00:30 v #511 > >         re result - e |> abs |> _assert_lt 0.0001
00:00:30 v #512 > >
00:00:30 v #513 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:30 v #514 > > //// test
00:00:30 v #515 > > ///! rust -d num-complex pyo3
00:00:30 v #516 > >
00:00:30 v #517 > > test_zeta_at_known_values_ true
00:00:36 v #518 > >
00:00:36 v #519 > > ╭─[ 5.98s - return value ]─────────────────────────────────────────────────────╮
00:00:36 v #520 > > │ zeta_ / s: (2.0, 0.0) / count: 0                                             │
00:00:36 v #521 > > │ call(zeta_) / f_code.co_name: zeta / f_locals: s=(2+0j), a=1, derivative=0,  │
00:00:36 v #522 > > │ method=None, kwargs={} / f_lineno: 528 / f_code.co_filename:                 │
00:00:36 v #523 > > │ \mpmath\functions\zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │
00:00:36 v #524 > > │ / arg: None                                                                  │
00:00:36 v #525 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+0j), a=1, derivative=0,  │
00:00:36 v #526 > > │ method=None, kwargs={} / f_lineno: 530 / f_code.co_filename:                 │
00:00:36 v #527 > > │ \mpmath\functions\zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │
00:00:36 v #528 > > │ / arg: None                                                                  │
00:00:36 v #529 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+0j), a=1, derivative=0,  │
00:00:36 v #530 > > │ method=None, kwargs={}, d=0 / f_lineno: 531 / f_code.co_filename:            │
00:00:36 v #531 > > │ \mpmath\functions\zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │
00:00:36 v #532 > > │ / arg: None                                                                  │
00:00:36 v #533 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+0j), a=1, derivative=0,  │
00:00:36 v #534 > > │ method=None, kwargs={}, d=0 / f_lineno: 532 / f_code.co_filename:            │
00:00:36 v #535 > > │ \mpmath\functions\zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │
00:00:36 v #536 > > │ / arg: None                                                                  │
00:00:36 v #537 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+0j), a=1, derivative=0,  │
00:00:36 v #538 > > │ method=None, kwargs={}, d=0 / f_lineno: 533 / f_code.co_filename:            │
00:00:36 v #539 > > │ \mpmath\functions\zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │
00:00:36 v #540 > > │ / arg: None                                                                  │
00:00:36 v #541 > > │ call(zeta_) / f_code.co_name: f / f_locals: x=(2+0j), kwargs={}, name='zeta' │
00:00:36 v #542 > > │ / f_lineno: 989 / f_code.co_filename: \mpmath\ctx_mp_python.py /             │
00:00:36 v #543 > > │ f_back.f_lineno: 533 / f_back.f_code.co_filename: \mpmath\functions\zeta.py  │
00:00:36 v #544 > > │ / arg: None                                                                  │
00:00:36 v #545 > > │ line(zeta_) / f_code.co_name: f / f_locals: x=(2+0j), kwargs={}, name='zeta' │
00:00:36 v #546 > > │ / f_linen...me: make_mpc / f_locals:  / f_lineno: 603 / f_code.co_filename:  │
00:00:36 v #547 > > │ \mpmath\ctx_mp_python.py / f_back.f_lineno: 1007 /                           │
00:00:36 v #548 > > │ f_back.f_code.co_filename: \mpmath\ctx_mp_python.py / arg: None              │
00:00:36 v #549 > > │ line(gamma_) / f_code.co_name: make_mpc / f_locals:  / f_lineno: 604 /       │
00:00:36 v #550 > > │ f_code.co_filename: \mpmath\ctx_mp_python.py / f_back.f_lineno: 1007 /       │
00:00:36 v #551 > > │ f_back.f_code.co_filename: \mpmath\ctx_mp_python.py / arg: None              │
00:00:36 v #552 > > │ line(gamma_) / f_code.co_name: make_mpc / f_locals:  / f_lineno: 605 /       │
00:00:36 v #553 > > │ f_code.co_filename: \mpmath\ctx_mp_python.py / f_back.f_lineno: 1007 /       │
00:00:36 v #554 > > │ f_back.f_code.co_filename: \mpmath\ctx_mp_python.py / arg: None              │
00:00:36 v #555 > > │ return(gamma_) / f_code.co_name: make_mpc / f_locals:  / f_lineno: 605 /     │
00:00:36 v #556 > > │ f_code.co_filename: \mpmath\ctx_mp_python.py / f_back.f_lineno: 1007 /       │
00:00:36 v #557 > > │ f_back.f_code.co_filename: \mpmath\ctx_mp_python.py / arg: mpc(real='1.0',   │
00:00:36 v #558 > > │ imag='0.0')                                                                  │
00:00:36 v #559 > > │ return(gamma_) / f_code.co_name: f / f_locals: x=mpc(real='2.0',             │
00:00:36 v #560 > > │ imag='0.0'), kwargs={}, name='gamma', prec=53, rounding='n' / f_lineno: 1007 │
00:00:36 v #561 > > │ / f_code.co_filename: \mpmath\ctx_mp_python.py / f_back.f_lineno: 25 /       │
00:00:36 v #562 > > │ f_back.f_code.co_filename:  / arg: mpc(real='1.0', imag='0.0')               │
00:00:36 v #563 > > │ gamma_ / result: (1.0 + 0.0j) / count: 140                                   │
00:00:36 v #564 > > │ gamma__ / s: Complex { re: 2.0, im: 0.0 } / result: Ok(Complex { re: 1.0,    │
00:00:36 v #565 > > │ im: 0.0 })                                                                   │
00:00:36 v #566 > > │ zeta / count: 1 / s: Complex { re: 2.0, im: -0.0 }                           │
00:00:36 v #567 > > │ zeta__ / s: Complex { re: -1.0, im: 0.0 } / result: Ok(Complex { re:         │
00:00:36 v #568 > > │ -0.08333333333333333, im: 0.0 }) / z: Complex { re: NaN, im: NaN }           │
00:00:36 v #569 > > │ __assert_eq / actual: 0.0 / expected: 0.0                                    │
00:00:36 v #570 > > │ __assert_lt / actual: 0.0 / expected: 0.0001                                 │
00:00:36 v #571 > > │                                                                              │
00:00:36 v #572 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:36 v #573 > >
00:00:36 v #574 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:36 v #575 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:36 v #576 > > │ ## test_zeta_at_2_minus2                                                     │
00:00:36 v #577 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:36 v #578 > >
00:00:36 v #579 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:36 v #580 > > inl test_zeta_at_2_minus2 log = run_test log fun zeta, gamma =>
00:00:36 v #581 > >     inl s = .^(2, -2)
00:00:36 v #582 > >     inl result = zeta s
00:00:36 v #583 > >
00:00:36 v #584 > >     (re result - 0.8673) |> abs |> _assert_lt 0.001
00:00:36 v #585 > >     (im result - 0.2750) |> abs |> _assert_lt 0.001
00:00:36 v #586 > >
00:00:36 v #587 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:36 v #588 > > //// test
00:00:36 v #589 > > ///! rust -d num-complex pyo3
00:00:36 v #590 > >
00:00:36 v #591 > > test_zeta_at_2_minus2 true
00:00:40 v #592 > >
00:00:40 v #593 > > ╭─[ 3.54s - return value ]─────────────────────────────────────────────────────╮
00:00:40 v #594 > > │ zeta_ / s: (2.0, -2.0) / count: 0                                            │
00:00:40 v #595 > > │ call(zeta_) / f_code.co_name: zeta / f_locals: s=(2-2j), a=1, derivative=0,  │
00:00:40 v #596 > > │ method=None, kwargs={} / f_lineno: 528 / f_code.co_filename:                 │
00:00:40 v #597 > > │ \mpmath\functions\zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │
00:00:40 v #598 > > │ / arg: None                                                                  │
00:00:40 v #599 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2-2j), a=1, derivative=0,  │
00:00:40 v #600 > > │ method=None, kwargs={} / f_lineno: 530 / f_code.co_filename:                 │
00:00:40 v #601 > > │ \mpmath\functions\zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │
00:00:40 v #602 > > │ / arg: None                                                                  │
00:00:40 v #603 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2-2j), a=1, derivative=0,  │
00:00:40 v #604 > > │ method=None, kwargs={}, d=0 / f_lineno: 531 / f_code.co_filename:            │
00:00:40 v #605 > > │ \mpmath\functions\zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │
00:00:40 v #606 > > │ / arg: None                                                                  │
00:00:40 v #607 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2-2j), a=1, derivative=0,  │
00:00:40 v #608 > > │ method=None, kwargs={}, d=0 / f_lineno: 532 / f_code.co_filename:            │
00:00:40 v #609 > > │ \mpmath\functions\zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │
00:00:40 v #610 > > │ / arg: None                                                                  │
00:00:40 v #611 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2-2j), a=1, derivative=0,  │
00:00:40 v #612 > > │ method=None, kwargs={}, d=0 / f_lineno: 533 / f_code.co_filename:            │
00:00:40 v #613 > > │ \mpmath\functions\zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │
00:00:40 v #614 > > │ / arg: None                                                                  │
00:00:40 v #615 > > │ call(zeta_) / f_code.co_name: f / f_locals: x=(2-2j), kwargs={}, name='zeta' │
00:00:40 v #616 > > │ / f_lineno: 989 / f_code.co_filename: \mpmath\ctx_mp_python.py /             │
00:00:40 v #617 > > │ f_back.f_lineno: 533 / f_back.f_code.co_filename: \mpmath\functions\zeta.py  │
00:00:40 v #618 > > │ / arg: None                                                                  │
00:00:40 v #619 > > │ line(zeta_) / f_code.co_name: f / f_locals: x=(2-2j), kwargs={}, name='zeta' │
00:00:40 v #620 > > │ / f_line.../ arg: None                                                       │
00:00:40 v #621 > > │ call(zeta_) / f_code.co_name: python_bitcount / f_locals: n=2 / f_lineno: 91 │
00:00:40 v #622 > > │ / f_code.co_filename: \mpmath\libmp\libintmath.py / f_back.f_lineno: 778 /   │
00:00:40 v #623 > > │ f_back.f_code.co_filename: \mpmath\libmp\libmpf.py / arg: None               │
00:00:40 v #624 > > │ line(zeta_) / f_code.co_name: python_bitcount / f_locals: n=2 / f_lineno: 93 │
00:00:40 v #625 > > │ / f_code.co_filename: \mpmath\libmp\libintmath.py / f_back.f_lineno: 778 /   │
00:00:40 v #626 > > │ f_back.f_code.co_filename: \mpmath\libmp\libmpf.py / arg: None               │
00:00:40 v #627 > > │ line(zeta_) / f_code.co_name: python_bitcount / f_locals: n=2, bc=2 /        │
00:00:40 v #628 > > │ f_lineno: 94 / f_code.co_filename: \mpmath\libmp\libintmath.py /             │
00:00:40 v #629 > > │ f_back.f_lineno: 778 / f_back.f_code.co_filename: \mpmath\libmp\libmpf.py /  │
00:00:40 v #630 > > │ arg: None                                                                    │
00:00:40 v #631 > > │ line(zeta_) / f_code.co_name: python_bitcount / f_locals: n=2, bc=2 /        │
00:00:40 v #632 > > │ f_lineno: 95 / f_code.co_filename: \mpmath\libmp\libintmath.py /             │
00:00:40 v #633 > > │ f_back.f_lineno: 778 / f_back.f_code.co_filename: \mpmath\libmp\libmpf.py /  │
00:00:40 v #634 > > │ arg: None                                                                    │
00:00:40 v #635 > > │ return(zeta_) / f_code.co_name: python_bitcount / f_locals: n=2, bc=2 /      │
00:00:40 v #636 > > │ f_lineno: 95 / f_code.co_filename: \mpmath\libmp\libintmath.py /             │
00:00:40 v #637 > > │ f_back.f_lineno: 778 / f_back.f_code.co_filename: \mpmath\libmp\libmpf.py /  │
00:00:40 v #638 > > │ arg: 2                                                                       │
00:00:40 v #639 > > │ zeta_ / result: (0.867351829635993 + 0.275127238807858j) / count: 1812       │
00:00:40 v #640 > > │ zeta / count: 0 / s: Complex { re: 2.0, im: -2.0 }                           │
00:00:40 v #641 > > │ zeta__ / s: Complex { re: 2.0, im: -2.0 } / result: Ok(Complex { re:         │
00:00:40 v #642 > > │ 0.8673518296359931, im: 0.27512723880785767 }) / z: Complex { re: NaN, im:   │
00:00:40 v #643 > > │ NaN }                                                                        │
00:00:40 v #644 > > │ __assert_lt / actual: 5.182963599315027e-5 / expected: 0.001                 │
00:00:40 v #645 > > │ __assert_lt / actual: 0.00012723880785764363 / expected: 0.001               │
00:00:40 v #646 > > │                                                                              │
00:00:40 v #647 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:40 v #648 > >
00:00:40 v #649 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:40 v #650 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:40 v #651 > > │ ## test_trivial_zero_at_negative_even___                                     │
00:00:40 v #652 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:40 v #653 > >
00:00:40 v #654 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:40 v #655 > > inl test_trivial_zero_at_negative_even___ log = run_test log fun zeta, gamma =>
00:00:40 v #656 > >     (join listm'.init_series -2f64 -40 -2)
00:00:40 v #657 > >     |> listm.iter fun n =>
00:00:40 v #658 > >         inl s = .^(n, 0)
00:00:40 v #659 > >         inl result = zeta s
00:00:40 v #660 > >
00:00:40 v #661 > >         result |> re |> _assert_eq 0
00:00:40 v #662 > >         result |> im |> _assert_eq 0
00:00:40 v #663 > >
00:00:40 v #664 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:40 v #665 > > //// test
00:00:40 v #666 > > ///! rust -d num-complex pyo3
00:00:40 v #667 > >
00:00:40 v #668 > > test_trivial_zero_at_negative_even___ true
00:00:45 v #669 > >
00:00:45 v #670 > > ╭─[ 4.24s - return value ]─────────────────────────────────────────────────────╮
00:00:45 v #671 > > │ zeta_ / s: (-2.0, 0.0) / count: 0                                            │
00:00:45 v #672 > > │ call(zeta_) / f_code.co_name: zeta / f_locals: s=(-2+0j), a=1, derivative=0, │
00:00:45 v #673 > > │ method=None, kwargs={} / f_lineno: 528 / f_code.co_filename:                 │
00:00:45 v #674 > > │ \mpmath\functions\zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │
00:00:45 v #675 > > │ / arg: None                                                                  │
00:00:45 v #676 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(-2+0j), a=1, derivative=0, │
00:00:45 v #677 > > │ method=None, kwargs={} / f_lineno: 530 / f_code.co_filename:                 │
00:00:45 v #678 > > │ \mpmath\functions\zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │
00:00:45 v #679 > > │ / arg: None                                                                  │
00:00:45 v #680 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(-2+0j), a=1, derivative=0, │
00:00:45 v #681 > > │ method=None, kwargs={}, d=0 / f_lineno: 531 / f_code.co_filename:            │
00:00:45 v #682 > > │ \mpmath\functions\zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │
00:00:45 v #683 > > │ / arg: None                                                                  │
00:00:45 v #684 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(-2+0j), a=1, derivative=0, │
00:00:45 v #685 > > │ method=None, kwargs={}, d=0 / f_lineno: 532 / f_code.co_filename:            │
00:00:45 v #686 > > │ \mpmath\functions\zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │
00:00:45 v #687 > > │ / arg: None                                                                  │
00:00:45 v #688 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(-2+0j), a=1, derivative=0, │
00:00:45 v #689 > > │ method=None, kwargs={}, d=0 / f_lineno: 533 / f_code.co_filename:            │
00:00:45 v #690 > > │ \mpmath\functions\zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │
00:00:45 v #691 > > │ / arg: None                                                                  │
00:00:45 v #692 > > │ call(zeta_) / f_code.co_name: f / f_locals: x=(-2+0j), kwargs={},            │
00:00:45 v #693 > > │ name='zeta' / f_lineno: 989 / f_code.co_filename: \mpmath\ctx_mp_python.py / │
00:00:45 v #694 > > │ f_back.f_lineno: 533 / f_back.f_code.co_filename: \mpmath\functions\zeta.py  │
00:00:45 v #695 > > │ / arg: None                                                                  │
00:00:45 v #696 > > │ line(zeta_) / f_code.co_name: f / f_locals: x=(-2+0j), kwargs={},            │
00:00:45 v #697 > > │ name='zeta' /...lename: \mpmath\ctx_mp_python.py / f_back.f_lineno: 1007 /   │
00:00:45 v #698 > > │ f_back.f_code.co_filename: \mpmath\ctx_mp_python.py / arg: None              │
00:00:45 v #699 > > │ line(gamma_) / f_code.co_name: make_mpc / f_locals:  / f_lineno: 604 /       │
00:00:45 v #700 > > │ f_code.co_filename: \mpmath\ctx_mp_python.py / f_back.f_lineno: 1007 /       │
00:00:45 v #701 > > │ f_back.f_code.co_filename: \mpmath\ctx_mp_python.py / arg: None              │
00:00:45 v #702 > > │ line(gamma_) / f_code.co_name: make_mpc / f_locals:  / f_lineno: 605 /       │
00:00:45 v #703 > > │ f_code.co_filename: \mpmath\ctx_mp_python.py / f_back.f_lineno: 1007 /       │
00:00:45 v #704 > > │ f_back.f_code.co_filename: \mpmath\ctx_mp_python.py / arg: None              │
00:00:45 v #705 > > │ return(gamma_) / f_code.co_name: make_mpc / f_locals:  / f_lineno: 605 /     │
00:00:45 v #706 > > │ f_code.co_filename: \mpmath\ctx_mp_python.py / f_back.f_lineno: 1007 /       │
00:00:45 v #707 > > │ f_back.f_code.co_filename: \mpmath\ctx_mp_python.py / arg:                   │
00:00:45 v #708 > > │ mpc(real='8.1591528324789768e+47', imag='0.0')                               │
00:00:45 v #709 > > │ return(gamma_) / f_code.co_name: f / f_locals: x=mpc(real='41.0',            │
00:00:45 v #710 > > │ imag='0.0'), kwargs={}, name='gamma', prec=53, rounding='n' / f_lineno: 1007 │
00:00:45 v #711 > > │ / f_code.co_filename: \mpmath\ctx_mp_python.py / f_back.f_lineno: 25 /       │
00:00:45 v #712 > > │ f_back.f_code.co_filename:  / arg: mpc(real='8.1591528324789768e+47',        │
00:00:45 v #713 > > │ imag='0.0')                                                                  │
00:00:45 v #714 > > │ gamma_ / result: (8.15915283247898e+47 + 0.0j) / count: 149                  │
00:00:45 v #715 > > │ gamma__ / s: Complex { re: 41.0, im: 0.0 } / result: Ok(Complex { re:        │
00:00:45 v #716 > > │ 8.159152832478977e47, im: 0.0 })                                             │
00:00:45 v #717 > > │ zeta / count: 1 / s: Complex { re: 41.0, im: -0.0 }                          │
00:00:45 v #718 > > │ zeta__ / s: Complex { re: -40.0, im: 0.0 } / result: Ok(Complex { re: 0.0,   │
00:00:45 v #719 > > │ im: 0.0 }) / z: Complex { re: NaN, im: NaN }                                 │
00:00:45 v #720 > > │ __assert_eq / actual: 0.0 / expected: 0.0                                    │
00:00:45 v #721 > > │ __assert_eq / actual: 0.0 / expected: 0.0                                    │
00:00:45 v #722 > > │                                                                              │
00:00:45 v #723 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:45 v #724 > >
00:00:45 v #725 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:45 v #726 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:45 v #727 > > │ ## test_non_trivial_zero___                                                  │
00:00:45 v #728 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:45 v #729 > >
00:00:45 v #730 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:45 v #731 > > inl test_non_trivial_zero___ log = run_test log fun zeta, gamma =>
00:00:45 v #732 > >     ;[[
00:00:45 v #733 > >         .^(0.5, 14.134725)
00:00:45 v #734 > >         .^(0.5, 21.022040)
00:00:45 v #735 > >         .^(0.5, 25.010857)
00:00:45 v #736 > >         .^(0.5, 30.424876)
00:00:45 v #737 > >         .^(0.5, 32.935062)
00:00:45 v #738 > >         .^(0.5, 37.586178)
00:00:45 v #739 > >     ]]
00:00:45 v #740 > >     |> fun x => a x : _ i32 _
00:00:45 v #741 > >     |> am.iter fun x =>
00:00:45 v #742 > >             inl result = zeta x
00:00:45 v #743 > >             result |> re |> abs |> _assert_lt 0.0001
00:00:45 v #744 > >             result |> im |> abs |> _assert_lt 0.0001
00:00:45 v #745 > >
00:00:45 v #746 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:45 v #747 > > //// test
00:00:45 v #748 > > ///! rust -d num-complex pyo3
00:00:45 v #749 > >
00:00:45 v #750 > > test_non_trivial_zero___ true
00:00:49 v #751 > >
00:00:49 v #752 > > ╭─[ 3.55s - return value ]─────────────────────────────────────────────────────╮
00:00:49 v #753 > > │ zeta_ / s: (0.5, 14.134725) / count: 0                                       │
00:00:49 v #754 > > │ call(zeta_) / f_code.co_name: zeta / f_locals: s=(0.5+14.134725j), a=1,      │
00:00:49 v #755 > > │ derivative=0, method=None, kwargs={} / f_lineno: 528 / f_code.co_filename:   │
00:00:49 v #756 > > │ \mpmath\functions\zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │
00:00:49 v #757 > > │ / arg: None                                                                  │
00:00:49 v #758 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(0.5+14.134725j), a=1,      │
00:00:49 v #759 > > │ derivative=0, method=None, kwargs={} / f_lineno: 530 / f_code.co_filename:   │
00:00:49 v #760 > > │ \mpmath\functions\zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │
00:00:49 v #761 > > │ / arg: None                                                                  │
00:00:49 v #762 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(0.5+14.134725j), a=1,      │
00:00:49 v #763 > > │ derivative=0, method=None, kwargs={}, d=0 / f_lineno: 531 /                  │
00:00:49 v #764 > > │ f_code.co_filename: \mpmath\functions\zeta.py / f_back.f_lineno: 25 /        │
00:00:49 v #765 > > │ f_back.f_code.co_filename:  / arg: None                                      │
00:00:49 v #766 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(0.5+14.134725j), a=1,      │
00:00:49 v #767 > > │ derivative=0, method=None, kwargs={}, d=0 / f_lineno: 532 /                  │
00:00:49 v #768 > > │ f_code.co_filename: \mpmath\functions\zeta.py / f_back.f_lineno: 25 /        │
00:00:49 v #769 > > │ f_back.f_code.co_filename:  / arg: None                                      │
00:00:49 v #770 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(0.5+14.134725j), a=1,      │
00:00:49 v #771 > > │ derivative=0, method=None, kwargs={}, d=0 / f_lineno: 533 /                  │
00:00:49 v #772 > > │ f_code.co_filename: \mpmath\functions\zeta.py / f_back.f_lineno: 25 /        │
00:00:49 v #773 > > │ f_back.f_code.co_filename:  / arg: None                                      │
00:00:49 v #774 > > │ call(zeta_) / f_code.co_name: f / f_locals: x=(0.5+14.134725j), kwargs={},   │
00:00:49 v #775 > > │ name='zeta' / f_lineno: 989 / f_code.co_filename: \mpmath\ctx_mp_python.py / │
00:00:49 v #776 > > │ f_back.f_lineno: 533 / f_back.f_code.co_filename: \mpmath\functions\zeta.py  │
00:00:49 v #777 > > │ / arg: None                                                                  │
00:00:49 v #778 > > │ line(zeta_) / f_code... arg: None                                            │
00:00:49 v #779 > > │ line(gamma_) / f_code.co_name: complex_stirling_series / f_locals:           │
00:00:49 v #780 > > │ x=1208925819614629174706176, y=-90877802089662679288381440, prec=81,         │
00:00:49 v #781 > > │ _m=3416353708500640443578529333, tre=855591523614410863719,                  │
00:00:49 v #782 > > │ tim=64316830603724894628746, ure=-1710577520534459139249,                    │
00:00:49 v #783 > > │ uim=45518868236127668552, sre=1013002518538853602038572,                     │
00:00:49 v #784 > > │ sim=90883161825546323029600502 / f_lineno: 1637 / f_code.co_filename:        │
00:00:49 v #785 > > │ \mpmath\libmp\gammazeta.py / f_back.f_lineno: 2050 /                         │
00:00:49 v #786 > > │ f_back.f_code.co_filename: \mpmath\libmp\gammazeta.py / arg: None            │
00:00:49 v #787 > > │ line(gamma_) / f_code.co_name: complex_stirling_series / f_locals:           │
00:00:49 v #788 > > │ x=1208925819614629174706176, y=-90877802089662679288381440, prec=81,         │
00:00:49 v #789 > > │ _m=3416353708500640443578529333, tre=-1816151534455075068,                   │
00:00:49 v #790 > > │ tim=-45486653225747820096, ure=-1710577520534459139249,                      │
00:00:49 v #791 > > │ uim=45518868236127668552, sre=1013002518538853602038572,                     │
00:00:49 v #792 > > │ sim=90883161825546323029600502 / f_lineno: 1638 / f_code.co_filename:        │
00:00:49 v #793 > > │ \mpmath\libmp\gammazeta.py / f_back.f_lineno: 2050 /                         │
00:00:49 v #794 > > │ f_back.f_code.co_filename: \mpmath\libmp\gammazeta.py / arg: None            │
00:00:49 v #795 > > │ gamma_ / result: (-1.32798420042152e-26 + 5.5751975252688e-26j) / count: 309 │
00:00:49 v #796 > > │ gamma__ / s: Complex { re: 0.5, im: -37.586178 } / result: Ok(Complex { re:  │
00:00:49 v #797 > > │ -1.3279842004215153e-26, im: 5.575197525268802e-26 })                        │
00:00:49 v #798 > > │ zeta__ / s: Complex { re: 0.5, im: 37.586178 } / result: Ok(Complex { re:    │
00:00:49 v #799 > > │ -8.910186507947958e-8, im: -2.943780446402868e-7 }) / z: Complex { re: -0.0, │
00:00:49 v #800 > > │ im: 0.0 }                                                                    │
00:00:49 v #801 > > │ __assert_lt / actual: 8.910186507947958e-8 / expected: 0.0001                │
00:00:49 v #802 > > │ __assert_lt / actual: 2.943780446402868e-7 / expected: 0.0001                │
00:00:49 v #803 > > │                                                                              │
00:00:49 v #804 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:49 v #805 > >
00:00:49 v #806 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:49 v #807 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:49 v #808 > > │ ## test_real_part_greater_than_one___                                        │
00:00:49 v #809 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:49 v #810 > >
00:00:49 v #811 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:49 v #812 > > inl test_real_part_greater_than_one___ log = run_test log fun zeta, gamma =>
00:00:49 v #813 > >     inl points = ;[[ 2; 3; 4; 5; 10; 20; 50 ]]
00:00:49 v #814 > >     (a points : _ i32 _)
00:00:49 v #815 > >     |> am.iter fun point =>
00:00:49 v #816 > >         inl s = .^(point, 0)
00:00:49 v #817 > >         inl result = zeta s
00:00:49 v #818 > >         result |> re |> _assert_gt 0
00:00:49 v #819 > >         result |> im |> _assert_eq 0
00:00:49 v #820 > >
00:00:49 v #821 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:49 v #822 > > //// test
00:00:49 v #823 > > ///! rust -d num-complex pyo3
00:00:49 v #824 > >
00:00:49 v #825 > > test_real_part_greater_than_one___ true
00:00:53 v #826 > >
00:00:53 v #827 > > ╭─[ 3.62s - return value ]─────────────────────────────────────────────────────╮
00:00:53 v #828 > > │ zeta_ / s: (2.0, 0.0) / count: 0                                             │
00:00:53 v #829 > > │ call(zeta_) / f_code.co_name: zeta / f_locals: s=(2+0j), a=1, derivative=0,  │
00:00:53 v #830 > > │ method=None, kwargs={} / f_lineno: 528 / f_code.co_filename:                 │
00:00:53 v #831 > > │ \mpmath\functions\zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │
00:00:53 v #832 > > │ / arg: None                                                                  │
00:00:53 v #833 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+0j), a=1, derivative=0,  │
00:00:53 v #834 > > │ method=None, kwargs={} / f_lineno: 530 / f_code.co_filename:                 │
00:00:53 v #835 > > │ \mpmath\functions\zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │
00:00:53 v #836 > > │ / arg: None                                                                  │
00:00:53 v #837 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+0j), a=1, derivative=0,  │
00:00:53 v #838 > > │ method=None, kwargs={}, d=0 / f_lineno: 531 / f_code.co_filename:            │
00:00:53 v #839 > > │ \mpmath\functions\zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │
00:00:53 v #840 > > │ / arg: None                                                                  │
00:00:53 v #841 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+0j), a=1, derivative=0,  │
00:00:53 v #842 > > │ method=None, kwargs={}, d=0 / f_lineno: 532 / f_code.co_filename:            │
00:00:53 v #843 > > │ \mpmath\functions\zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │
00:00:53 v #844 > > │ / arg: None                                                                  │
00:00:53 v #845 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+0j), a=1, derivative=0,  │
00:00:53 v #846 > > │ method=None, kwargs={}, d=0 / f_lineno: 533 / f_code.co_filename:            │
00:00:53 v #847 > > │ \mpmath\functions\zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │
00:00:53 v #848 > > │ / arg: None                                                                  │
00:00:53 v #849 > > │ call(zeta_) / f_code.co_name: f / f_locals: x=(2+0j), kwargs={}, name='zeta' │
00:00:53 v #850 > > │ / f_lineno: 989 / f_code.co_filename: \mpmath\ctx_mp_python.py /             │
00:00:53 v #851 > > │ f_back.f_lineno: 533 / f_back.f_code.co_filename: \mpmath\functions\zeta.py  │
00:00:53 v #852 > > │ / arg: None                                                                  │
00:00:53 v #853 > > │ line(zeta_) / f_code.co_name: f / f_locals: x=(2+0j), kwargs={}, name='zeta' │
00:00:53 v #854 > > │ / f_linen...f_code.co_filename: \mpmath\ctx_mp_python.py / f_back.f_lineno:  │
00:00:53 v #855 > > │ 1007 / f_back.f_code.co_filename: \mpmath\ctx_mp_python.py / arg: None       │
00:00:53 v #856 > > │ line(zeta_) / f_code.co_name: make_mpc / f_locals:  / f_lineno: 605 /        │
00:00:53 v #857 > > │ f_code.co_filename: \mpmath\ctx_mp_python.py / f_back.f_lineno: 1007 /       │
00:00:53 v #858 > > │ f_back.f_code.co_filename: \mpmath\ctx_mp_python.py / arg: None              │
00:00:53 v #859 > > │ return(zeta_) / f_code.co_name: make_mpc / f_locals:  / f_lineno: 605 /      │
00:00:53 v #860 > > │ f_code.co_filename: \mpmath\ctx_mp_python.py / f_back.f_lineno: 1007 /       │
00:00:53 v #861 > > │ f_back.f_code.co_filename: \mpmath\ctx_mp_python.py / arg:                   │
00:00:53 v #862 > > │ mpc(real='1.0000000000000009', imag='0.0')                                   │
00:00:53 v #863 > > │ return(zeta_) / f_code.co_name: f / f_locals: x=mpc(real='50.0',             │
00:00:53 v #864 > > │ imag='0.0'), kwargs={}, name='zeta', prec=53, rounding='n' / f_lineno: 1007  │
00:00:53 v #865 > > │ / f_code.co_filename: \mpmath\ctx_mp_python.py / f_back.f_lineno: 533 /      │
00:00:53 v #866 > > │ f_back.f_code.co_filename: \mpmath\functions\zeta.py / arg:                  │
00:00:53 v #867 > > │ mpc(real='1.0000000000000009', imag='0.0')                                   │
00:00:53 v #868 > > │ return(zeta_) / f_code.co_name: zeta / f_locals: s=(50+0j), a=1,             │
00:00:53 v #869 > > │ derivative=0, method=None, kwargs={}, d=0 / f_lineno: 533 /                  │
00:00:53 v #870 > > │ f_code.co_filename: \mpmath\functions\zeta.py / f_back.f_lineno: 25 /        │
00:00:53 v #871 > > │ f_back.f_code.co_filename:  / arg: mpc(real='1.0000000000000009',            │
00:00:53 v #872 > > │ imag='0.0')                                                                  │
00:00:53 v #873 > > │ zeta_ / result: (1.0 + 0.0j) / count: 181                                    │
00:00:53 v #874 > > │ zeta / count: 0 / s: Complex { re: 50.0, im: 0.0 }                           │
00:00:53 v #875 > > │ zeta__ / s: Complex { re: 50.0, im: 0.0 } / result: Ok(Complex { re:         │
00:00:53 v #876 > > │ 1.0000000000000009, im: 0.0 }) / z: Complex { re: NaN, im: NaN }             │
00:00:53 v #877 > > │ __assert_gt / actual: 1.0000000000000009 / expected: 0.0                     │
00:00:53 v #878 > > │ __assert_eq / actual: 0.0 / expected: 0.0                                    │
00:00:53 v #879 > > │                                                                              │
00:00:53 v #880 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:53 v #881 > >
00:00:53 v #882 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:53 v #883 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:53 v #884 > > │ ## test_zeta_at_1___                                                         │
00:00:53 v #885 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:53 v #886 > >
00:00:53 v #887 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:53 v #888 > > inl test_zeta_at_1___ log = run_test log fun zeta, gamma =>
00:00:53 v #889 > >     inl s = .^(1, 0)
00:00:53 v #890 > >     inl result = zeta s
00:00:53 v #891 > >     result |> re |> _assert_eq limit.max
00:00:53 v #892 > >     result |> im |> _assert_eq 0
00:00:53 v #893 > >
00:00:53 v #894 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:53 v #895 > > //// test
00:00:53 v #896 > > ///! rust -d num-complex pyo3
00:00:53 v #897 > >
00:00:53 v #898 > > test_zeta_at_1___ true
00:00:56 v #899 > >
00:00:56 v #900 > > ╭─[ 3.29s - return value ]─────────────────────────────────────────────────────╮
00:00:56 v #901 > > │ zeta_ / s: (1.0, 0.0) / count: 0                                             │
00:00:56 v #902 > > │ call(zeta_) / f_code.co_name: zeta / f_locals: s=(1+0j), a=1, derivative=0,  │
00:00:56 v #903 > > │ method=None, kwargs={} / f_lineno: 528 / f_code.co_filename:                 │
00:00:56 v #904 > > │ \mpmath\functions\zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │
00:00:56 v #905 > > │ / arg: None                                                                  │
00:00:56 v #906 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(1+0j), a=1, derivative=0,  │
00:00:56 v #907 > > │ method=None, kwargs={} / f_lineno: 530 / f_code.co_filename:                 │
00:00:56 v #908 > > │ \mpmath\functions\zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │
00:00:56 v #909 > > │ / arg: None                                                                  │
00:00:56 v #910 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(1+0j), a=1, derivative=0,  │
00:00:56 v #911 > > │ method=None, kwargs={}, d=0 / f_lineno: 531 / f_code.co_filename:            │
00:00:56 v #912 > > │ \mpmath\functions\zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │
00:00:56 v #913 > > │ / arg: None                                                                  │
00:00:56 v #914 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(1+0j), a=1, derivative=0,  │
00:00:56 v #915 > > │ method=None, kwargs={}, d=0 / f_lineno: 532 / f_code.co_filename:            │
00:00:56 v #916 > > │ \mpmath\functions\zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │
00:00:56 v #917 > > │ / arg: None                                                                  │
00:00:56 v #918 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(1+0j), a=1, derivative=0,  │
00:00:56 v #919 > > │ method=None, kwargs={}, d=0 / f_lineno: 533 / f_code.co_filename:            │
00:00:56 v #920 > > │ \mpmath\functions\zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │
00:00:56 v #921 > > │ / arg: None                                                                  │
00:00:56 v #922 > > │ call(zeta_) / f_code.co_name: f / f_locals: x=(1+0j), kwargs={}, name='zeta' │
00:00:56 v #923 > > │ / f_lineno: 989 / f_code.co_filename: \mpmath\ctx_mp_python.py /             │
00:00:56 v #924 > > │ f_back.f_lineno: 533 / f_back.f_code.co_filename: \mpmath\functions\zeta.py  │
00:00:56 v #925 > > │ / arg: None                                                                  │
00:00:56 v #926 > > │ line(zeta_) / f_code.co_name: f / f_locals: x=(1+0j), kwargs={}, name='zeta' │
00:00:56 v #927 > > │ / f_linen...back object at 0x<?>>)                                           │
00:00:56 v #928 > > │ return(gamma_) / f_code.co_name: f / f_locals: x=mpc(real='0.0',             │
00:00:56 v #929 > > │ imag='0.0'), kwargs={}, name='gamma', prec=53, rounding='n' / f_lineno: 1007 │
00:00:56 v #930 > > │ / f_code.co_filename: \mpmath\ctx_mp_python.py / f_back.f_lineno: 25 /       │
00:00:56 v #931 > > │ f_back.f_code.co_filename:  / arg: None                                      │
00:00:56 v #932 > > │ exception(gamma_) / f_code.co_name: fn / f_locals: log=True, s=0j /          │
00:00:56 v #933 > > │ f_lineno: 25 / f_code.co_filename:  / f_back.f_lineno:  /                    │
00:00:56 v #934 > > │ f_back.f_code.co_filename:  / arg: (<class 'ValueError'>, ValueError('gamma  │
00:00:56 v #935 > > │ function pole'), <traceback object at 0x<?>>)                                │
00:00:56 v #936 > > │ line(gamma_) / f_code.co_name: fn / f_locals: log=True, s=0j / f_lineno: 29  │
00:00:56 v #937 > > │ / f_code.co_filename:  / f_back.f_lineno:  / f_back.f_code.co_filename:  /   │
00:00:56 v #938 > > │ arg: None                                                                    │
00:00:56 v #939 > > │ line(gamma_) / f_code.co_name: fn / f_locals: log=True, s=0j,                │
00:00:56 v #940 > > │ e=ValueError('gamma function pole') / f_lineno: 30 / f_code.co_filename:  /  │
00:00:56 v #941 > > │ f_back.f_lineno:  / f_back.f_code.co_filename:  / arg: None                  │
00:00:56 v #942 > > │ line(gamma_) / f_code.co_name: fn / f_locals: log=True, s=0j / f_lineno: 32  │
00:00:56 v #943 > > │ / f_code.co_filename:  / f_back.f_lineno:  / f_back.f_code.co_filename:  /   │
00:00:56 v #944 > > │ arg: None                                                                    │
00:00:56 v #945 > > │ return(gamma_) / f_code.co_name: fn / f_locals: log=True, s=0j / f_lineno:   │
00:00:56 v #946 > > │ 32 / f_code.co_filename:  / f_back.f_lineno:  / f_back.f_code.co_filename:   │
00:00:56 v #947 > > │ / arg: (0.0, 0.0)                                                            │
00:00:56 v #948 > > │ gamma__ / s: Complex { re: 0.0, im: 0.0 } / result: Ok(Complex { re: 0.0,    │
00:00:56 v #949 > > │ im: 0.0 })                                                                   │
00:00:56 v #950 > > │ zeta__ / s: Complex { re: 1.0, im: 0.0 } / result: Ok(Complex { re: inf, im: │
00:00:56 v #951 > > │ 0.0 }) / z: Complex { re: 0.0, im: 0.0 }                                     │
00:00:56 v #952 > > │ __assert_eq / actual: inf / expected: inf                                    │
00:00:56 v #953 > > │ __assert_eq / actual: 0.0 / expected: 0.0                                    │
00:00:56 v #954 > > │                                                                              │
00:00:56 v #955 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:56 v #956 > >
00:00:56 v #957 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:56 v #958 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:56 v #959 > > │ ## test_symmetry_across_real_axis___                                         │
00:00:56 v #960 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:56 v #961 > >
00:00:56 v #962 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:56 v #963 > > inl test_symmetry_across_real_axis___ log = run_test log fun zeta, gamma =>
00:00:56 v #964 > >     inl s = .^(2, 10)
00:00:56 v #965 > >     inl result_positive_im = zeta s
00:00:56 v #966 > >     inl result_negative_im = zeta .^(re s, -(im s))
00:00:56 v #967 > >     inl conj = result_negative_im |> conj
00:00:56 v #968 > >     result_positive_im |> re |> _assert_eq (conj |> re)
00:00:56 v #969 > >     result_positive_im |> im |> _assert_eq (conj |> im)
00:00:57 v #970 > >
00:00:57 v #971 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:57 v #972 > > //// test
00:00:57 v #973 > > ///! rust -d num-complex pyo3
00:00:57 v #974 > >
00:00:57 v #975 > > test_symmetry_across_real_axis___ true
00:01:00 v #976 > >
00:01:00 v #977 > > ╭─[ 3.53s - return value ]─────────────────────────────────────────────────────╮
00:01:00 v #978 > > │ zeta_ / s: (2.0, 10.0) / count: 0                                            │
00:01:00 v #979 > > │ call(zeta_) / f_code.co_name: zeta / f_locals: s=(2+10j), a=1, derivative=0, │
00:01:00 v #980 > > │ method=None, kwargs={} / f_lineno: 528 / f_code.co_filename:                 │
00:01:00 v #981 > > │ \mpmath\functions\zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │
00:01:00 v #982 > > │ / arg: None                                                                  │
00:01:00 v #983 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+10j), a=1, derivative=0, │
00:01:00 v #984 > > │ method=None, kwargs={} / f_lineno: 530 / f_code.co_filename:                 │
00:01:00 v #985 > > │ \mpmath\functions\zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │
00:01:00 v #986 > > │ / arg: None                                                                  │
00:01:00 v #987 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+10j), a=1, derivative=0, │
00:01:00 v #988 > > │ method=None, kwargs={}, d=0 / f_lineno: 531 / f_code.co_filename:            │
00:01:00 v #989 > > │ \mpmath\functions\zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │
00:01:00 v #990 > > │ / arg: None                                                                  │
00:01:00 v #991 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+10j), a=1, derivative=0, │
00:01:00 v #992 > > │ method=None, kwargs={}, d=0 / f_lineno: 532 / f_code.co_filename:            │
00:01:00 v #993 > > │ \mpmath\functions\zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │
00:01:00 v #994 > > │ / arg: None                                                                  │
00:01:00 v #995 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+10j), a=1, derivative=0, │
00:01:00 v #996 > > │ method=None, kwargs={}, d=0 / f_lineno: 533 / f_code.co_filename:            │
00:01:00 v #997 > > │ \mpmath\functions\zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │
00:01:00 v #998 > > │ / arg: None                                                                  │
00:01:00 v #999 > > │ call(zeta_) / f_code.co_name: f / f_locals: x=(2+10j), kwargs={},            │
00:01:00 v #1000 > > │ name='zeta' / f_lineno: 989 / f_code.co_filename: \mpmath\ctx_mp_python.py / │
00:01:00 v #1001 > > │ f_back.f_lineno: 533 / f_back.f_code.co_filename: \mpmath\functions\zeta.py  │
00:01:00 v #1002 > > │ / arg: None                                                                  │
00:01:00 v #1003 > > │ line(zeta_) / f_code.co_name: f / f_locals: x=(2+10j), kwargs={},            │
00:01:00 v #1004 > > │ name='zeta' /.../ f_back.f_code.co_filename: \mpmath\libmp\libmpf.py / arg:  │
00:01:00 v #1005 > > │ None                                                                         │
00:01:00 v #1006 > > │ line(zeta_) / f_code.co_name: python_bitcount / f_locals: n=26, bc=5 /       │
00:01:00 v #1007 > > │ f_lineno: 94 / f_code.co_filename: \mpmath\libmp\libintmath.py /             │
00:01:00 v #1008 > > │ f_back.f_lineno: 778 / f_back.f_code.co_filename: \mpmath\libmp\libmpf.py /  │
00:01:00 v #1009 > > │ arg: None                                                                    │
00:01:00 v #1010 > > │ line(zeta_) / f_code.co_name: python_bitcount / f_locals: n=26, bc=5 /       │
00:01:00 v #1011 > > │ f_lineno: 95 / f_code.co_filename: \mpmath\libmp\libintmath.py /             │
00:01:00 v #1012 > > │ f_back.f_lineno: 778 / f_back.f_code.co_filename: \mpmath\libmp\libmpf.py /  │
00:01:00 v #1013 > > │ arg: None                                                                    │
00:01:00 v #1014 > > │ return(zeta_) / f_code.co_name: python_bitcount / f_locals: n=26, bc=5 /     │
00:01:00 v #1015 > > │ f_lineno: 95 / f_code.co_filename: \mpmath\libmp\libintmath.py /             │
00:01:00 v #1016 > > │ f_back.f_lineno: 778 / f_back.f_code.co_filename: \mpmath\libmp\libmpf.py /  │
00:01:00 v #1017 > > │ arg: 5                                                                       │
00:01:00 v #1018 > > │ line(zeta_) / f_code.co_name: mpf_add / f_locals: s=(0, 1, 2, 1), t=(0, 25,  │
00:01:00 v #1019 > > │ 2, 5), prec=14, rnd='d', _sub=0, ssign=0, sman=1, sexp=2, sbc=1, tsign=0,    │
00:01:00 v #1020 > > │ tman=25, texp=2, tbc=5, offset=0, man=26, bc=5 / f_lineno: 779 /             │
00:01:00 v #1021 > > │ f_code.co_filename: \mpmath\libmp\libmpf.py / f_back.f_lineno: 1401 /        │
00:01:00 v #1022 > > │ f_back.f_code.co_filename: \mpmath\libmp\libmpf.py / arg: None               │
00:01:00 v #1023 > > │ zeta_ / result: (1.19798250067418 + 0.0791704917205257j) / count: 1174       │
00:01:00 v #1024 > > │ zeta / count: 0 / s: Complex { re: 2.0, im: -10.0 }                          │
00:01:00 v #1025 > > │ zeta__ / s: Complex { re: 2.0, im: -10.0 } / result: Ok(Complex { re:        │
00:01:00 v #1026 > > │ 1.1979825006741847, im: 0.07917049172052575 }) / z: Complex { re: NaN, im:   │
00:01:00 v #1027 > > │ NaN }                                                                        │
00:01:00 v #1028 > > │ __assert_eq / actual: 1.1979825006741847 / expected: 1.1979825006741847      │
00:01:00 v #1029 > > │ __assert_eq / actual: -0.07917049172052575 / expected: -0.07917049172052575  │
00:01:00 v #1030 > > │                                                                              │
00:01:00 v #1031 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:00 v #1032 > >
00:01:00 v #1033 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:00 v #1034 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:00 v #1035 > > │ ## test_behavior_near_origin___                                              │
00:01:00 v #1036 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:00 v #1037 > >
00:01:00 v #1038 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:00 v #1039 > > inl test_behavior_near_origin___ log = run_test log fun zeta, gamma =>
00:01:00 v #1040 > >     inl s = .^(0.01, 0.01)
00:01:00 v #1041 > >     inl result = zeta s
00:01:00 v #1042 > >     result |> re |> _assert_lt limit.max
00:01:00 v #1043 > >     result |> im |> _assert_lt limit.max
00:01:01 v #1044 > >
00:01:01 v #1045 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:01 v #1046 > > //// test
00:01:01 v #1047 > > ///! rust -d num-complex pyo3
00:01:01 v #1048 > >
00:01:01 v #1049 > > test_behavior_near_origin___ true
00:01:04 v #1050 > >
00:01:04 v #1051 > > ╭─[ 3.38s - return value ]─────────────────────────────────────────────────────╮
00:01:04 v #1052 > > │ zeta_ / s: (0.01, 0.01) / count: 0                                           │
00:01:04 v #1053 > > │ call(zeta_) / f_code.co_name: zeta / f_locals: s=(0.01+0.01j), a=1,          │
00:01:04 v #1054 > > │ derivative=0, method=None, kwargs={} / f_lineno: 528 / f_code.co_filename:   │
00:01:04 v #1055 > > │ \mpmath\functions\zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │
00:01:04 v #1056 > > │ / arg: None                                                                  │
00:01:04 v #1057 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(0.01+0.01j), a=1,          │
00:01:04 v #1058 > > │ derivative=0, method=None, kwargs={} / f_lineno: 530 / f_code.co_filename:   │
00:01:04 v #1059 > > │ \mpmath\functions\zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │
00:01:04 v #1060 > > │ / arg: None                                                                  │
00:01:04 v #1061 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(0.01+0.01j), a=1,          │
00:01:04 v #1062 > > │ derivative=0, method=None, kwargs={}, d=0 / f_lineno: 531 /                  │
00:01:04 v #1063 > > │ f_code.co_filename: \mpmath\functions\zeta.py / f_back.f_lineno: 25 /        │
00:01:04 v #1064 > > │ f_back.f_code.co_filename:  / arg: None                                      │
00:01:04 v #1065 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(0.01+0.01j), a=1,          │
00:01:04 v #1066 > > │ derivative=0, method=None, kwargs={}, d=0 / f_lineno: 532 /                  │
00:01:04 v #1067 > > │ f_code.co_filename: \mpmath\functions\zeta.py / f_back.f_lineno: 25 /        │
00:01:04 v #1068 > > │ f_back.f_code.co_filename:  / arg: None                                      │
00:01:04 v #1069 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(0.01+0.01j), a=1,          │
00:01:04 v #1070 > > │ derivative=0, method=None, kwargs={}, d=0 / f_lineno: 533 /                  │
00:01:04 v #1071 > > │ f_code.co_filename: \mpmath\functions\zeta.py / f_back.f_lineno: 25 /        │
00:01:04 v #1072 > > │ f_back.f_code.co_filename:  / arg: None                                      │
00:01:04 v #1073 > > │ call(zeta_) / f_code.co_name: f / f_locals: x=(0.01+0.01j), kwargs={},       │
00:01:04 v #1074 > > │ name='zeta' / f_lineno: 989 / f_code.co_filename: \mpmath\ctx_mp_python.py / │
00:01:04 v #1075 > > │ f_back.f_lineno: 533 / f_back.f_code.co_filename: \mpmath\functions\zeta.py  │
00:01:04 v #1076 > > │ / arg: None                                                                  │
00:01:04 v #1077 > > │ line(zeta_) / f_code.co_name: f / f_locals: x=(0...py / f_back.f_lineno:     │
00:01:04 v #1078 > > │ 1007 / f_back.f_code.co_filename: \mpmath\ctx_mp_python.py / arg: None       │
00:01:04 v #1079 > > │ line(gamma_) / f_code.co_name: mpc_gamma / f_locals: z=((0,                  │
00:01:04 v #1080 > > │ 4458563631096791, -52, 52), (1, 5764607523034235, -59, 53)), prec=53,        │
00:01:04 v #1081 > > │ rnd='n', type=0, a=(0, 4458563631096791, -52, 52), b=(1, 5764607523034235,   │
00:01:04 v #1082 > > │ -59, 53), asign=0, aman=4458563631096791, aexp=-52, abc=52, bsign=1,         │
00:01:04 v #1083 > > │ bman=5764607523034235, bexp=-59, bbc=53, wp=73, amag=0, bmag=-6, mag=0,      │
00:01:04 v #1084 > > │ an=0, bn=0, absn=0j, gamma_size=0, need_reflection=0, zorig=((0,             │
00:01:04 v #1085 > > │ 4458563631096791, -52, 52), (1, 5764607523034235, -59, 53)), yfinal=0,       │
00:01:04 v #1086 > > │ balance_prec=0, n_for_stirling=14, need_reduction=True,                      │
00:01:04 v #1087 > > │ afix=132131814190692672995328, bfix=-94447329657392906240, r=0, zprered=((0, │
00:01:04 v #1088 > > │ 4458563631096791, -52, 52), (1, 5764607523034235, -59, 53)), d=14,           │
00:01:04 v #1089 > > │ rre=56942610883563778729574216337150, one=9444732965739290427392,            │
00:01:04 v #1090 > > │ rim=-1820461636508155576115177658065, k=12 / f_lineno: 2043 /                │
00:01:04 v #1091 > > │ f_code.co_filename: \mpmath\libmp\gammazeta.py / f_back.f_lineno: 1007 /     │
00:01:04 v #1092 > > │ f_back.f_code.co_filename: \mpmath\ctx_mp_python.py / arg: None              │
00:01:04 v #1093 > > │ gamma_ / result: (1.00577030202902 + 0.0059717824054102j) / count: 383       │
00:01:04 v #1094 > > │ gamma__ / s: Complex { re: 0.99, im: -0.01 } / result: Ok(Complex { re:      │
00:01:04 v #1095 > > │ 1.005770302029023, im: 0.005971782405410201 })                               │
00:01:04 v #1096 > > │ zeta__ / s: Complex { re: 0.01, im: 0.01 } / result: Ok(Complex { re:        │
00:01:04 v #1097 > > │ -0.5091873433665667, im: -0.00939202213994577 }) / z: Complex { re: 0.0, im: │
00:01:04 v #1098 > > │ 0.0 }                                                                        │
00:01:04 v #1099 > > │ __assert_lt / actual: -0.5091873433665667 / expected: inf                    │
00:01:04 v #1100 > > │ __assert_lt / actual: -0.00939202213994577 / expected: inf                   │
00:01:04 v #1101 > > │                                                                              │
00:01:04 v #1102 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:04 v #1103 > >
00:01:04 v #1104 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:04 v #1105 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:04 v #1106 > > │ ## test_imaginary_axis                                                       │
00:01:04 v #1107 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:04 v #1108 > >
00:01:04 v #1109 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:04 v #1110 > > inl test_imaginary_axis log = run_test log fun zeta, gamma =>
00:01:04 v #1111 > >     (join [[ 10; 20; 30; 40; 50; 60; 70; 80; 90; 100 ]])
00:01:04 v #1112 > >     |> listm.iter fun s =>
00:01:04 v #1113 > >         inl s = .^(0, s)
00:01:04 v #1114 > >         inl result = zeta s
00:01:04 v #1115 > >         result |> re |> _assert_ne 0
00:01:04 v #1116 > >         result |> im |> _assert_ne 0
00:01:04 v #1117 > >
00:01:04 v #1118 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:04 v #1119 > > //// test
00:01:04 v #1120 > > ///! rust -d num-complex pyo3
00:01:04 v #1121 > >
00:01:04 v #1122 > > test_imaginary_axis true
00:01:08 v #1123 > >
00:01:08 v #1124 > > ╭─[ 3.68s - return value ]─────────────────────────────────────────────────────╮
00:01:08 v #1125 > > │ zeta_ / s: (0.0, 10.0) / count: 0                                            │
00:01:08 v #1126 > > │ call(zeta_) / f_code.co_name: zeta / f_locals: s=10j, a=1, derivative=0,     │
00:01:08 v #1127 > > │ method=None, kwargs={} / f_lineno: 528 / f_code.co_filename:                 │
00:01:08 v #1128 > > │ \mpmath\functions\zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │
00:01:08 v #1129 > > │ / arg: None                                                                  │
00:01:08 v #1130 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=10j, a=1, derivative=0,     │
00:01:08 v #1131 > > │ method=None, kwargs={} / f_lineno: 530 / f_code.co_filename:                 │
00:01:08 v #1132 > > │ \mpmath\functions\zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │
00:01:08 v #1133 > > │ / arg: None                                                                  │
00:01:08 v #1134 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=10j, a=1, derivative=0,     │
00:01:08 v #1135 > > │ method=None, kwargs={}, d=0 / f_lineno: 531 / f_code.co_filename:            │
00:01:08 v #1136 > > │ \mpmath\functions\zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │
00:01:08 v #1137 > > │ / arg: None                                                                  │
00:01:08 v #1138 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=10j, a=1, derivative=0,     │
00:01:08 v #1139 > > │ method=None, kwargs={}, d=0 / f_lineno: 532 / f_code.co_filename:            │
00:01:08 v #1140 > > │ \mpmath\functions\zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │
00:01:08 v #1141 > > │ / arg: None                                                                  │
00:01:08 v #1142 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=10j, a=1, derivative=0,     │
00:01:08 v #1143 > > │ method=None, kwargs={}, d=0 / f_lineno: 533 / f_code.co_filename:            │
00:01:08 v #1144 > > │ \mpmath\functions\zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │
00:01:08 v #1145 > > │ / arg: None                                                                  │
00:01:08 v #1146 > > │ call(zeta_) / f_code.co_name: f / f_locals: x=10j, kwargs={}, name='zeta' /  │
00:01:08 v #1147 > > │ f_lineno: 989 / f_code.co_filename: \mpmath\ctx_mp_python.py /               │
00:01:08 v #1148 > > │ f_back.f_lineno: 533 / f_back.f_code.co_filename: \mpmath\functions\zeta.py  │
00:01:08 v #1149 > > │ / arg: None                                                                  │
00:01:08 v #1150 > > │ line(zeta_) / f_code.co_name: f / f_locals: x=10j, kwargs={}, name='zeta' /  │
00:01:08 v #1151 > > │ f_lineno: 990 / f_code.co_f...g: None                                        │
00:01:08 v #1152 > > │ line(gamma_) / f_code.co_name: to_fixed / f_locals: s=(0, 1, 0, 1), prec=83  │
00:01:08 v #1153 > > │ / f_lineno: 511 / f_code.co_filename: \mpmath\libmp\libmpf.py /              │
00:01:08 v #1154 > > │ f_back.f_lineno: 2031 / f_back.f_code.co_filename:                           │
00:01:08 v #1155 > > │ \mpmath\libmp\gammazeta.py / arg: None                                       │
00:01:08 v #1156 > > │ line(gamma_) / f_code.co_name: to_fixed / f_locals: s=(0, 1, 0, 1), prec=83, │
00:01:08 v #1157 > > │ sign=0, man=1, exp=0, bc=1 / f_lineno: 512 / f_code.co_filename:             │
00:01:08 v #1158 > > │ \mpmath\libmp\libmpf.py / f_back.f_lineno: 2031 / f_back.f_code.co_filename: │
00:01:08 v #1159 > > │ \mpmath\libmp\gammazeta.py / arg: None                                       │
00:01:08 v #1160 > > │ line(gamma_) / f_code.co_name: to_fixed / f_locals: s=(0, 1, 0, 1), prec=83, │
00:01:08 v #1161 > > │ sign=0, man=1, exp=0, bc=1, offset=83 / f_lineno: 513 / f_code.co_filename:  │
00:01:08 v #1162 > > │ \mpmath\libmp\libmpf.py / f_back.f_lineno: 2031 / f_back.f_code.co_filename: │
00:01:08 v #1163 > > │ \mpmath\libmp\gammazeta.py / arg: None                                       │
00:01:08 v #1164 > > │ line(gamma_) / f_code.co_name: to_fixed / f_locals: s=(0, 1, 0, 1), prec=83, │
00:01:08 v #1165 > > │ sign=0, man=1, exp=0, bc=1, offset=83 / f_lineno: 517 / f_code.co_filename:  │
00:01:08 v #1166 > > │ \mpmath\libmp\libmpf.py / f_back.f_lineno: 2031 / f_back.f_code.co_filename: │
00:01:08 v #1167 > > │ \mpmath\libmp\gammazeta.py / arg: None                                       │
00:01:08 v #1168 > > │ gamma_ / result: (-1.51425318049776e-67 + 2.79082155561748e-69j) / count:    │
00:01:08 v #1169 > > │ 289                                                                          │
00:01:08 v #1170 > > │ gamma__ / s: Complex { re: 1.0, im: -100.0 } / result: Ok(Complex { re:      │
00:01:08 v #1171 > > │ -1.514253180497756e-67, im: 2.7908215556174775e-69 })                        │
00:01:08 v #1172 > > │ zeta__ / s: Complex { re: 0.0, im: 100.0 } / result: Ok(Complex { re:        │
00:01:08 v #1173 > > │ 6.51721042625301, im: 0.18128842533791736 }) / z: Complex { re: 0.0, im: 0.0 │
00:01:08 v #1174 > > │ }                                                                            │
00:01:08 v #1175 > > │ __assert_ne / actual: 6.51721042625301 / expected: 0.0                       │
00:01:08 v #1176 > > │ __assert_ne / actual: 0.18128842533791736 / expected: 0.0                    │
00:01:08 v #1177 > > │                                                                              │
00:01:08 v #1178 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:08 v #1179 > >
00:01:08 v #1180 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:08 v #1181 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:08 v #1182 > > │ ## test_critical_strip                                                       │
00:01:08 v #1183 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:08 v #1184 > >
00:01:08 v #1185 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:08 v #1186 > > inl test_critical_strip log = run_test log fun zeta, gamma =>
00:01:08 v #1187 > >     (join [[
00:01:08 v #1188 > >         .^(0.5, 14.134725)
00:01:08 v #1189 > >         .^(0.75, 20.5)
00:01:08 v #1190 > >         .^(1.25, 30.1)
00:01:08 v #1191 > >         .^(0.25, 40.0)
00:01:08 v #1192 > >         .^(1.0, 50.0)
00:01:08 v #1193 > >     ]])
00:01:08 v #1194 > >     |> listm.iter fun s =>
00:01:08 v #1195 > >         inl result = zeta s
00:01:08 v #1196 > >         result |> re |> _assert_ne 0
00:01:08 v #1197 > >         result |> im |> _assert_ne 0
00:01:08 v #1198 > >
00:01:08 v #1199 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:08 v #1200 > > //// test
00:01:08 v #1201 > > ///! rust -d num-complex pyo3
00:01:08 v #1202 > >
00:01:08 v #1203 > > test_critical_strip true
00:01:12 v #1204 > >
00:01:12 v #1205 > > ╭─[ 3.73s - return value ]─────────────────────────────────────────────────────╮
00:01:12 v #1206 > > │ zeta_ / s: (0.5, 14.134725) / count: 0                                       │
00:01:12 v #1207 > > │ call(zeta_) / f_code.co_name: zeta / f_locals: s=(0.5+14.134725j), a=1,      │
00:01:12 v #1208 > > │ derivative=0, method=None, kwargs={} / f_lineno: 528 / f_code.co_filename:   │
00:01:12 v #1209 > > │ \mpmath\functions\zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │
00:01:12 v #1210 > > │ / arg: None                                                                  │
00:01:12 v #1211 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(0.5+14.134725j), a=1,      │
00:01:12 v #1212 > > │ derivative=0, method=None, kwargs={} / f_lineno: 530 / f_code.co_filename:   │
00:01:12 v #1213 > > │ \mpmath\functions\zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │
00:01:12 v #1214 > > │ / arg: None                                                                  │
00:01:12 v #1215 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(0.5+14.134725j), a=1,      │
00:01:12 v #1216 > > │ derivative=0, method=None, kwargs={}, d=0 / f_lineno: 531 /                  │
00:01:12 v #1217 > > │ f_code.co_filename: \mpmath\functions\zeta.py / f_back.f_lineno: 25 /        │
00:01:12 v #1218 > > │ f_back.f_code.co_filename:  / arg: None                                      │
00:01:12 v #1219 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(0.5+14.134725j), a=1,      │
00:01:12 v #1220 > > │ derivative=0, method=None, kwargs={}, d=0 / f_lineno: 532 /                  │
00:01:12 v #1221 > > │ f_code.co_filename: \mpmath\functions\zeta.py / f_back.f_lineno: 25 /        │
00:01:12 v #1222 > > │ f_back.f_code.co_filename:  / arg: None                                      │
00:01:12 v #1223 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(0.5+14.134725j), a=1,      │
00:01:12 v #1224 > > │ derivative=0, method=None, kwargs={}, d=0 / f_lineno: 533 /                  │
00:01:12 v #1225 > > │ f_code.co_filename: \mpmath\functions\zeta.py / f_back.f_lineno: 25 /        │
00:01:12 v #1226 > > │ f_back.f_code.co_filename:  / arg: None                                      │
00:01:12 v #1227 > > │ call(zeta_) / f_code.co_name: f / f_locals: x=(0.5+14.134725j), kwargs={},   │
00:01:12 v #1228 > > │ name='zeta' / f_lineno: 989 / f_code.co_filename: \mpmath\ctx_mp_python.py / │
00:01:12 v #1229 > > │ f_back.f_lineno: 533 / f_back.f_code.co_filename: \mpmath\functions\zeta.py  │
00:01:12 v #1230 > > │ / arg: None                                                                  │
00:01:12 v #1231 > > │ line(zeta_) / f_code...210, sim=241793223535862290161314995 / f_lineno: 1648 │
00:01:12 v #1232 > > │ / f_code.co_filename: \mpmath\libmp\gammazeta.py / f_back.f_lineno: 2050 /   │
00:01:12 v #1233 > > │ f_back.f_code.co_filename: \mpmath\libmp\gammazeta.py / arg: None            │
00:01:12 v #1234 > > │ line(gamma_) / f_code.co_name: complex_stirling_series / f_locals: x=0,      │
00:01:12 v #1235 > > │ y=-241785163922925834941235200, prec=82, _m=12089258196146291747061760000,   │
00:01:12 v #1236 > > │ tre=0, tim=396, ure=-1934281311383406679530, uim=0,                          │
00:01:12 v #1237 > > │ sre=4443714077719696485012210, sim=241793223535862290161314995 / f_lineno:   │
00:01:12 v #1238 > > │ 1649 / f_code.co_filename: \mpmath\libmp\gammazeta.py / f_back.f_lineno:     │
00:01:12 v #1239 > > │ 2050 / f_back.f_code.co_filename: \mpmath\libmp\gammazeta.py / arg: None     │
00:01:12 v #1240 > > │ line(gamma_) / f_code.co_name: complex_stirling_series / f_locals: x=0,      │
00:01:12 v #1241 > > │ y=-241785163922925834941235200, prec=82, _m=12089258196146291747061760000,   │
00:01:12 v #1242 > > │ tre=0, tim=396, ure=-1934281311383406679530, uim=0,                          │
00:01:12 v #1243 > > │ sre=4443714077719696485012210, sim=241793223535862290161314997 / f_lineno:   │
00:01:12 v #1244 > > │ 1650 / f_code.co_filename: \mpmath\libmp\gammazeta.py / f_back.f_lineno:     │
00:01:12 v #1245 > > │ 2050 / f_back.f_code.co_filename: \mpmath\libmp\gammazeta.py / arg: None     │
00:01:12 v #1246 > > │ gamma_ / result: (2.63173210619768e-35 - 8.16464935465334e-36j) / count: 262 │
00:01:12 v #1247 > > │ gamma__ / s: Complex { re: 0.0, im: -50.0 } / result: Ok(Complex { re:       │
00:01:12 v #1248 > > │ 2.6317321061976804e-35, im: -8.164649354653339e-36 })                        │
00:01:12 v #1249 > > │ zeta__ / s: Complex { re: 1.0, im: 50.0 } / result: Ok(Complex { re:         │
00:01:12 v #1250 > > │ 0.44103873082309397, im: 0.281582455029683 }) / z: Complex { re: 0.0, im:    │
00:01:12 v #1251 > > │ 0.0 }                                                                        │
00:01:12 v #1252 > > │ __assert_ne / actual: 0.44103873082309397 / expected: 0.0                    │
00:01:12 v #1253 > > │ __assert_ne / actual: 0.281582455029683 / expected: 0.0                      │
00:01:12 v #1254 > > │                                                                              │
00:01:12 v #1255 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:12 v #1256 > >
00:01:12 v #1257 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:12 v #1258 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:12 v #1259 > > │ ## test_reflection_formula_for_specific_value                                │
00:01:12 v #1260 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:12 v #1261 > >
00:01:12 v #1262 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:12 v #1263 > > inl test_reflection_formula_for_specific_value log = run_test log fun zeta,
00:01:12 v #1264 > > gamma =>
00:01:12 v #1265 > >     (join [[
00:01:12 v #1266 > >         .^(3, 4)
00:01:12 v #1267 > >         .^(2.5, -3.5)
00:01:12 v #1268 > >         .^(1.5, 2.5)
00:01:12 v #1269 > >         .^(0.5, 14.134725)
00:01:12 v #1270 > >     ]])
00:01:12 v #1271 > >     |> listm.iter fun s =>
00:01:12 v #1272 > >         inl lhs = zeta s
00:01:12 v #1273 > >         inl reflection_coefficient =
00:01:12 v #1274 > >             (.^(2, 0) .** s)
00:01:12 v #1275 > >             .* (.^(pi, 0) .** (s .- .^(1, 0)))
00:01:12 v #1276 > >             .* (.^(pi, 0) .* s ./ .^(2, 0) |> complex_sin)
00:01:12 v #1277 > >             .* gamma (.^(1, 0) .- s)
00:01:12 v #1278 > >
00:01:12 v #1279 > >         inl one_minus_s = .^(1 - re s, -(im s))
00:01:12 v #1280 > >         inl rhs = reflection_coefficient .* zeta one_minus_s
00:01:12 v #1281 > >
00:01:12 v #1282 > >         re lhs - re rhs |> abs |> _assert_lt 0.0001
00:01:12 v #1283 > >         im lhs - im rhs |> abs |> _assert_lt 0.0001
00:01:13 v #1284 > >
00:01:13 v #1285 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:13 v #1286 > > //// test
00:01:13 v #1287 > > ///! rust -d num-complex pyo3
00:01:13 v #1288 > >
00:01:13 v #1289 > > test_reflection_formula_for_specific_value true
00:01:17 v #1290 > >
00:01:17 v #1291 > > ╭─[ 4.04s - return value ]─────────────────────────────────────────────────────╮
00:01:17 v #1292 > > │ zeta_ / s: (3.0, 4.0) / count: 0                                             │
00:01:17 v #1293 > > │ call(zeta_) / f_code.co_name: zeta / f_locals: s=(3+4j), a=1, derivative=0,  │
00:01:17 v #1294 > > │ method=None, kwargs={} / f_lineno: 528 / f_code.co_filename:                 │
00:01:17 v #1295 > > │ \mpmath\functions\zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │
00:01:17 v #1296 > > │ / arg: None                                                                  │
00:01:17 v #1297 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(3+4j), a=1, derivative=0,  │
00:01:17 v #1298 > > │ method=None, kwargs={} / f_lineno: 530 / f_code.co_filename:                 │
00:01:17 v #1299 > > │ \mpmath\functions\zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │
00:01:17 v #1300 > > │ / arg: None                                                                  │
00:01:17 v #1301 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(3+4j), a=1, derivative=0,  │
00:01:17 v #1302 > > │ method=None, kwargs={}, d=0 / f_lineno: 531 / f_code.co_filename:            │
00:01:17 v #1303 > > │ \mpmath\functions\zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │
00:01:17 v #1304 > > │ / arg: None                                                                  │
00:01:17 v #1305 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(3+4j), a=1, derivative=0,  │
00:01:17 v #1306 > > │ method=None, kwargs={}, d=0 / f_lineno: 532 / f_code.co_filename:            │
00:01:17 v #1307 > > │ \mpmath\functions\zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │
00:01:17 v #1308 > > │ / arg: None                                                                  │
00:01:17 v #1309 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(3+4j), a=1, derivative=0,  │
00:01:17 v #1310 > > │ method=None, kwargs={}, d=0 / f_lineno: 533 / f_code.co_filename:            │
00:01:17 v #1311 > > │ \mpmath\functions\zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │
00:01:17 v #1312 > > │ / arg: None                                                                  │
00:01:17 v #1313 > > │ call(zeta_) / f_code.co_name: f / f_locals: x=(3+4j), kwargs={}, name='zeta' │
00:01:17 v #1314 > > │ / f_lineno: 989 / f_code.co_filename: \mpmath\ctx_mp_python.py /             │
00:01:17 v #1315 > > │ f_back.f_lineno: 533 / f_back.f_code.co_filename: \mpmath\functions\zeta.py  │
00:01:17 v #1316 > > │ / arg: None                                                                  │
00:01:17 v #1317 > > │ line(zeta_) / f_code.co_name: f / f_locals: x=(3+4j), kwargs={}, name='zeta' │
00:01:17 v #1318 > > │ / f_linen...045 / f_code.co_filename: \mpmath\libmp\gammazeta.py /           │
00:01:17 v #1319 > > │ f_back.f_lineno: 1007 / f_back.f_code.co_filename: \mpmath\ctx_mp_python.py  │
00:01:17 v #1320 > > │ / arg: None                                                                  │
00:01:17 v #1321 > > │ line(gamma_) / f_code.co_name: mpc_gamma / f_locals: z=((0, 1, -1, 1), (0,   │
00:01:17 v #1322 > > │ 3978571390186527, -48, 52)), prec=53, rnd='n', type=0, a=(0, 1, -1, 1),      │
00:01:17 v #1323 > > │ b=(0, 3978571390186527, -48, 52), asign=0, aman=1, aexp=-1, abc=1, bsign=0,  │
00:01:17 v #1324 > > │ bman=3978571390186527, bexp=-48, bbc=52, wp=79, amag=0, bmag=4, mag=4, an=0, │
00:01:17 v #1325 > > │ bn=14, absn=14j, gamma_size=56, need_reflection=0, zorig=((0, 1, -1, 1), (0, │
00:01:17 v #1326 > > │ 3978571390186527, -48, 52)), yfinal=0, balance_prec=0, n_for_stirling=15,    │
00:01:17 v #1327 > > │ need_reduction=True, afix=2115620184325601055735808,                         │
00:01:17 v #1328 > > │ bfix=8543917002826194402410496, r=0, zprered=((0, 1, -1, 1), (0,             │
00:01:17 v #1329 > > │ 3978571390186527, -48, 52)), d=5, rre=-542313259704087430481959845,          │
00:01:17 v #1330 > > │ one=604462909807314587353088, rim=-1657865507045117397880679064, k=2 /       │
00:01:17 v #1331 > > │ f_lineno: 2043 / f_code.co_filename: \mpmath\libmp\gammazeta.py /            │
00:01:17 v #1332 > > │ f_back.f_lineno: 1007 / f_back.f_code.co_filename: \mpmath\ctx_mp_python.py  │
00:01:17 v #1333 > > │ / arg: None                                                                  │
00:01:17 v #1334 > > │ gamma_ / result: (-1.4455538437607e-10 - 5.52278876877407e-10j) / count: 318 │
00:01:17 v #1335 > > │ gamma__ / s: Complex { re: 0.5, im: 14.134725 } / result: Ok(Complex { re:   │
00:01:17 v #1336 > > │ -1.4455538437606964e-10, im: -5.522788768774066e-10 })                       │
00:01:17 v #1337 > > │ zeta__ / s: Complex { re: 0.5, im: -14.134725 } / result: Ok(Complex { re:   │
00:01:17 v #1338 > > │ 1.7674298413849186e-8, im: 1.1102028930923156e-7 }) / z: Complex { re: 0.0,  │
00:01:17 v #1339 > > │ im: 0.0 }                                                                    │
00:01:17 v #1340 > > │ __assert_lt / actual: 4.499862532288471e-22 / expected: 0.0001               │
00:01:17 v #1341 > > │ __assert_lt / actual: 1.4558378780933287e-22 / expected: 0.0001              │
00:01:17 v #1342 > > │                                                                              │
00:01:17 v #1343 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:17 v #1344 > >
00:01:17 v #1345 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:17 v #1346 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:17 v #1347 > > │ ## test_euler_product_formula                                                │
00:01:17 v #1348 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:17 v #1349 > >
00:01:17 v #1350 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:17 v #1351 > > inl test_euler_product_formula log = run_test log fun zeta, gamma =>
00:01:17 v #1352 > >     inl s_values = join [[ 2; 2.5; 3; 3.5; 4; 4.5; 5 ]]
00:01:17 v #1353 > >     inl primes = join [[ 2; 3; 5; 7; 11; 13; 17; 19; 23; 29; 31; 37; 41; 43; 47;
00:01:17 v #1354 > > 53; 59; 61; 67; 71 ]]
00:01:17 v #1355 > >     s_values
00:01:17 v #1356 > >     |> listm.iter fun s_re =>
00:01:17 v #1357 > >         inl s = .^(s_re, 0)
00:01:17 v #1358 > >         inl product =
00:01:17 v #1359 > >             (1, primes)
00:01:17 v #1360 > >             ||> listm.fold fun acc x =>
00:01:17 v #1361 > >                 acc * 1 / (1 - x ** -s_re)
00:01:17 v #1362 > >
00:01:17 v #1363 > >         inl result = zeta s
00:01:17 v #1364 > >         re result - product |> abs |> _assert_lt 0.01
00:01:17 v #1365 > >         result |> im |> _assert_lt 0.01
00:01:17 v #1366 > >
00:01:17 v #1367 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:17 v #1368 > > //// test
00:01:17 v #1369 > > ///! rust -d num-complex pyo3
00:01:17 v #1370 > >
00:01:17 v #1371 > > test_euler_product_formula true
00:01:21 v #1372 > >
00:01:21 v #1373 > > ╭─[ 3.55s - return value ]─────────────────────────────────────────────────────╮
00:01:21 v #1374 > > │ zeta_ / s: (2.0, 0.0) / count: 0                                             │
00:01:21 v #1375 > > │ call(zeta_) / f_code.co_name: zeta / f_locals: s=(2+0j), a=1, derivative=0,  │
00:01:21 v #1376 > > │ method=None, kwargs={} / f_lineno: 528 / f_code.co_filename:                 │
00:01:21 v #1377 > > │ \mpmath\functions\zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │
00:01:21 v #1378 > > │ / arg: None                                                                  │
00:01:21 v #1379 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+0j), a=1, derivative=0,  │
00:01:21 v #1380 > > │ method=None, kwargs={} / f_lineno: 530 / f_code.co_filename:                 │
00:01:21 v #1381 > > │ \mpmath\functions\zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │
00:01:21 v #1382 > > │ / arg: None                                                                  │
00:01:21 v #1383 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+0j), a=1, derivative=0,  │
00:01:21 v #1384 > > │ method=None, kwargs={}, d=0 / f_lineno: 531 / f_code.co_filename:            │
00:01:21 v #1385 > > │ \mpmath\functions\zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │
00:01:21 v #1386 > > │ / arg: None                                                                  │
00:01:21 v #1387 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+0j), a=1, derivative=0,  │
00:01:21 v #1388 > > │ method=None, kwargs={}, d=0 / f_lineno: 532 / f_code.co_filename:            │
00:01:21 v #1389 > > │ \mpmath\functions\zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │
00:01:21 v #1390 > > │ / arg: None                                                                  │
00:01:21 v #1391 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+0j), a=1, derivative=0,  │
00:01:21 v #1392 > > │ method=None, kwargs={}, d=0 / f_lineno: 533 / f_code.co_filename:            │
00:01:21 v #1393 > > │ \mpmath\functions\zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │
00:01:21 v #1394 > > │ / arg: None                                                                  │
00:01:21 v #1395 > > │ call(zeta_) / f_code.co_name: f / f_locals: x=(2+0j), kwargs={}, name='zeta' │
00:01:21 v #1396 > > │ / f_lineno: 989 / f_code.co_filename: \mpmath\ctx_mp_python.py /             │
00:01:21 v #1397 > > │ f_back.f_lineno: 533 / f_back.f_code.co_filename: \mpmath\functions\zeta.py  │
00:01:21 v #1398 > > │ / arg: None                                                                  │
00:01:21 v #1399 > > │ line(zeta_) / f_code.co_name: f / f_locals: x=(2+0j), kwargs={}, name='zeta' │
00:01:21 v #1400 > > │ / f_linen...k.f_lineno: 985 / f_back.f_code.co_filename:                     │
00:01:21 v #1401 > > │ \mpmath\libmp\gammazeta.py / arg: None                                       │
00:01:21 v #1402 > > │ line(zeta_) / f_code.co_name: mpf_zeta_int / f_locals: s=5, prec=53,         │
00:01:21 v #1403 > > │ rnd='n', wp=73, m=19.25, needed_terms=623488, n=33, d=[1, 2179, 792067,      │
00:01:21 v #1404 > > │ 115062531, 8930212611, 429314925315, 13983537177347, 327666966438659,        │
00:01:21 v #1405 > > │ 5764846406968067, 78615943485956867, 851604426176701187,                     │
00:01:21 v #1406 > > │ 7470527451121689347, 53898915046387983107, 323897845985013506819,            │
00:01:21 v #1407 > > │ 1638178356374090130179, 7034281785235908174595, 25833609859980306522883,     │
00:01:21 v #1408 > > │ 81661917475887913739011, 223448095548034217779971, 532029677981012660429571, │
00:01:21 v #1409 > > │ 1108048631855905753375491, 2029946562680066824315651,                        │
00:01:21 v #1410 > > │ 3292927237466655352791811, 4769455369342763680768771,                        │
00:01:21 v #1411 > > │ 6235511670496346417767171, 7463408621503347142796035,                        │
00:01:21 v #1412 > > │ 8322751284048216428487427, 8818779962777819524211459,                        │
00:01:21 v #1413 > > │ 9050689474911140452082435, 9136270117622166323831555,                        │
00:01:21 v #1414 > > │ 9160252037839493347779331, 9165045885455648617505539,                        │
00:01:21 v #1415 > > │ 9165654628010081032708867, 9165691521498228451812099],                       │
00:01:21 v #1416 > > │ t=-84153986440240940095109733900764881301998910956, k=26 / f_lineno: 954 /   │
00:01:21 v #1417 > > │ f_code.co_filename: \mpmath\libmp\gammazeta.py / f_back.f_lineno: 985 /      │
00:01:21 v #1418 > > │ f_back.f_code.co_filename: \mpmath\libmp\gammazeta.py / arg: None            │
00:01:21 v #1419 > > │ zeta_ / result: (1.03692775514337 + 0.0j) / count: 228                       │
00:01:21 v #1420 > > │ zeta / count: 0 / s: Complex { re: 5.0, im: 0.0 }                            │
00:01:21 v #1421 > > │ zeta__ / s: Complex { re: 5.0, im: 0.0 } / result: Ok(Complex { re:          │
00:01:21 v #1422 > > │ 1.03692775514337, im: 0.0 }) / z: Complex { re: NaN, im: NaN }               │
00:01:21 v #1423 > > │ __assert_lt / actual: 2.0033654735129858e-9 / expected: 0.01                 │
00:01:21 v #1424 > > │ __assert_lt / actual: 0.0 / expected: 0.01                                   │
00:01:21 v #1425 > > │                                                                              │
00:01:21 v #1426 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:21 v #1427 > >
00:01:21 v #1428 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:21 v #1429 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:21 v #1430 > > │ ## graph                                                                     │
00:01:21 v #1431 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:21 v #1432 > >
00:01:21 v #1433 > > ── mermaid ─────────────────────────────────────────────────────────────────────
00:01:21 v #1434 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:21 v #1435 > > │ <div class="mermaidMarkdownContainer" style="background-color:white">        │
00:01:21 v #1436 > > │ <link rel="stylesheet"                                                       │
00:01:21 v #1437 > > │ href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.2.0/css/all.min. │
00:01:21 v #1438 > > │ css">                                                                        │
00:01:21 v #1439 > > │ <div id="671ce44d4fe24f8d8c8b7238a731b3c3"></div>                            │
00:01:21 v #1440 > > │ <script type="module">                                                       │
00:01:21 v #1441 > > │                                                                              │
00:01:21 v #1442 > > │             import mermaid from                                              │
00:01:21 v #1443 > > │ 'https://cdn.jsdelivr.net/npm/mermaid@10.6.1/dist/mermaid.esm.min.mjs';      │
00:01:21 v #1444 > > │             let renderTarget =                                               │
00:01:21 v #1445 > > │ document.getElementById('671ce44d4fe24f8d8c8b7238a731b3c3');                 │
00:01:21 v #1446 > > │             try {                                                            │
00:01:21 v #1447 > > │                 const {svg, bindFunctions} = await                           │
00:01:21 v #1448 > > │ mermaid.mermaidAPI.render(                                                   │
00:01:21 v #1449 > > │                     'mermaid_671ce44d4fe24f8d8c8b7238a731b3c3',              │
00:01:21 v #1450 > > │                     `graph TD                                                │
00:01:21 v #1451 > > │     zeta("zeta()") --> convert                                               │
00:01:21 v #1452 > > │     zeta --> f["f()"]                                                        │
00:01:21 v #1453 > > │     f --> mpc_f["mpc_zeta()"]                                                │
00:01:21 v #1454 > > │     f --> mpf_f["mpf_zeta()"]                                                │
00:01:21 v #1455 > > │     convert --> from_float                                                   │
00:01:21 v #1456 > > │     from_float --> from_man_exp                                              │
00:01:21 v #1457 > > │     from_man_exp --> python_bitcount                                         │
00:01:21 v #1458 > > │     python_bitcount --> _normalize                                           │
00:01:21 v #1459 > > │     _normalize --> make_mpc                                                  │
00:01:21 v #1460 > > │     make_mpc --> mpc_zeta["mpc_zeta()"]                                      │
00:01:21 v #1461 > > │     mpc_zeta --> mpf_zeta["mpf_zeta()"]                                      │
00:01:21 v #1462 > > │     mpf_zeta --> to_int                                                      │
00:01:21 v #1463 > > │     to_int --> mpf_zeta_int["mpf_zeta_int()"]                                │
00:01:21 v #1464 > > │     mpf_zeta_int --> borwein_coefficients                                    │
00:01:21 v #1465 > > │     borwein_coefficients --> from_man_exp_2("from_man_exp()")                │
00:01:21 v #1466 > > │     from_man_exp_2 --> python_bitcount_2("python_bitcount()")                │
00:01:21 v #1467 > > │     python_bitcount_2 --> _normalize_2("_normalize()")                       │
00:01:21 v #1468 > > │     _normalize_2 --> make_mpc_2("make_mpc()")                                │
00:01:21 v #1469 > > │     make_mpc_2 --> stop_trace                                                │
00:01:21 v #1470 > > │     mpf_zeta_int --> mpf_bernoulli                                           │
00:01:21 v #1471 > > │     mpf_bernoulli --> bernoulli_size                                         │
00:01:21 v #1472 > > │     bernoulli_size --> mpf_rdiv_int                                          │
00:01:21 v #1473 > > │     mpf_rdiv_int --> python_bitcount_3("python_bitcount()")                  │
00:01:21 v #1474 > > │     python_bitcount_3 --> _normalize1                                        │
00:01:21 v #1475 > > │     _normalize1 --> from_man_exp_3("from_man_exp()")                         │
00:01:21 v #1476 > > │     from_man_exp_3 --> _normalize_3("_normalize()")                          │
00:01:21 v #1477 > > │     _normalize_3 --> mpf_sub                                                 │
00:01:21 v #1478 > > │     mpf_sub --> mpf_add                                                      │
00:01:21 v #1479 > > │     mpf_add --> mpf_neg                                                      │
00:01:21 v #1480 > > │     mpf_neg --> _normalize1_2("_normalize1()")                               │
00:01:21 v #1481 > > │     _normalize1_2 --> from_int                                               │
00:01:21 v #1482 > > │     from_int --> mpf_div                                                     │
00:01:21 v #1483 > > │     mpf_div --> python_bitcount_4("python_bitcount()")                       │
00:01:21 v #1484 > > │     python_bitcount_4 --> _normalize1_3("_normalize1()")                     │
00:01:21 v #1485 > > │     _normalize1_3 --> make_mpc_3("make_mpc()")                               │
00:01:21 v #1486 > > │     make_mpc_3 --> final_stop["stop_trace()"]`);                             │
00:01:21 v #1487 > > │                 renderTarget.innerHTML = svg;                                │
00:01:21 v #1488 > > │                 bindFunctions?.(renderTarget);                               │
00:01:21 v #1489 > > │             }                                                                │
00:01:21 v #1490 > > │             catch (error) {                                                  │
00:01:21 v #1491 > > │                 console.log(error);                                          │
00:01:21 v #1492 > > │             }                                                                │
00:01:21 v #1493 > > │ </script>                                                                    │
00:01:21 v #1494 > > │ </div>                                                                       │
00:01:21 v #1495 > > │                                                                              │
00:01:21 v #1496 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:21 v #1497 > >
00:01:21 v #1498 > > ── mermaid ─────────────────────────────────────────────────────────────────────
00:01:21 v #1499 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:21 v #1500 > > │ <div class="mermaidMarkdownContainer" style="background-color:white">        │
00:01:21 v #1501 > > │ <link rel="stylesheet"                                                       │
00:01:21 v #1502 > > │ href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.2.0/css/all.min. │
00:01:21 v #1503 > > │ css">                                                                        │
00:01:21 v #1504 > > │ <div id="7b61f8d0d3fb487ebde89c81e642b9d7"></div>                            │
00:01:21 v #1505 > > │ <script type="module">                                                       │
00:01:21 v #1506 > > │                                                                              │
00:01:21 v #1507 > > │             import mermaid from                                              │
00:01:21 v #1508 > > │ 'https://cdn.jsdelivr.net/npm/mermaid@10.6.1/dist/mermaid.esm.min.mjs';      │
00:01:21 v #1509 > > │             let renderTarget =                                               │
00:01:21 v #1510 > > │ document.getElementById('7b61f8d0d3fb487ebde89c81e642b9d7');                 │
00:01:21 v #1511 > > │             try {                                                            │
00:01:21 v #1512 > > │                 const {svg, bindFunctions} = await                           │
00:01:21 v #1513 > > │ mermaid.mermaidAPI.render(                                                   │
00:01:21 v #1514 > > │                     'mermaid_7b61f8d0d3fb487ebde89c81e642b9d7',              │
00:01:21 v #1515 > > │                     `graph TD                                                │
00:01:21 v #1516 > > │     zeta_rust("zeta() - Rust") --> num_traits("num-traits")                  │
00:01:21 v #1517 > > │     zeta_rust --> num_bigint("num-bigint")                                   │
00:01:21 v #1518 > > │     zeta_rust --> rust_decimal("rust_decimal for precision")                 │
00:01:21 v #1519 > > │     zeta_rust --> error_handling("Rust Error Handling")                      │
00:01:21 v #1520 > > │                                                                              │
00:01:21 v #1521 > > │     num_traits --> num_traits_usage("Use for common traits")                 │
00:01:21 v #1522 > > │     num_bigint --> bigint_operations("Arbitrary-precision arithmetic         │
00:01:21 v #1523 > > │ operations")                                                                 │
00:01:21 v #1524 > > │     rust_decimal --> decimal_operations("High-precision decimal operations") │
00:01:21 v #1525 > > │     error_handling --> result_type("Use Result<T, E> for error handling")    │
00:01:21 v #1526 > > │                                                                              │
00:01:21 v #1527 > > │     bigint_operations --> convert_rust("convert() - Rust")                   │
00:01:21 v #1528 > > │     bigint_operations --> normalize_rust("_normalize() - Rust")              │
00:01:21 v #1529 > > │                                                                              │
00:01:21 v #1530 > > │     convert_rust --> from_float_rust("from_float() - Rust")                  │
00:01:21 v #1531 > > │     from_float_rust --> from_man_exp_rust("from_man_exp() - Rust")           │
00:01:21 v #1532 > > │     from_man_exp_rust --> bitcount_rust("bitcount() - Rust")                 │
00:01:21 v #1533 > > │     bitcount_rust --> normalize_rust                                         │
00:01:21 v #1534 > > │     normalize_rust --> mpc_zeta_rust("mpc_zeta() - Rust")                    │
00:01:21 v #1535 > > │     mpc_zeta_rust --> mpf_zeta_rust("mpf_zeta() - Rust")                     │
00:01:21 v #1536 > > │     mpf_zeta_rust --> to_int_rust("to_int() - Rust")                         │
00:01:21 v #1537 > > │     to_int_rust --> mpf_zeta_int_rust("mpf_zeta_int() - Rust")               │
00:01:21 v #1538 > > │                                                                              │
00:01:21 v #1539 > > │     mpf_zeta_int_rust --> borwein_coefficients_rust("borwein_coefficients()  │
00:01:21 v #1540 > > │ - Rust")                                                                     │
00:01:21 v #1541 > > │     borwein_coefficients_rust --> from_man_exp_rust_2("from_man_exp() -      │
00:01:21 v #1542 > > │ Rust")                                                                       │
00:01:21 v #1543 > > │     from_man_exp_rust_2 --> bitcount_rust_2("bitcount() - Rust")             │
00:01:21 v #1544 > > │     bitcount_rust_2 --> normalize_rust_2("_normalize() - Rust")              │
00:01:21 v #1545 > > │     normalize_rust_2 --> make_mpc_rust("make_mpc() - Rust")                  │
00:01:21 v #1546 > > │                                                                              │
00:01:21 v #1547 > > │     mpf_zeta_int_rust --> mpf_bernoulli_rust("mpf_bernoulli() - Rust")       │
00:01:21 v #1548 > > │     mpf_bernoulli_rust --> bernoulli_size_rust("bernoulli_size() - Rust")    │
00:01:21 v #1549 > > │     bernoulli_size_rust --> mpf_rdiv_int_rust("mpf_rdiv_int() - Rust")       │
00:01:21 v #1550 > > │     mpf_rdiv_int_rust --> bitcount_rust_3("bitcount() - Rust")               │
00:01:21 v #1551 > > │     bitcount_rust_3 --> normalize1_rust("_normalize1() - Rust")              │
00:01:21 v #1552 > > │     normalize1_rust --> from_man_exp_rust_3("from_man_exp() - Rust")         │
00:01:21 v #1553 > > │     from_man_exp_rust_3 --> normalize_rust_3("_normalize() - Rust")          │
00:01:21 v #1554 > > │     normalize_rust_3 --> mpf_sub_rust("mpf_sub() - Rust")                    │
00:01:21 v #1555 > > │     mpf_sub_rust --> mpf_add_rust("mpf_add() - Rust")                        │
00:01:21 v #1556 > > │     mpf_add_rust --> mpf_neg_rust("mpf_neg() - Rust")                        │
00:01:21 v #1557 > > │     mpf_neg_rust --> normalize1_rust_2("_normalize1() - Rust")               │
00:01:21 v #1558 > > │     normalize1_rust_2 --> from_int_rust("from_int() - Rust")                 │
00:01:21 v #1559 > > │     from_int_rust --> mpf_div_rust("mpf_div() - Rust")                       │
00:01:21 v #1560 > > │     mpf_div_rust --> bitcount_rust_4("bitcount() - Rust")                    │
00:01:21 v #1561 > > │     bitcount_rust_4 --> normalize1_rust_3("_normalize1() - Rust")            │
00:01:21 v #1562 > > │                                                                              │
00:01:21 v #1563 > > │     style zeta_rust fill:#f9f,stroke:#333,stroke-width:4px                   │
00:01:21 v #1564 > > │     style num_traits fill:#bbf,stroke:#333,stroke-width:2px                  │
00:01:21 v #1565 > > │     style num_bigint fill:#bbf,stroke:#333,stroke-width:2px                  │
00:01:21 v #1566 > > │     style rust_decimal fill:#bbf,stroke:#333,stroke-width:2px                │
00:01:21 v #1567 > > │     style error_handling fill:#bbf,stroke:#333,stroke-width:2px              │
00:01:21 v #1568 > > │     style bigint_operations fill:#bfb,stroke:#333,stroke-width:2px           │
00:01:21 v #1569 > > │     style decimal_operations fill:#bfb,stroke:#333,stroke-width:2px          │
00:01:21 v #1570 > > │     style result_type fill:#bfb,stroke:#333,stroke-width:2px`);              │
00:01:21 v #1571 > > │                 renderTarget.innerHTML = svg;                                │
00:01:21 v #1572 > > │                 bindFunctions?.(renderTarget);                               │
00:01:21 v #1573 > > │             }                                                                │
00:01:21 v #1574 > > │             catch (error) {                                                  │
00:01:21 v #1575 > > │                 console.log(error);                                          │
00:01:21 v #1576 > > │             }                                                                │
00:01:21 v #1577 > > │ </script>                                                                    │
00:01:21 v #1578 > > │ </div>                                                                       │
00:01:21 v #1579 > > │                                                                              │
00:01:21 v #1580 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:21 v #1581 > >
00:01:21 v #1582 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:21 v #1583 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:21 v #1584 > > │ ## tests                                                                     │
00:01:21 v #1585 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:21 v #1586 > >
00:01:21 v #1587 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:21 v #1588 > > inl tests () =
00:01:21 v #1589 > >     testing.run_tests_log {
00:01:21 v #1590 > >         test_zeta_at_known_values_
00:01:21 v #1591 > >         test_zeta_at_2_minus2
00:01:21 v #1592 > >         test_trivial_zero_at_negative_even___
00:01:21 v #1593 > >         test_non_trivial_zero___
00:01:21 v #1594 > >         test_real_part_greater_than_one___
00:01:21 v #1595 > >         test_zeta_at_1___
00:01:21 v #1596 > >         test_symmetry_across_real_axis___
00:01:21 v #1597 > >         test_behavior_near_origin___
00:01:21 v #1598 > >         test_imaginary_axis
00:01:21 v #1599 > >         test_critical_strip
00:01:21 v #1600 > >         test_reflection_formula_for_specific_value
00:01:21 v #1601 > >         test_euler_product_formula
00:01:21 v #1602 > >     }
00:01:21 v #1603 > >
00:01:21 v #1604 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:21 v #1605 > > ///! _
00:01:21 v #1606 > >
00:01:21 v #1607 > > inl main (_args : array_base string) =
00:01:21 v #1608 > >     inl value = 1i32
00:01:21 v #1609 > >     console.write_line ($'$"value: {!value}"' : string)
00:01:21 v #1610 > >     0i32
00:01:21 v #1611 > >
00:01:21 v #1612 > > inl main () =
00:01:21 v #1613 > >     $'let tests () = !tests ()' : ()
00:01:21 v #1614 > >     $'let main args = !main args' : ()
00:01:22 v #1615 > 00:01:20 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 98307 }
00:01:22 v #1616 > 00:01:20 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/polyglot/lib/math/math.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/polyglot/lib/math/math.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:01:24 v #1617 > 00:01:22 v #5 ! [NbConvertApp] Converting notebook c:/home/git/polyglot/lib/math/math.dib.ipynb to html
00:01:24 v #1618 > 00:01:22 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:01:24 v #1619 > 00:01:22 v #7 !   validate(nb)
00:01:24 v #1620 > 00:01:22 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:01:24 v #1621 > 00:01:22 v #9 !   return _pygments_highlight(
00:01:26 v #1622 > 00:01:24 v #10 ! [NbConvertApp] Writing 7170785 bytes to c:\home\git\polyglot\lib\math\math.dib.html
00:01:26 v #1623 > 00:01:24 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 847 }
00:01:26 v #1624 > 00:01:24 d #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 847 }
00:01:26 v #1625 > 00:01:24 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/polyglot/lib/math/math.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/polyglot/lib/math/math.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:01:26 v #1626 > 00:01:24 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:01:26 v #1627 > 00:01:24 d #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:01:26 v #1628 > 00:01:24 d #16 spiral_builder.run / dib / { exit_code = 0; result_length = 99213 }
00:01:26 d #1629 runtime.execute_with_options_async / { exit_code = 0; output_length = 104956 }
00:01:26 d #3 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder.exe dib --path math.dib --retries 1
00:01:27 v #5 async.run_with_timeout_async / { timeout = 100 }
00:00:00 d #1 writeDibCode / output: Spi / path: math.dib
00:00:00 d #2 parseDibCode / output: Spi / file: math.dib
00:00:00 v #1 async.run_with_timeout_async / { timeout = 180 }
00:00:00 d #1 runtime.execute_with_options_async / { file_name = dotnet; arguments = US5_0
  ""C:\home\git\polyglot\deps\The-Spiral-Language\The Spiral Language 2\artifacts\bin\The Spiral Language 2\release\Spiral.dll" --port 13805 --default-int i32 --default-float f64"; options = { command = dotnet "C:\home\git\polyglot\deps\The-Spiral-Language\The Spiral Language 2\artifacts\bin\The Spiral Language 2\release\Spiral.dll" --port 13805 --default-int i32 --default-float f64; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = Some <fun:main@595-7>; stdin = None; trace = true; working_directory = Some "C:\home\git\polyglot" } }
00:00:00 v #2 > 00:00:00 d #1 pwd: C:\home\git\polyglot
00:00:00 v #3 > 00:00:00 d #2 dllPath: C:\home\git\polyglot\deps\The-Spiral-Language\The Spiral Language 2\artifacts\bin\The Spiral Language 2\release
00:00:00 v #4 > 00:00:00 d #3 targetDir: C:\home\git\polyglot\target/spiral_Eval
00:00:01 v #2 async.run_with_timeout_async / { timeout = 100 }
00:00:01 v #5 > Starting the Spiral Server. It is bound to: http://localhost:13805
00:00:01 v #3 async.run_with_timeout_async / { timeout = 100 }
00:00:01 v #1 Supervisor.sendJson / port: 13805 / json: {"Ping":true} / result:
00:00:01 v #2 Supervisor.awaitCompiler / Ping / result: 'Some null' / port: 13805 / retry: 1
00:00:01 v #6 > Server bound to: http://localhost:13805
00:00:01 v #4 async.run_with_timeout_async / { timeout = 180 }
00:00:01 d #3 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: math.spi
00:00:01 d #4 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: math.spi
00:00:01 d #5 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: math.spi
00:00:02 v #6 Supervisor.sendJson / port: 13805 / json: {"FileOpen":{"spiText":"/// # math\nopen testing\nopen rust.rust_operators\nopen rust\n\n/// ## comp...027let main args = !main args\u0027 : ()\n","uri":"file:///c:/home/git/polyglot/lib/math/math.spi"}} / result:
00:00:02 v #7 Supervisor.sendJson / port: 13805 / json: {"BuildFile":{"backend":"Fsharp","uri":"file:///c:/home/git/polyglot/lib/math/math.spi"}} / result:
00:00:02 d #8 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: math.spi
00:00:02 d #9 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: math.spi
00:00:02 d #10 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: math.spi
00:00:02 d #11 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: math.spi
00:00:03 d #12 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: math.spi
00:00:03 d #13 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: math.spi
00:00:03 d #14 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: math.spi
00:00:03 d #15 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: math.spi
00:00:04 d #16 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: math.spi
00:00:04 d #17 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: math.spi
00:00:04 d #18 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: math.spi
00:00:04 d #19 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: math.spi
00:00:05 d #20 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: math.spi
00:00:05 d #21 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: math.spi
00:00:05 d #22 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: math.spi
00:00:05 d #23 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: math.spi
00:00:06 d #24 Supervisor.buildFile / AsyncSeq.scan / outputContent:
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("pyo3::Python")>]
#endif
type pyo3_Python = class end
#if FABLE_COMPILER
[<Fable.Core.Erase; Fa...v3 (); v2) ()
    0
let v0 : (unit -> unit) = closure0()
let tests () = v0 ()
let v1 : ((string []) -> int32) = closure3()
let main args = v1 args
()
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: math.spi
00:00:06 d #25 Supervisor.buildFile / takeWhileInclusive / outputContent:
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("pyo3::Python")>]
#endif
type pyo3_Python = class end
#if FABLE_COMPILER
[<Fable.Core.Erase; Fa...v3 (); v2) ()
    0
let v0 : (unit -> unit) = closure0()
let tests () = v0 ()
let v1 : ((string []) -> int32) = closure3()
let main args = v1 args
()
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: math.spi
00:00:06 d #26 FileSystem.watchWithFilter / Disposing watch stream / filter: FileName, LastWrite
00:00:06 v #5 async.run_with_timeout_async / { timeout = 100 }
00:00:00 d #1 persistCodeProject / packages: [Fable.Core] / modules: [lib/spiral/common.fsx; lib/spiral/sm.fsx; lib/spiral/crypto.fsx; ... ] / name: math / hash:  / code.Length: 199756
00:00:00 d #2 buildProject / fullPath: C:\home\git\polyglot\target\Builder\math\math.fsproj
00:00:00 d #1 runtime.execute_with_options_async / { file_name = dotnet; arguments = US5_0
  "publish "C:\home\git\polyglot\target/Builder\math\math.fsproj" --configuration Release --output "C:\home\git\polyglot\lib\math\dist" --runtime linux-x64"; options = { command = dotnet publish "C:\home\git\polyglot\target/Builder\math\math.fsproj" --configuration Release --output "C:\home\git\polyglot\lib\math\dist" --runtime linux-x64; cancellation_token = None; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = Some "C:\home\git\polyglot\target\Builder\math" } }
00:00:00 v #2 > MSBuild version 17.10.0-preview-24101-01+07fd5d51f for .NET
00:00:01 v #3 >   Determining projects to restore...
00:00:01 v #4 >   Restored C:\home\git\polyglot\target\Builder\math\math.fsproj (in 411 ms).
00:00:01 v #5 > C:\Users\i574n\scoop\apps\dotnet-sdk-preview\current\sdk\9.0.100-preview.1.24101.2\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.RuntimeIdentifierInference.targets(313,5): message NETSDK1057: You are using a preview version of .NET. See: https://aka.ms/dotnet-support-policy [C:\home\git\polyglot\target\Builder\math\math.fsproj]
00:00:11 v #6 >   math -> C:\home\git\polyglot\target\Builder\math\bin\Release\net9.0\linux-x64\math.dll
00:00:12 v #7 >   math -> C:\home\git\polyglot\lib\math\dist\
00:00:12 d #8 runtime.execute_with_options_async / { exit_code = 0; output_length = 637 }
00:00:12 d #9 runtime.execute_with_options_async / { file_name = dotnet; arguments = US5_0
  "publish "C:\home\git\polyglot\target/Builder\math\math.fsproj" --configuration Release --output "C:\home\git\polyglot\lib\math\dist" --runtime win-x64"; options = { command = dotnet publish "C:\home\git\polyglot\target/Builder\math\math.fsproj" --configuration Release --output "C:\home\git\polyglot\lib\math\dist" --runtime win-x64; cancellation_token = None; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = Some "C:\home\git\polyglot\target\Builder\math" } }
00:00:12 v #10 > MSBuild version 17.10.0-preview-24101-01+07fd5d51f for .NET
00:00:13 v #11 >   Determining projects to restore...
00:00:14 v #12 >   Restored C:\home\git\polyglot\target\Builder\math\math.fsproj (in 344 ms).
00:00:14 v #13 > C:\Users\i574n\scoop\apps\dotnet-sdk-preview\current\sdk\9.0.100-preview.1.24101.2\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.RuntimeIdentifierInference.targets(313,5): message NETSDK1057: You are using a preview version of .NET. See: https://aka.ms/dotnet-support-policy [C:\home\git\polyglot\target\Builder\math\math.fsproj]
00:00:24 v #14 >   math -> C:\home\git\polyglot\target\Builder\math\bin\Release\net9.0\win-x64\math.dll
00:00:25 v #15 >   math -> C:\home\git\polyglot\lib\math\dist\
00:00:25 d #16 runtime.execute_with_options_async / { exit_code = 0; output_length = 635 }
targetDir: C:\home\git\polyglot\target\Builder\math
Fable 4.21.0: F# to Rust compiler (status: alpha)

Thanks to the contributor! @piaste
Stand with Ukraine! https://standwithukraine.com.ua/

Parsing target\Builder\math\math.fsproj...
Retrieving project options from cache, in case of issues run `dotnet fable clean` or try `--noCache` option.
Project and references (14 source files) parsed in 186ms

Started Fable compilation...

Fable compilation finished in 7773ms

.\lib\spiral\common.fsx(2015,0): (2015,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
.\lib\spiral\sm.fsx(517,0): (517,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
.\lib\spiral\crypto.fsx(2239,0): (2239,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
.\lib\spiral\date_time.fsx(1613,0): (1613,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
.\lib\spiral\async_.fsx(146,0): (146,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
.\lib\spiral\threading.fsx(140,0): (140,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
.\lib\spiral\networking.fsx(20552,0): (20552,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
.\lib\spiral\platform.fsx(116,0): (116,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
.\lib\spiral\runtime.fsx(9265,0): (9265,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
.\lib\spiral\file_system.fsx(35073,0): (35073,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
.\lib\spiral\trace.fsx(2052,0): (2052,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
.\target\Builder\math\math.fs(42,0): (44,3) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!

    Directory: C:\home\git\polyglot\target\Builder\math\target

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d----          2024-11-04  5:14 PM                rs
   Compiling once_cell v1.20.2
   Compiling syn v2.0.79
   Compiling heck v0.5.0
   Compiling pyo3-build-config v0.22.5
   Compiling pyo3-macros-backend v0.22.5
   Compiling pyo3-ffi v0.22.5
   Compiling pyo3 v0.22.5
   Compiling zerocopy-derive v0.7.35
   Compiling futures-macro v0.3.31
   Compiling nalgebra-macros v0.2.2
   Compiling zerocopy v0.7.35
   Compiling futures-util v0.3.31
   Compiling ppv-lite86 v0.2.20
   Compiling rand_chacha v0.3.1
   Compiling rand v0.8.5
   Compiling pyo3-macros v0.22.5
   Compiling rand_distr v0.4.3
   Compiling nalgebra v0.32.6
   Compiling futures-executor v0.3.31
   Compiling futures v0.3.31
   Compiling fable_library_rust v0.1.0 (C:\home\git\polyglot\lib\rust\fable\fable_modules\fable-library-rust)
   Compiling statrs v0.17.1
   Compiling math v0.0.1 (C:\home\git\polyglot\lib\math)
    Finished `release` profile [optimized] target(s) in 38.38s
     Running unittests math.rs (C:\home\git\polyglot\workspace\target\release\deps\math-2c93ec4a7932e96e.exe)

running 12 tests
test module_b7a9935b::Math::test_euler_product_formula ... ok
test module_b7a9935b::Math::test_reflection_formula_for_specific_value ... ok
test module_b7a9935b::Math::test_real_part_greater_than_one___ ... ok
test module_b7a9935b::Math::test_zeta_at_1___ ... ok
test module_b7a9935b::Math::test_symmetry_across_real_axis___ ... ok
test module_b7a9935b::Math::test_zeta_at_known_values_ ... ok
test module_b7a9935b::Math::test_zeta_at_2_minus2 ... ok
test module_b7a9935b::Math::test_trivial_zero_at_negative_even___ ... ok
test module_b7a9935b::Math::test_behavior_near_origin___ ... ok
test module_b7a9935b::Math::test_critical_strip ... ok
test module_b7a9935b::Math::test_non_trivial_zero___ ... ok
test module_b7a9935b::Math::test_imaginary_axis ... ok

test result: ok. 12 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.34s


In [ ]:
{ pwsh ../apps/plot/build.ps1 } | Invoke-Block
   Compiling futures-util v0.3.31
   Compiling futures-executor v0.3.31
   Compiling futures v0.3.31
   Compiling fable_library_rust v0.1.0 (C:\home\git\polyglot\lib\rust\fable\fable_modules\fable-library-rust)
   Compiling plot v0.0.1 (C:\home\git\polyglot\apps\plot)
    Finished `release` profile [optimized] target(s) in 22.53s
In [ ]:
{ pwsh ../apps/perf/build.ps1 } | Invoke-Block
00:00:00 v #1 async.run_with_timeout_async / { timeout = 180 }
00:00:00 d #1 runtime.execute_with_options_async / { file_name = dotnet; arguments = US5_0
  ""C:\home\git\polyglot\deps\The-Spiral-Language\The Spiral Language 2\artifacts\bin\The Spiral Language 2\release\Spiral.dll" --port 13805 --default-int i32 --default-float f64"; options = { command = dotnet "C:\home\git\polyglot\deps\The-Spiral-Language\The Spiral Language 2\artifacts\bin\The Spiral Language 2\release\Spiral.dll" --port 13805 --default-int i32 --default-float f64; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = Some <fun:main@595-7>; stdin = None; trace = true; working_directory = Some "C:\home\git\polyglot" } }
00:00:00 v #2 > 00:00:00 d #1 pwd: C:\home\git\polyglot
00:00:00 v #3 > 00:00:00 d #2 dllPath: C:\home\git\polyglot\deps\The-Spiral-Language\The Spiral Language 2\artifacts\bin\The Spiral Language 2\release
00:00:00 v #4 > 00:00:00 d #3 targetDir: C:\home\git\polyglot\target/spiral_Eval
00:00:01 v #2 async.run_with_timeout_async / { timeout = 100 }
00:00:01 v #3 async.run_with_timeout_async / { timeout = 100 }
00:00:01 v #5 > Starting the Spiral Server. It is bound to: http://localhost:13805
00:00:01 v #4 async.run_with_timeout_async / { timeout = 100 }
00:00:01 v #1 Supervisor.sendJson / port: 13805 / json: {"Ping":true} / result:
00:00:01 v #2 Supervisor.awaitCompiler / Ping / result: 'Some null' / port: 13805 / retry: 1
00:00:01 v #6 > Server bound to: http://localhost:13805
00:00:01 d #7 runtime.execute_with_options_async / { file_name = ../../workspace/target/release/spiral_builder.exe; arguments = US5_0 "dib --path Perf.dib --retries 3"; options = { command = ../../workspace/target/release/spiral_builder.exe dib --path Perf.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:00:01 v #8 > 00:00:00 d #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "Perf.dib", "--retries", "3"])) }
00:00:01 v #9 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/polyglot/apps/perf/Perf.dib", "--output-path", "c:/home/git/polyglot/apps/perf/Perf.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/polyglot/apps/perf/Perf.dib" --output-path "c:/home/git/polyglot/apps/perf/Perf.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:00:03 v #10 > >
00:00:03 v #11 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:03 v #12 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:03 v #13 > > │ # Perf (Polyglot)                                                            │
00:00:03 v #14 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:21 v #15 > >
00:00:21 v #16 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:21 v #17 > > //// test
00:00:21 v #18 > >
00:00:21 v #19 > > open testing
00:00:21 v #20 > > open benchmark
00:00:25 v #21 > >
00:00:25 v #22 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:25 v #23 > > #if !INTERACTIVE
00:00:25 v #24 > > open Lib
00:00:25 v #25 > > #endif
00:00:25 v #26 > >
00:00:25 v #27 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:25 v #28 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:25 v #29 > > │ ## TestCaseResult                                                            │
00:00:25 v #30 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:25 v #31 > >
00:00:25 v #32 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:25 v #33 > > type TestCaseResult =
00:00:25 v #34 > >     {
00:00:25 v #35 > >         Input: string
00:00:25 v #36 > >         Expected: string
00:00:25 v #37 > >         Result: string
00:00:25 v #38 > >         TimeList: int64 list
00:00:25 v #39 > >     }
00:00:25 v #40 > >
00:00:25 v #41 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:25 v #42 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:25 v #43 > > │ ## run                                                                       │
00:00:25 v #44 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:25 v #45 > >
00:00:25 v #46 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:25 v #47 > > let run count (solutions: (string * ('TInput -> 'TExpected)) list) (input,
00:00:25 v #48 > > expected) =
00:00:25 v #49 > >     let inputStr =
00:00:25 v #50 > >         match box input with
00:00:25 v #51 > >         | :? System.Collections.ICollection as input ->
00:00:25 v #52 > >             System.Linq.Enumerable.Cast<obj> input
00:00:25 v #53 > >             |> Seq.map string
00:00:25 v #54 > >             |> SpiralSm.concat ","
00:00:25 v #55 > >         | _ -> input.ToString ()
00:00:25 v #56 > >
00:00:25 v #57 > >     printfn ""
00:00:25 v #58 > >     printfn $"Solution: {inputStr}  "
00:00:25 v #59 > >
00:00:25 v #60 > >     let performanceInvoke (fn: unit -> 'T) =
00:00:25 v #61 > >         GC.Collect ()
00:00:25 v #62 > >         let stopwatch = System.Diagnostics.Stopwatch ()
00:00:25 v #63 > >         stopwatch.Start ()
00:00:25 v #64 > >         let time1 = stopwatch.ElapsedMilliseconds
00:00:25 v #65 > >
00:00:25 v #66 > >         let result =
00:00:25 v #67 > >             [[| 0 .. count |]]
00:00:25 v #68 > >             |> Array.Parallel.map (fun _ ->
00:00:25 v #69 > >                 fn ()
00:00:25 v #70 > >             )
00:00:25 v #71 > >             |> Array.last
00:00:25 v #72 > >
00:00:25 v #73 > >         let time2 = stopwatch.ElapsedMilliseconds - time1
00:00:25 v #74 > >
00:00:25 v #75 > >         result, time2
00:00:25 v #76 > >
00:00:25 v #77 > >     let resultsWithTime =
00:00:25 v #78 > >         solutions
00:00:25 v #79 > >         |> List.mapi (fun i (testName, solution) ->
00:00:25 v #80 > >             let result, time = performanceInvoke (fun () -> solution input)
00:00:25 v #81 > >             printfn $"Test case %d{i + 1}. %s{testName}. Time: %A{time}  "
00:00:25 v #82 > >             result, time
00:00:25 v #83 > >         )
00:00:25 v #84 > >
00:00:25 v #85 > >
00:00:25 v #86 > >     match resultsWithTime |> List.map fst with
00:00:25 v #87 > >     | ([[]] | [[ _ ]]) -> ()
00:00:25 v #88 > >     | (head :: tail) when tail |> List.forall ((=) head) -> ()
00:00:25 v #89 > >     | results -> failwithf $"Challenge error: %A{results}"
00:00:25 v #90 > >
00:00:25 v #91 > >     {
00:00:25 v #92 > >         Input = inputStr
00:00:25 v #93 > >         Expected = expected.ToString ()
00:00:25 v #94 > >         Result = resultsWithTime |> Seq.map fst |> Seq.head |> _.ToString()
00:00:25 v #95 > >         TimeList = resultsWithTime |> List.map snd
00:00:25 v #96 > >     }
00:00:25 v #97 > >
00:00:25 v #98 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:25 v #99 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:25 v #100 > > │ ## runAll                                                                    │
00:00:25 v #101 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:25 v #102 > >
00:00:25 v #103 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:25 v #104 > > let runAll testName count (solutions: (string * ('TInput -> 'TExpected)) list)
00:00:25 v #105 > > testCases =
00:00:25 v #106 > >     printfn ""
00:00:25 v #107 > >     printfn ""
00:00:25 v #108 > >     printfn $"Test: {testName}"
00:00:25 v #109 > >     testCases
00:00:25 v #110 > >     |> Seq.map (run count solutions)
00:00:25 v #111 > >     |> Seq.toList
00:00:25 v #112 > >
00:00:25 v #113 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:25 v #114 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:25 v #115 > > │ ## sortResultList                                                            │
00:00:25 v #116 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:25 v #117 > >
00:00:25 v #118 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:25 v #119 > > let sortResultList resultList =
00:00:25 v #120 > >     let table =
00:00:25 v #121 > >         let rows =
00:00:25 v #122 > >             resultList
00:00:25 v #123 > >             |> List.map (fun result ->
00:00:25 v #124 > >                 let best =
00:00:25 v #125 > >                     result.TimeList
00:00:25 v #126 > >                     |> List.mapi (fun i time ->
00:00:25 v #127 > >                         i + 1, time
00:00:25 v #128 > >                     )
00:00:25 v #129 > >                     |> List.sortBy snd
00:00:25 v #130 > >                     |> List.head
00:00:25 v #131 > >                     |> _.ToString()
00:00:25 v #132 > >                 let row =
00:00:25 v #133 > >                     [[
00:00:25 v #134 > >                         result.Input
00:00:25 v #135 > >                         result.Expected
00:00:25 v #136 > >                         result.Result
00:00:25 v #137 > >                         best
00:00:25 v #138 > >                     ]]
00:00:25 v #139 > >                 let color =
00:00:25 v #140 > >                     match result.Expected = result.Result with
00:00:25 v #141 > >                     | true -> Some ConsoleColor.DarkGreen
00:00:25 v #142 > >                     | false -> Some ConsoleColor.DarkRed
00:00:25 v #143 > >                 row, color
00:00:25 v #144 > >             )
00:00:25 v #145 > >         let header =
00:00:25 v #146 > >             [[
00:00:25 v #147 > >                 [[
00:00:25 v #148 > >                     "Input"
00:00:25 v #149 > >                     "Expected"
00:00:25 v #150 > >                     "Result"
00:00:25 v #151 > >                     "Best"
00:00:25 v #152 > >                 ]]
00:00:25 v #153 > >                 [[
00:00:25 v #154 > >                     "---"
00:00:25 v #155 > >                     "---"
00:00:25 v #156 > >                     "---"
00:00:25 v #157 > >                     "---"
00:00:25 v #158 > >                 ]]
00:00:25 v #159 > >             ]]
00:00:25 v #160 > >             |> List.map (fun row -> row, None)
00:00:25 v #161 > >         header @ rows
00:00:25 v #162 > >
00:00:25 v #163 > >     let formattedTable =
00:00:25 v #164 > >         let lengthMap =
00:00:25 v #165 > >             table
00:00:25 v #166 > >             |> List.map fst
00:00:25 v #167 > >             |> List.transpose
00:00:25 v #168 > >             |> List.map (fun column ->
00:00:25 v #169 > >                 column
00:00:25 v #170 > >                 |> List.map String.length
00:00:25 v #171 > >                 |> List.sortDescending
00:00:25 v #172 > >                 |> List.tryHead
00:00:25 v #173 > >                 |> Option.defaultValue 0
00:00:25 v #174 > >             )
00:00:25 v #175 > >             |> List.indexed
00:00:25 v #176 > >             |> Map.ofList
00:00:25 v #177 > >         table
00:00:25 v #178 > >         |> List.map (fun (row, color) ->
00:00:25 v #179 > >             let newRow =
00:00:25 v #180 > >                 row
00:00:25 v #181 > >                 |> List.mapi (fun i cell ->
00:00:25 v #182 > >                     cell.PadRight lengthMap.[[i]]
00:00:25 v #183 > >                 )
00:00:25 v #184 > >             newRow, color
00:00:25 v #185 > >         )
00:00:25 v #186 > >
00:00:25 v #187 > >     printfn ""
00:00:25 v #188 > >     formattedTable
00:00:25 v #189 > >     |> List.iter (fun (row, color) ->
00:00:25 v #190 > >         match color with
00:00:25 v #191 > >         | Some color -> Console.ForegroundColor <- color
00:00:25 v #192 > >         | None -> Console.ResetColor ()
00:00:25 v #193 > >
00:00:25 v #194 > >         printfn "%s" (String.Join ("\t| ", row))
00:00:25 v #195 > >
00:00:25 v #196 > >         Console.ResetColor ()
00:00:25 v #197 > >     )
00:00:25 v #198 > >
00:00:25 v #199 > >     let averages =
00:00:25 v #200 > >         resultList
00:00:25 v #201 > >         |> List.map (fun result -> result.TimeList |> List.map float)
00:00:25 v #202 > >         |> List.transpose
00:00:25 v #203 > >         |> List.map List.average
00:00:25 v #204 > >         |> List.map int64
00:00:25 v #205 > >         |> List.indexed
00:00:25 v #206 > >
00:00:25 v #207 > >     printfn ""
00:00:25 v #208 > >     printfn "Average Ranking  "
00:00:25 v #209 > >     averages
00:00:25 v #210 > >     |> List.sortBy snd
00:00:25 v #211 > >     |> List.iter (fun (i, avg) ->
00:00:25 v #212 > >         printfn $"Test case %d{i + 1}. Average Time: %A{avg}  "
00:00:25 v #213 > >     )
00:00:25 v #214 > >
00:00:25 v #215 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:25 v #216 > > let mutable _count =
00:00:25 v #217 > >     if ("CI" |> System.Environment.GetEnvironmentVariable |> fun x -> $"%A{x}")
00:00:25 v #218 > > <> "<null>"
00:00:25 v #219 > >     then 2000000
00:00:25 v #220 > >     else 2000
00:00:25 v #221 > >
00:00:25 v #222 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:25 v #223 > > inl is_fast () =
00:00:25 v #224 > >     false
00:00:26 v #225 > >
00:00:26 v #226 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:26 v #227 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:26 v #228 > > │ ## empty3Tests                                                               │
00:00:26 v #229 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:26 v #230 > >
00:00:26 v #231 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:26 v #232 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:26 v #233 > > │ Test: Empty3                                                                 │
00:00:26 v #234 > > │                                                                              │
00:00:26 v #235 > > │ Solution: (a, a)                                                             │
00:00:26 v #236 > > │ Test case 1. A. Time: 91L                                                    │
00:00:26 v #237 > > │                                                                              │
00:00:26 v #238 > > │ Solution: (a, a)                                                             │
00:00:26 v #239 > > │ Test case 1. A. Time: 56L                                                    │
00:00:26 v #240 > > │                                                                              │
00:00:26 v #241 > > │ Input  | Expected      | Result | Best                                       │
00:00:26 v #242 > > │ ---    | ---           | ---    | ---                                        │
00:00:26 v #243 > > │ (a, a) | a             | a      | (1, 91)                                    │
00:00:26 v #244 > > │ (a, a) | a             | a      | (1, 56)                                    │
00:00:26 v #245 > > │                                                                              │
00:00:26 v #246 > > │ Averages                                                                     │
00:00:26 v #247 > > │ Test case 1. Average Time: 73L                                               │
00:00:26 v #248 > > │                                                                              │
00:00:26 v #249 > > │ Ranking                                                                      │
00:00:26 v #250 > > │ Test case 1. Average Time: 73L                                               │
00:00:26 v #251 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:26 v #252 > >
00:00:26 v #253 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:26 v #254 > > //// test
00:00:26 v #255 > >
00:00:26 v #256 > > let solutions = [[
00:00:26 v #257 > >     "A",
00:00:26 v #258 > >     fun (a, _b) ->
00:00:26 v #259 > >         a
00:00:26 v #260 > > ]]
00:00:26 v #261 > > let testCases = seq {
00:00:26 v #262 > >     ("a", "a"), "a"
00:00:26 v #263 > >     ("a", "a"), "a"
00:00:26 v #264 > > }
00:00:26 v #265 > > let rec empty3Tests = runAll (nameof empty3Tests) _count solutions testCases
00:00:26 v #266 > > empty3Tests
00:00:26 v #267 > > |> sortResultList
00:00:26 v #268 > >
00:00:26 v #269 > > ╭─[ 510.24ms - stdout ]────────────────────────────────────────────────────────╮
00:00:26 v #270 > > │                                                                              │
00:00:26 v #271 > > │                                                                              │
00:00:26 v #272 > > │ Test: empty3Tests                                                            │
00:00:26 v #273 > > │                                                                              │
00:00:26 v #274 > > │ Solution: (a, a)                                                             │
00:00:26 v #275 > > │ Test case 1. A. Time: 1L                                                     │
00:00:26 v #276 > > │                                                                              │
00:00:26 v #277 > > │ Solution: (a, a)                                                             │
00:00:26 v #278 > > │ Test case 1. A. Time: 0L                                                     │
00:00:26 v #279 > > │                                                                              │
00:00:26 v #280 > > │ Input 	| Expected	| Result	| Best                                                  │
00:00:26 v #281 > > │ ---   	| ---     	| ---   	| ---                                                   │
00:00:26 v #282 > > │ (a, a)	| a       	| a     	| (1, 1)                                                │
00:00:26 v #283 > > │ (a, a)	| a       	| a     	| (1, 0)                                                │
00:00:26 v #284 > > │                                                                              │
00:00:26 v #285 > > │ Average Ranking                                                              │
00:00:26 v #286 > > │ Test case 1. Average Time: 0L                                                │
00:00:26 v #287 > > │                                                                              │
00:00:26 v #288 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:26 v #289 > >
00:00:26 v #290 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:26 v #291 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:26 v #292 > > │ ## empty2Tests                                                               │
00:00:26 v #293 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:26 v #294 > >
00:00:26 v #295 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:26 v #296 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:26 v #297 > > │ Test: Empty2                                                                 │
00:00:26 v #298 > > │                                                                              │
00:00:26 v #299 > > │ Solution: (a, a)                                                             │
00:00:26 v #300 > > │ Test case 1. A. Time: 59L                                                    │
00:00:26 v #301 > > │                                                                              │
00:00:26 v #302 > > │ Solution: (a, a)                                                             │
00:00:26 v #303 > > │ Test case 1. A. Time: 53L                                                    │
00:00:26 v #304 > > │                                                                              │
00:00:26 v #305 > > │ Input   | Expected        | Result  | Best                                   │
00:00:26 v #306 > > │ ---     | ---             | ---     | ---                                    │
00:00:26 v #307 > > │ (a, a)  | a               | a       | (1, 59)                                │
00:00:26 v #308 > > │ (a, a)  | a               | a       | (1, 53)                                │
00:00:26 v #309 > > │                                                                              │
00:00:26 v #310 > > │ Averages                                                                     │
00:00:26 v #311 > > │ Test case 1. Average Time: 56L                                               │
00:00:26 v #312 > > │                                                                              │
00:00:26 v #313 > > │ Ranking                                                                      │
00:00:26 v #314 > > │ Test case 1. Average Time: 56L                                               │
00:00:26 v #315 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:26 v #316 > >
00:00:26 v #317 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:26 v #318 > > //// test
00:00:26 v #319 > >
00:00:26 v #320 > > let solutions = [[
00:00:26 v #321 > >     "A",
00:00:26 v #322 > >     fun (a, _b) ->
00:00:26 v #323 > >         a
00:00:26 v #324 > > ]]
00:00:26 v #325 > > let testCases = seq {
00:00:26 v #326 > >     ("a", "a"), "a"
00:00:26 v #327 > >     ("a", "a"), "a"
00:00:26 v #328 > > }
00:00:26 v #329 > > let rec empty2Tests = runAll (nameof empty2Tests) _count solutions testCases
00:00:26 v #330 > > empty2Tests
00:00:26 v #331 > > |> sortResultList
00:00:27 v #332 > >
00:00:27 v #333 > > ╭─[ 428.07ms - stdout ]────────────────────────────────────────────────────────╮
00:00:27 v #334 > > │                                                                              │
00:00:27 v #335 > > │                                                                              │
00:00:27 v #336 > > │ Test: empty2Tests                                                            │
00:00:27 v #337 > > │                                                                              │
00:00:27 v #338 > > │ Solution: (a, a)                                                             │
00:00:27 v #339 > > │ Test case 1. A. Time: 1L                                                     │
00:00:27 v #340 > > │                                                                              │
00:00:27 v #341 > > │ Solution: (a, a)                                                             │
00:00:27 v #342 > > │ Test case 1. A. Time: 0L                                                     │
00:00:27 v #343 > > │                                                                              │
00:00:27 v #344 > > │ Input 	| Expected	| Result	| Best                                                  │
00:00:27 v #345 > > │ ---   	| ---     	| ---   	| ---                                                   │
00:00:27 v #346 > > │ (a, a)	| a       	| a     	| (1, 1)                                                │
00:00:27 v #347 > > │ (a, a)	| a       	| a     	| (1, 0)                                                │
00:00:27 v #348 > > │                                                                              │
00:00:27 v #349 > > │ Average Ranking                                                              │
00:00:27 v #350 > > │ Test case 1. Average Time: 0L                                                │
00:00:27 v #351 > > │                                                                              │
00:00:27 v #352 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:27 v #353 > >
00:00:27 v #354 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:27 v #355 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:27 v #356 > > │ ## emptyTests                                                                │
00:00:27 v #357 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:27 v #358 > >
00:00:27 v #359 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:27 v #360 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:27 v #361 > > │ Test: Empty                                                                  │
00:00:27 v #362 > > │                                                                              │
00:00:27 v #363 > > │ Solution: 0                                                                  │
00:00:27 v #364 > > │ Test case 1. A. Time: 61L                                                    │
00:00:27 v #365 > > │                                                                              │
00:00:27 v #366 > > │ Solution: 2                                                                  │
00:00:27 v #367 > > │ Test case 1. A. Time: 62L                                                    │
00:00:27 v #368 > > │                                                                              │
00:00:27 v #369 > > │ Solution: 5                                                                  │
00:00:27 v #370 > > │ Test case 1. A. Time: 70L                                                    │
00:00:27 v #371 > > │                                                                              │
00:00:27 v #372 > > │ Input   | Expected        | Result  | Best                                   │
00:00:27 v #373 > > │ ---     | ---             | ---     | ---                                    │
00:00:27 v #374 > > │ 0       | 0               | 0       | (1, 61)                                │
00:00:27 v #375 > > │ 2       | 2               | 2       | (1, 62)                                │
00:00:27 v #376 > > │ 5       | 5               | 5       | (1, 70)                                │
00:00:27 v #377 > > │                                                                              │
00:00:27 v #378 > > │ Averages                                                                     │
00:00:27 v #379 > > │ Test case 1. Average Time: 64L                                               │
00:00:27 v #380 > > │                                                                              │
00:00:27 v #381 > > │ Ranking                                                                      │
00:00:27 v #382 > > │ Test case 1. Average Time: 64L                                               │
00:00:27 v #383 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:27 v #384 > >
00:00:27 v #385 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:27 v #386 > > //// test
00:00:27 v #387 > >
00:00:27 v #388 > > let solutions = [[
00:00:27 v #389 > >     "A",
00:00:27 v #390 > >     fun n ->
00:00:27 v #391 > >         n + 0
00:00:27 v #392 > > ]]
00:00:27 v #393 > > let testCases = seq {
00:00:27 v #394 > >     0, 0
00:00:27 v #395 > >     2, 2
00:00:27 v #396 > >     5, 5
00:00:27 v #397 > > }
00:00:27 v #398 > > let rec emptyTests = runAll (nameof emptyTests) _count solutions testCases
00:00:27 v #399 > > emptyTests
00:00:27 v #400 > > |> sortResultList
00:00:27 v #401 > >
00:00:27 v #402 > > ╭─[ 662.22ms - stdout ]────────────────────────────────────────────────────────╮
00:00:27 v #403 > > │                                                                              │
00:00:27 v #404 > > │                                                                              │
00:00:27 v #405 > > │ Test: emptyTests                                                             │
00:00:27 v #406 > > │                                                                              │
00:00:27 v #407 > > │ Solution: 0                                                                  │
00:00:27 v #408 > > │ Test case 1. A. Time: 2L                                                     │
00:00:27 v #409 > > │                                                                              │
00:00:27 v #410 > > │ Solution: 2                                                                  │
00:00:27 v #411 > > │ Test case 1. A. Time: 0L                                                     │
00:00:27 v #412 > > │                                                                              │
00:00:27 v #413 > > │ Solution: 5                                                                  │
00:00:27 v #414 > > │ Test case 1. A. Time: 0L                                                     │
00:00:27 v #415 > > │                                                                              │
00:00:27 v #416 > > │ Input	| Expected	| Result	| Best                                                   │
00:00:27 v #417 > > │ ---  	| ---     	| ---   	| ---                                                    │
00:00:27 v #418 > > │ 0    	| 0       	| 0     	| (1, 2)                                                 │
00:00:27 v #419 > > │ 2    	| 2       	| 2     	| (1, 0)                                                 │
00:00:27 v #420 > > │ 5    	| 5       	| 5     	| (1, 0)                                                 │
00:00:27 v #421 > > │                                                                              │
00:00:27 v #422 > > │ Average Ranking                                                              │
00:00:27 v #423 > > │ Test case 1. Average Time: 0L                                                │
00:00:27 v #424 > > │                                                                              │
00:00:27 v #425 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:27 v #426 > >
00:00:27 v #427 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:27 v #428 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:27 v #429 > > │ ## uniqueLettersTests                                                        │
00:00:27 v #430 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:27 v #431 > >
00:00:27 v #432 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:27 v #433 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:27 v #434 > > │ Test: UniqueLetters                                                          │
00:00:27 v #435 > > │                                                                              │
00:00:27 v #436 > > │ Solution: abc                                                                │
00:00:27 v #437 > > │ Test case 1. A. Time: 1512L                                                  │
00:00:27 v #438 > > │ Test case 2. B. Time: 1947L                                                  │
00:00:27 v #439 > > │ Test case 3. C. Time: 2023L                                                  │
00:00:27 v #440 > > │ Test case 4. D. Time: 1358L                                                  │
00:00:27 v #441 > > │ Test case 5. E. Time: 1321L                                                  │
00:00:27 v #442 > > │ Test case 6. F. Time: 1346L                                                  │
00:00:27 v #443 > > │ Test case 7. G. Time: 1304L                                                  │
00:00:27 v #444 > > │ Test case 8. H. Time: 1383L                                                  │
00:00:27 v #445 > > │ Test case 9. I. Time: 1495L                                                  │
00:00:27 v #446 > > │ Test case 10. J. Time: 1245L                                                 │
00:00:27 v #447 > > │ Test case 11. K. Time: 1219L                                                 │
00:00:27 v #448 > > │                                                                              │
00:00:27 v #449 > > │ Solution: accabb                                                             │
00:00:27 v #450 > > │ Test case 1. A. Time: 1648L                                                  │
00:00:27 v #451 > > │ Test case 2. B. Time: 2061L                                                  │
00:00:27 v #452 > > │ Test case 3. C. Time: 2413L                                                  │
00:00:27 v #453 > > │ Test case 4. D. Time: 1561L                                                  │
00:00:27 v #454 > > │ Test case 5. E. Time: 1593L                                                  │
00:00:27 v #455 > > │ Test case 6. F. Time: 1518L                                                  │
00:00:27 v #456 > > │ Test case 7. G. Time: 1415L                                                  │
00:00:27 v #457 > > │ Test case 8. H. Time: 1510L                                                  │
00:00:27 v #458 > > │ Test case 9. I. Time: 1445L                                                  │
00:00:27 v #459 > > │ Test case 10. J. Time: 1636L                                                 │
00:00:27 v #460 > > │ Test case 11. K. Time: 1317L                                                 │
00:00:27 v #461 > > │                                                                              │
00:00:27 v #462 > > │ Solution: pprrqqpp                                                           │
00:00:27 v #463 > > │ Test case 1. A. Time: 2255L                                                  │
00:00:27 v #464 > > │ Test case 2. B. Time: 2408L                                                  │
00:00:27 v #465 > > │ Test case 3. C. Time: 2393L                                                  │
00:00:27 v #466 > > │ Test case 4. D. Time: 1675L                                                  │
00:00:27 v #467 > > │ Test case 5. E. Time: 1911L                                                  │
00:00:27 v #468 > > │ Test case 6. F. Time: 2126L                                                  │
00:00:27 v #469 > > │ Test case 7. G. Time: 1504L                                                  │
00:00:27 v #470 > > │ Test case 8. H. Time: 1715L                                                  │
00:00:27 v #471 > > │ Test case 9. I. Time: 1537L                                                  │
00:00:27 v #472 > > │ Test case 10. J. Time: 1522L                                                 │
00:00:27 v #473 > > │ Test case 11. K. Time: 1322L                                                 │
00:00:27 v #474 > > │                                                                              │
00:00:27 v #475 > > │ Solution:                                                                    │
00:00:27 v #476 > > │ aaaaaaaaaaaaaaccccccabbbbbbbaaacccbbbaaccccccccccacbbbbbbbbbbbbbcccccccbbbbb │
00:00:27 v #477 > > │ bbb                                                                          │
00:00:27 v #478 > > │ Test case 1. A. Time: 13073L                                                 │
00:00:27 v #479 > > │ Test case 2. B. Time: 11519L                                                 │
00:00:27 v #480 > > │ Test case 3. C. Time: 8373L                                                  │
00:00:27 v #481 > > │ Test case 4. D. Time: 5860L                                                  │
00:00:27 v #482 > > │ Test case 5. E. Time: 6490L                                                  │
00:00:27 v #483 > > │ Test case 6. F. Time: 6325L                                                  │
00:00:27 v #484 > > │ Test case 7. G. Time: 5799L                                                  │
00:00:27 v #485 > > │ Test case 8. H. Time: 7099L                                                  │
00:00:27 v #486 > > │ Test case 9. I. Time: 6133L                                                  │
00:00:27 v #487 > > │ Test case 10. J. Time: 5993L                                                 │
00:00:27 v #488 > > │ Test case 11. K. Time: 2040L                                                 │
00:00:27 v #489 > > │                                                                              │
00:00:27 v #490 > > │ Input                                                                        │
00:00:27 v #491 > > │ | Expected        | Result  | Best                                           │
00:00:27 v #492 > > │ ---                                                                          │
00:00:27 v #493 > > │                                                                              │
00:00:27 v #494 > > │ | ---             | ---     | ---                                            │
00:00:27 v #495 > > │ abc                                                                          │
00:00:27 v #496 > > │                                                                              │
00:00:27 v #497 > > │ | abc             | abc     | (11, 1219)                                     │
00:00:27 v #498 > > │ accabb                                                                       │
00:00:27 v #499 > > │ | acb             | acb     | (11, 1317)                                     │
00:00:27 v #500 > > │ pprrqqpp                                                                     │
00:00:27 v #501 > > │ | prq             | prq     | (11, 1322)                                     │
00:00:27 v #502 > > │ aaaaaaaaaaaaaaccccccabbbbbbbaaacccbbbaaccccccccccacbbbbbbbbbbbbbcccccccbbbbb │
00:00:27 v #503 > > │ bbb | acb             | acb     | (11, 2040)                                 │
00:00:27 v #504 > > │                                                                              │
00:00:27 v #505 > > │ Averages                                                                     │
00:00:27 v #506 > > │ Test case 1. Average Time: 4622L                                             │
00:00:27 v #507 > > │ Test case 2. Average Time: 4483L                                             │
00:00:27 v #508 > > │ Test case 3. Average Time: 3800L                                             │
00:00:27 v #509 > > │ Test case 4. Average Time: 2613L                                             │
00:00:27 v #510 > > │ Test case 5. Average Time: 2828L                                             │
00:00:27 v #511 > > │ Test case 6. Average Time: 2828L                                             │
00:00:27 v #512 > > │ Test case 7. Average Time: 2505L                                             │
00:00:27 v #513 > > │ Test case 8. Average Time: 2926L                                             │
00:00:27 v #514 > > │ Test case 9. Average Time: 2652L                                             │
00:00:27 v #515 > > │ Test case 10. Average Time: 2599L                                            │
00:00:27 v #516 > > │ Test case 11. Average Time: 1474L                                            │
00:00:27 v #517 > > │                                                                              │
00:00:27 v #518 > > │ Ranking                                                                      │
00:00:27 v #519 > > │ Test case 1. Average Time: 4622L                                             │
00:00:27 v #520 > > │ Test case 2. Average Time: 4483L                                             │
00:00:27 v #521 > > │ Test case 3. Average Time: 3800L                                             │
00:00:27 v #522 > > │ Test case 8. Average Time: 2926L                                             │
00:00:27 v #523 > > │ Test case 5. Average Time: 2828L                                             │
00:00:27 v #524 > > │ Test case 6. Average Time: 2828L                                             │
00:00:27 v #525 > > │ Test case 9. Average Time: 2652L                                             │
00:00:27 v #526 > > │ Test case 4. Average Time: 2613L                                             │
00:00:27 v #527 > > │ Test case 10. Average Time: 2599L                                            │
00:00:27 v #528 > > │ Test case 7. Average Time: 2505L                                             │
00:00:27 v #529 > > │ Test case 11. Average Time: 1474L                                            │
00:00:27 v #530 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:27 v #531 > >
00:00:27 v #532 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:27 v #533 > > //// test
00:00:27 v #534 > >
00:00:27 v #535 > > let solutions = [[
00:00:27 v #536 > >     "A",
00:00:27 v #537 > >     fun input ->
00:00:27 v #538 > >         input
00:00:27 v #539 > >         |> Seq.toList
00:00:27 v #540 > >         |> List.fold (fun acc x -> if List.contains x acc then acc else acc @ [[
00:00:27 v #541 > > x ]]) [[]]
00:00:27 v #542 > >         |> Seq.toArray
00:00:27 v #543 > >         |> String
00:00:27 v #544 > >
00:00:27 v #545 > >     "B",
00:00:27 v #546 > >     fun input ->
00:00:27 v #547 > >         input
00:00:27 v #548 > >         |> Seq.rev
00:00:27 v #549 > >         |> fun list -> Seq.foldBack (fun x acc -> if List.contains x acc then
00:00:27 v #550 > > acc else x :: acc) list [[]]
00:00:27 v #551 > >         |> Seq.rev
00:00:27 v #552 > >         |> Seq.toArray
00:00:27 v #553 > >         |> String
00:00:27 v #554 > >
00:00:27 v #555 > >     "C",
00:00:27 v #556 > >     fun input ->
00:00:27 v #557 > >         input
00:00:27 v #558 > >         |> Seq.rev
00:00:27 v #559 > >         |> fun list -> Seq.foldBack (fun x (set, acc) -> if Set.contains x set
00:00:27 v #560 > > then set, acc else set.Add x, x :: acc) list (Set.empty, [[]])
00:00:27 v #561 > >         |> snd
00:00:27 v #562 > >         |> Seq.rev
00:00:27 v #563 > >         |> Seq.toArray
00:00:27 v #564 > >         |> String
00:00:27 v #565 > >
00:00:27 v #566 > >     "D",
00:00:27 v #567 > >     fun input ->
00:00:27 v #568 > >         input
00:00:27 v #569 > >         |> Seq.fold (fun (set, acc) x -> if Set.contains x set then set, acc
00:00:27 v #570 > > else set.Add x, Array.append acc [[| x |]]) (Set.empty, [[||]])
00:00:27 v #571 > >         |> snd
00:00:27 v #572 > >         |> String
00:00:27 v #573 > >
00:00:27 v #574 > >     "E",
00:00:27 v #575 > >     fun input ->
00:00:27 v #576 > >         input
00:00:27 v #577 > >         |> Seq.fold (fun (set, acc) x -> if Set.contains x set then set, acc
00:00:27 v #578 > > else set.Add x, x :: acc) (Set.empty, [[]])
00:00:27 v #579 > >         |> snd
00:00:27 v #580 > >         |> List.rev
00:00:27 v #581 > >         |> List.toArray
00:00:27 v #582 > >         |> String
00:00:27 v #583 > >
00:00:27 v #584 > >     "F",
00:00:27 v #585 > >     fun input ->
00:00:27 v #586 > >         input
00:00:27 v #587 > >         |> Seq.fold (fun (set, acc) x -> if Set.contains x set then set, acc
00:00:27 v #588 > > else set.Add x, acc @ [[ x ]]) (Set.empty, [[]])
00:00:27 v #589 > >         |> snd
00:00:27 v #590 > >         |> List.toArray
00:00:27 v #591 > >         |> String
00:00:27 v #592 > >
00:00:27 v #593 > >     "G",
00:00:27 v #594 > >     fun input ->
00:00:27 v #595 > >         input
00:00:27 v #596 > >         |> Seq.fold (fun (set, acc) x -> if Set.contains x set then set, acc
00:00:27 v #597 > > else set.Add x, x :: acc) (Set.empty, [[]])
00:00:27 v #598 > >         |> snd
00:00:27 v #599 > >         |> List.toArray
00:00:27 v #600 > >         |> Array.rev
00:00:27 v #601 > >         |> String
00:00:27 v #602 > >
00:00:27 v #603 > >     "H",
00:00:27 v #604 > >     fun input ->
00:00:27 v #605 > >         input
00:00:27 v #606 > >         |> Seq.toList
00:00:27 v #607 > >         |> fun list ->
00:00:27 v #608 > >             let rec loop set = function
00:00:27 v #609 > >                 | head :: tail when Set.contains head set -> loop set tail
00:00:27 v #610 > >                 | head :: tail -> (loop (set.Add head) tail) @ [[ head ]]
00:00:27 v #611 > >                 | [[]] -> [[]]
00:00:27 v #612 > >             loop Set.empty list
00:00:27 v #613 > >             |> List.rev
00:00:27 v #614 > >         |> List.toArray
00:00:27 v #615 > >         |> String
00:00:27 v #616 > >
00:00:27 v #617 > >     "I",
00:00:27 v #618 > >     fun input ->
00:00:27 v #619 > >         input
00:00:27 v #620 > >         |> Seq.toList
00:00:27 v #621 > >         |> fun list ->
00:00:27 v #622 > >             let rec loop set = function
00:00:27 v #623 > >                 | head :: tail when Set.contains head set -> loop set tail
00:00:27 v #624 > >                 | head :: tail -> loop (set.Add head) tail |> Array.append [[|
00:00:27 v #625 > > head |]]
00:00:27 v #626 > >                 | [[]] -> [[||]]
00:00:27 v #627 > >             loop Set.empty list
00:00:27 v #628 > >         |> String
00:00:27 v #629 > >
00:00:27 v #630 > >     "J",
00:00:27 v #631 > >     fun input ->
00:00:27 v #632 > >         input
00:00:27 v #633 > >         |> Seq.toList
00:00:27 v #634 > >         |> fun list ->
00:00:27 v #635 > >             let rec loop set = function
00:00:27 v #636 > >                 | head :: tail when Set.contains head set -> loop set tail
00:00:27 v #637 > >                 | head :: tail -> head :: loop (set.Add head) tail
00:00:27 v #638 > >                 | [[]] -> [[]]
00:00:27 v #639 > >             loop Set.empty list
00:00:27 v #640 > >         |> List.toArray
00:00:27 v #641 > >         |> String
00:00:27 v #642 > >
00:00:27 v #643 > >     "K",
00:00:27 v #644 > >     fun input ->
00:00:27 v #645 > >         input
00:00:27 v #646 > >         |> Seq.distinct
00:00:27 v #647 > >         |> Seq.toArray
00:00:27 v #648 > >         |> String
00:00:27 v #649 > > ]]
00:00:27 v #650 > > let testCases = seq {
00:00:27 v #651 > >     "abc", "abc"
00:00:27 v #652 > >     "accabb", "acb"
00:00:27 v #653 > >     "pprrqqpp", "prq"
00:00:27 v #654 > >
00:00:27 v #655 > > "aaaaaaaaaaaaaaccccccabbbbbbbaaacccbbbaaccccccccccacbbbbbbbbbbbbbcccccccbbbbbbbb
00:00:27 v #656 > > ", "acb"
00:00:27 v #657 > > }
00:00:27 v #658 > > let rec uniqueLettersTests = runAll (nameof uniqueLettersTests) _count solutions
00:00:27 v #659 > > testCases
00:00:27 v #660 > > uniqueLettersTests
00:00:27 v #661 > > |> sortResultList
00:00:36 v #662 > >
00:00:36 v #663 > > ╭─[ 9.07s - stdout ]───────────────────────────────────────────────────────────╮
00:00:36 v #664 > > │                                                                              │
00:00:36 v #665 > > │                                                                              │
00:00:36 v #666 > > │ Test: uniqueLettersTests                                                     │
00:00:36 v #667 > > │                                                                              │
00:00:36 v #668 > > │ Solution: abc                                                                │
00:00:36 v #669 > > │ Test case 1. A. Time: 3L                                                     │
00:00:36 v #670 > > │ Test case 2. B. Time: 4L                                                     │
00:00:36 v #671 > > │ Test case 3. C. Time: 4L                                                     │
00:00:36 v #672 > > │ Test case 4. D. Time: 1L                                                     │
00:00:36 v #673 > > │ Test case 5. E. Time: 2L                                                     │
00:00:36 v #674 > > │ Test case 6. F. Time: 1L                                                     │
00:00:36 v #675 > > │ Test case 7. G. Time: 1L                                                     │
00:00:36 v #676 > > │ Test case 8. H. Time: 4L                                                     │
00:00:36 v #677 > > │ Test case 9. I. Time: 1L                                                     │
00:00:36 v #678 > > │ Test case 10. J. Time: 1L                                                    │
00:00:36 v #679 > > │ Test case 11. K. Time: 3L                                                    │
00:00:36 v #680 > > │                                                                              │
00:00:36 v #681 > > │ Solution: accabb                                                             │
00:00:36 v #682 > > │ Test case 1. A. Time: 1L                                                     │
00:00:36 v #683 > > │ Test case 2. B. Time: 1L                                                     │
00:00:36 v #684 > > │ Test case 3. C. Time: 1L                                                     │
00:00:36 v #685 > > │ Test case 4. D. Time: 1L                                                     │
00:00:36 v #686 > > │ Test case 5. E. Time: 1L                                                     │
00:00:36 v #687 > > │ Test case 6. F. Time: 1L                                                     │
00:00:36 v #688 > > │ Test case 7. G. Time: 1L                                                     │
00:00:36 v #689 > > │ Test case 8. H. Time: 1L                                                     │
00:00:36 v #690 > > │ Test case 9. I. Time: 0L                                                     │
00:00:36 v #691 > > │ Test case 10. J. Time: 1L                                                    │
00:00:36 v #692 > > │ Test case 11. K. Time: 1L                                                    │
00:00:36 v #693 > > │                                                                              │
00:00:36 v #694 > > │ Solution: pprrqqpp                                                           │
00:00:36 v #695 > > │ Test case 1. A. Time: 1L                                                     │
00:00:36 v #696 > > │ Test case 2. B. Time: 1L                                                     │
00:00:36 v #697 > > │ Test case 3. C. Time: 1L                                                     │
00:00:36 v #698 > > │ Test case 4. D. Time: 0L                                                     │
00:00:36 v #699 > > │ Test case 5. E. Time: 1L                                                     │
00:00:36 v #700 > > │ Test case 6. F. Time: 0L                                                     │
00:00:36 v #701 > > │ Test case 7. G. Time: 0L                                                     │
00:00:36 v #702 > > │ Test case 8. H. Time: 0L                                                     │
00:00:36 v #703 > > │ Test case 9. I. Time: 0L                                                     │
00:00:36 v #704 > > │ Test case 10. J. Time: 0L                                                    │
00:00:36 v #705 > > │ Test case 11. K. Time: 0L                                                    │
00:00:36 v #706 > > │                                                                              │
00:00:36 v #707 > > │ Solution:                                                                    │
00:00:36 v #708 > > │ aaaaaaaaaaaaaaccccccabbbbbbbaaacccbbbaaccccccccccacbbbbbbbbbbbbbcccccccbbbbb │
00:00:36 v #709 > > │ bbb                                                                          │
00:00:36 v #710 > > │ Test case 1. A. Time: 11L                                                    │
00:00:36 v #711 > > │ Test case 2. B. Time: 8L                                                     │
00:00:36 v #712 > > │ Test case 3. C. Time: 11L                                                    │
00:00:36 v #713 > > │ Test case 4. D. Time: 6L                                                     │
00:00:36 v #714 > > │ Test case 5. E. Time: 9L                                                     │
00:00:36 v #715 > > │ Test case 6. F. Time: 7L                                                     │
00:00:36 v #716 > > │ Test case 7. G. Time: 6L                                                     │
00:00:36 v #717 > > │ Test case 8. H. Time: 6L                                                     │
00:00:36 v #718 > > │ Test case 9. I. Time: 5L                                                     │
00:00:36 v #719 > > │ Test case 10. J. Time: 6L                                                    │
00:00:36 v #720 > > │ Test case 11. K. Time: 2L                                                    │
00:00:36 v #721 > > │                                                                              │
00:00:36 v #722 > > │ Input                                                                        │
00:00:36 v #723 > > │ | Expected	| Result	| Best                                                       │
00:00:36 v #724 > > │ ---                                                                          │
00:00:36 v #725 > > │ | ---     	| ---   	| ---                                                        │
00:00:36 v #726 > > │ abc                                                                          │
00:00:36 v #727 > > │ | abc     	| abc   	| (4, 1)                                                     │
00:00:36 v #728 > > │ accabb                                                                       │
00:00:36 v #729 > > │ | acb     	| acb   	| (9, 0)                                                     │
00:00:36 v #730 > > │ pprrqqpp                                                                     │
00:00:36 v #731 > > │ | prq     	| prq   	| (4, 0)                                                     │
00:00:36 v #732 > > │ aaaaaaaaaaaaaaccccccabbbbbbbaaacccbbbaaccccccccccacbbbbbbbbbbbbbcccccccbbbbb │
00:00:36 v #733 > > │ bbb	| acb     	| acb   	| (11, 2)                                                  │
00:00:36 v #734 > > │                                                                              │
00:00:36 v #735 > > │ Average Ranking                                                              │
00:00:36 v #736 > > │ Test case 9. Average Time: 1L                                                │
00:00:36 v #737 > > │ Test case 11. Average Time: 1L                                               │
00:00:36 v #738 > > │ Test case 4. Average Time: 2L                                                │
00:00:36 v #739 > > │ Test case 6. Average Time: 2L                                                │
00:00:36 v #740 > > │ Test case 7. Average Time: 2L                                                │
00:00:36 v #741 > > │ Test case 8. Average Time: 2L                                                │
00:00:36 v #742 > > │ Test case 10. Average Time: 2L                                               │
00:00:36 v #743 > > │ Test case 2. Average Time: 3L                                                │
00:00:36 v #744 > > │ Test case 5. Average Time: 3L                                                │
00:00:36 v #745 > > │ Test case 1. Average Time: 4L                                                │
00:00:36 v #746 > > │ Test case 3. Average Time: 4L                                                │
00:00:36 v #747 > > │                                                                              │
00:00:36 v #748 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:36 v #749 > >
00:00:36 v #750 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:36 v #751 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:36 v #752 > > │ ## rotateStringsTests                                                        │
00:00:36 v #753 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:36 v #754 > >
00:00:36 v #755 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:36 v #756 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:36 v #757 > > │ https://www.hackerrank.com/challenges/rotate-string/forum                    │
00:00:36 v #758 > > │                                                                              │
00:00:36 v #759 > > │ Test: RotateStrings                                                          │
00:00:36 v #760 > > │                                                                              │
00:00:36 v #761 > > │ Solution: abc                                                                │
00:00:36 v #762 > > │ Test case 1. A. Time: 1842L                                                  │
00:00:36 v #763 > > │ Test case 2. B. Time: 1846L                                                  │
00:00:36 v #764 > > │ Test case 3. C. Time: 1936L                                                  │
00:00:36 v #765 > > │ Test case 4. CA. Time: 2224L                                                 │
00:00:36 v #766 > > │ Test case 5. CB. Time: 2329L                                                 │
00:00:36 v #767 > > │ Test case 6. D. Time: 2474L                                                  │
00:00:36 v #768 > > │ Test case 7. E. Time: 1664L                                                  │
00:00:36 v #769 > > │ Test case 8. F. Time: 1517L                                                  │
00:00:36 v #770 > > │ Test case 9. FA. Time: 1651L                                                 │
00:00:36 v #771 > > │ Test case 10. FB. Time: 3764L                                                │
00:00:36 v #772 > > │ Test case 11. FC. Time: 5415L                                                │
00:00:36 v #773 > > │                                                                              │
00:00:36 v #774 > > │ Solution: abcde                                                              │
00:00:36 v #775 > > │ Test case 1. A. Time: 3356L                                                  │
00:00:36 v #776 > > │ Test case 2. B. Time: 2592L                                                  │
00:00:36 v #777 > > │ Test case 3. C. Time: 2346L                                                  │
00:00:36 v #778 > > │ Test case 4. CA. Time: 2997L                                                 │
00:00:36 v #779 > > │ Test case 5. CB. Time: 3061L                                                 │
00:00:36 v #780 > > │ Test case 6. D. Time: 4051L                                                  │
00:00:36 v #781 > > │ Test case 7. E. Time: 1905L                                                  │
00:00:36 v #782 > > │ Test case 8. F. Time: 1771L                                                  │
00:00:36 v #783 > > │ Test case 9. FA. Time: 2175L                                                 │
00:00:36 v #784 > > │ Test case 10. FB. Time: 3275L                                                │
00:00:36 v #785 > > │ Test case 11. FC. Time: 5266L                                                │
00:00:36 v #786 > > │                                                                              │
00:00:36 v #787 > > │ Solution: abcdefghi                                                          │
00:00:36 v #788 > > │ Test case 1. A. Time: 4492L                                                  │
00:00:36 v #789 > > │ Test case 2. B. Time: 3526L                                                  │
00:00:36 v #790 > > │ Test case 3. C. Time: 3583L                                                  │
00:00:36 v #791 > > │ Test case 4. CA. Time: 3711L                                                 │
00:00:36 v #792 > > │ Test case 5. CB. Time: 4783L                                                 │
00:00:36 v #793 > > │ Test case 6. D. Time: 7557L                                                  │
00:00:36 v #794 > > │ Test case 7. E. Time: 3452L                                                  │
00:00:36 v #795 > > │ Test case 8. F. Time: 3050L                                                  │
00:00:36 v #796 > > │ Test case 9. FA. Time: 3275L                                                 │
00:00:36 v #797 > > │ Test case 10. FB. Time: 4635L                                                │
00:00:36 v #798 > > │ Test case 11. FC. Time: 5616L                                                │
00:00:36 v #799 > > │                                                                              │
00:00:36 v #800 > > │ Solution: abab                                                               │
00:00:36 v #801 > > │ Test case 1. A. Time: 2093L                                                  │
00:00:36 v #802 > > │ Test case 2. B. Time: 1843L                                                  │
00:00:36 v #803 > > │ Test case 3. C. Time: 1746L                                                  │
00:00:36 v #804 > > │ Test case 4. CA. Time: 2085L                                                 │
00:00:36 v #805 > > │ Test case 5. CB. Time: 2139L                                                 │
00:00:36 v #806 > > │ Test case 6. D. Time: 2095L                                                  │
00:00:36 v #807 > > │ Test case 7. E. Time: 1723L                                                  │
00:00:36 v #808 > > │ Test case 8. F. Time: 1558L                                                  │
00:00:36 v #809 > > │ Test case 9. FA. Time: 1620L                                                 │
00:00:36 v #810 > > │ Test case 10. FB. Time: 2319L                                                │
00:00:36 v #811 > > │ Test case 11. FC. Time: 3918L                                                │
00:00:36 v #812 > > │                                                                              │
00:00:36 v #813 > > │ Solution: aa                                                                 │
00:00:36 v #814 > > │ Test case 1. A. Time: 1107L                                                  │
00:00:36 v #815 > > │ Test case 2. B. Time: 1241L                                                  │
00:00:36 v #816 > > │ Test case 3. C. Time: 1183L                                                  │
00:00:36 v #817 > > │ Test case 4. CA. Time: 1563L                                                 │
00:00:36 v #818 > > │ Test case 5. CB. Time: 1525L                                                 │
00:00:36 v #819 > > │ Test case 6. D. Time: 1591L                                                  │
00:00:36 v #820 > > │ Test case 7. E. Time: 1327L                                                  │
00:00:36 v #821 > > │ Test case 8. F. Time: 1151L                                                  │
00:00:36 v #822 > > │ Test case 9. FA. Time: 1180L                                                 │
00:00:36 v #823 > > │ Test case 10. FB. Time: 1733L                                                │
00:00:36 v #824 > > │ Test case 11. FC. Time: 2817L                                                │
00:00:36 v #825 > > │                                                                              │
00:00:36 v #826 > > │ Solution: z                                                                  │
00:00:36 v #827 > > │ Test case 1. A. Time: 816L                                                   │
00:00:36 v #828 > > │ Test case 2. B. Time: 745L                                                   │
00:00:36 v #829 > > │ Test case 3. C. Time: 928L                                                   │
00:00:36 v #830 > > │ Test case 4. CA. Time: 1375L                                                 │
00:00:36 v #831 > > │ Test case 5. CB. Time: 1029L                                                 │
00:00:36 v #832 > > │ Test case 6. D. Time: 852L                                                   │
00:00:36 v #833 > > │ Test case 7. E. Time: 712L                                                   │
00:00:36 v #834 > > │ Test case 8. F. Time: 263L                                                   │
00:00:36 v #835 > > │ Test case 9. FA. Time: 232L                                                  │
00:00:36 v #836 > > │ Test case 10. FB. Time: 773L                                                 │
00:00:36 v #837 > > │ Test case 11. FC. Time: 1789L                                                │
00:00:36 v #838 > > │                                                                              │
00:00:36 v #839 > > │ Input           | Expected                                                   │
00:00:36 v #840 > > │                                                                              │
00:00:36 v #841 > > │ | Result                                                                     │
00:00:36 v #842 > > │                                                                              │
00:00:36 v #843 > > │ | Best                                                                       │
00:00:36 v #844 > > │ ---             | ---                                                        │
00:00:36 v #845 > > │                                                                              │
00:00:36 v #846 > > │ | ---                                                                        │
00:00:36 v #847 > > │                                                                              │
00:00:36 v #848 > > │ | ---                                                                        │
00:00:36 v #849 > > │ abc             | bca cab abc                                                │
00:00:36 v #850 > > │                                                                              │
00:00:36 v #851 > > │ | bca cab abc                                                                │
00:00:36 v #852 > > │                                                                              │
00:00:36 v #853 > > │ | (8, 1517)                                                                  │
00:00:36 v #854 > > │ abcde           | bcdea cdeab deabc eabcd abcde                              │
00:00:36 v #855 > > │ | bcdea cdeab deabc eabcd abcde                                              │
00:00:36 v #856 > > │ | (8, 1771)                                                                  │
00:00:36 v #857 > > │ abcdefghi       | bcdefghia cdefghiab defghiabc efghiabcd fghiabcde          │
00:00:36 v #858 > > │ ghiabcdef hiabcdefg iabcdefgh abcdefghi       | bcdefghia cdefghiab          │
00:00:36 v #859 > > │ defghiabc efghiabcd fghiabcde ghiabcdef hiabcdefg iabcdefgh abcdefghi        │
00:00:36 v #860 > > │ | (8, 3050)                                                                  │
00:00:36 v #861 > > │ abab            | baba abab baba abab                                        │
00:00:36 v #862 > > │                                                                              │
00:00:36 v #863 > > │ | baba abab baba abab                                                        │
00:00:36 v #864 > > │                                                                              │
00:00:36 v #865 > > │ | (8, 1558)                                                                  │
00:00:36 v #866 > > │ aa              | aa aa                                                      │
00:00:36 v #867 > > │                                                                              │
00:00:36 v #868 > > │ | aa aa                                                                      │
00:00:36 v #869 > > │                                                                              │
00:00:36 v #870 > > │ | (1, 1107)                                                                  │
00:00:36 v #871 > > │ z               | z                                                          │
00:00:36 v #872 > > │                                                                              │
00:00:36 v #873 > > │ | z                                                                          │
00:00:36 v #874 > > │                                                                              │
00:00:36 v #875 > > │ | (9, 232)                                                                   │
00:00:36 v #876 > > │                                                                              │
00:00:36 v #877 > > │ Averages                                                                     │
00:00:36 v #878 > > │ Test case 1. Average Time: 2284L                                             │
00:00:36 v #879 > > │ Test case 2. Average Time: 1965L                                             │
00:00:36 v #880 > > │ Test case 3. Average Time: 1953L                                             │
00:00:36 v #881 > > │ Test case 4. Average Time: 2325L                                             │
00:00:36 v #882 > > │ Test case 5. Average Time: 2477L                                             │
00:00:36 v #883 > > │ Test case 6. Average Time: 3103L                                             │
00:00:36 v #884 > > │ Test case 7. Average Time: 1797L                                             │
00:00:36 v #885 > > │ Test case 8. Average Time: 1551L                                             │
00:00:36 v #886 > > │ Test case 9. Average Time: 1688L                                             │
00:00:36 v #887 > > │ Test case 10. Average Time: 2749L                                            │
00:00:36 v #888 > > │ Test case 11. Average Time: 4136L                                            │
00:00:36 v #889 > > │                                                                              │
00:00:36 v #890 > > │ Ranking                                                                      │
00:00:36 v #891 > > │ Test case 11. Average Time: 4136L                                            │
00:00:36 v #892 > > │ Test case 6. Average Time: 3103L                                             │
00:00:36 v #893 > > │ Test case 10. Average Time: 2749L                                            │
00:00:36 v #894 > > │ Test case 5. Average Time: 2477L                                             │
00:00:36 v #895 > > │ Test case 4. Average Time: 2325L                                             │
00:00:36 v #896 > > │ Test case 1. Average Time: 2284L                                             │
00:00:36 v #897 > > │ Test case 2. Average Time: 1965L                                             │
00:00:36 v #898 > > │ Test case 3. Average Time: 1953L                                             │
00:00:36 v #899 > > │ Test case 7. Average Time: 1797L                                             │
00:00:36 v #900 > > │ Test case 9. Average Time: 1688L                                             │
00:00:36 v #901 > > │ Test case 8. Average Time: 1551L                                             │
00:00:36 v #902 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:36 v #903 > >
00:00:36 v #904 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:36 v #905 > > //// test
00:00:36 v #906 > >
00:00:36 v #907 > > let solutions = [[
00:00:36 v #908 > >     "A",
00:00:36 v #909 > >     fun (input: string) ->
00:00:36 v #910 > >         let resultList =
00:00:36 v #911 > >             List.fold (fun acc x ->
00:00:36 v #912 > >                 let rotate (text: string) (letter: string) = (text |>
00:00:36 v #913 > > SpiralSm.slice 1 (input.Length - 1)) + letter
00:00:36 v #914 > >                 [[ rotate (if acc.IsEmpty then input else acc.Head) (string x)
00:00:36 v #915 > > ]] @ acc
00:00:36 v #916 > >             ) [[]] (Seq.toList input)
00:00:36 v #917 > >
00:00:36 v #918 > >         (resultList, "")
00:00:36 v #919 > >         ||> List.foldBack (fun acc x -> x + acc + " ")
00:00:36 v #920 > >         |> _.TrimEnd()
00:00:36 v #921 > >
00:00:36 v #922 > >     "B",
00:00:36 v #923 > >     fun input ->
00:00:36 v #924 > >         input
00:00:36 v #925 > >         |> Seq.toList
00:00:36 v #926 > >         |> List.fold (fun (acc: string list) letter ->
00:00:36 v #927 > >             let last =
00:00:36 v #928 > >                 if acc.IsEmpty
00:00:36 v #929 > >                 then input
00:00:36 v #930 > >                 else acc.Head
00:00:36 v #931 > >
00:00:36 v #932 > >             let item = last.[[1 .. input.Length - 1]] + string letter
00:00:36 v #933 > >
00:00:36 v #934 > >             item :: acc
00:00:36 v #935 > >         ) [[]]
00:00:36 v #936 > >         |> List.rev
00:00:36 v #937 > >         |> SpiralSm.concat " "
00:00:36 v #938 > >
00:00:36 v #939 > >     "C",
00:00:36 v #940 > >     fun input ->
00:00:36 v #941 > >         input
00:00:36 v #942 > >         |> Seq.toList
00:00:36 v #943 > >         |> List.fold (fun (acc: string list) letter -> acc.Head.[[ 1 ..
00:00:36 v #944 > > input.Length - 1 ]] + string letter :: acc) [[ input ]]
00:00:36 v #945 > >         |> List.rev
00:00:36 v #946 > >         |> List.skip 1
00:00:36 v #947 > >         |> SpiralSm.concat " "
00:00:36 v #948 > >
00:00:36 v #949 > >     "CA",
00:00:36 v #950 > >     fun input ->
00:00:36 v #951 > >         input
00:00:36 v #952 > >         |> Seq.fold (fun (acc: string list) letter -> acc.Head.[[ 1 ..
00:00:36 v #953 > > input.Length - 1 ]] + string letter :: acc) [[ input ]]
00:00:36 v #954 > >         |> Seq.rev
00:00:36 v #955 > >         |> Seq.skip 1
00:00:36 v #956 > >         |> SpiralSm.concat " "
00:00:36 v #957 > >
00:00:36 v #958 > >     "CB",
00:00:36 v #959 > >     fun input ->
00:00:36 v #960 > >         input
00:00:36 v #961 > >         |> Seq.toArray
00:00:36 v #962 > >         |> Array.fold (fun (acc: string[[]]) letter -> acc |> Array.append [[|
00:00:36 v #963 > > acc.[[0]].[[ 1 .. input.Length - 1 ]] + string letter |]]) [[| input |]]
00:00:36 v #964 > >         |> Array.rev
00:00:36 v #965 > >         |> Array.skip 1
00:00:36 v #966 > >         |> SpiralSm.concat " "
00:00:36 v #967 > >
00:00:36 v #968 > >     "D",
00:00:36 v #969 > >     fun input ->
00:00:36 v #970 > >         input
00:00:36 v #971 > >         |> Seq.toList
00:00:36 v #972 > >         |> fun list ->
00:00:36 v #973 > >             let rec loop (acc: char list list) = function
00:00:36 v #974 > >                 | _ when acc.Length = list.Length -> acc
00:00:36 v #975 > >                 | head :: tail ->
00:00:36 v #976 > >                     let item = tail @ [[ head ]]
00:00:36 v #977 > >                     loop (item :: acc) item
00:00:36 v #978 > >                 | [[]] -> [[]]
00:00:36 v #979 > >             loop [[]] list
00:00:36 v #980 > >         |> List.rev
00:00:36 v #981 > >         |> List.map (List.toArray >> String)
00:00:36 v #982 > >         |> SpiralSm.concat " "
00:00:36 v #983 > >
00:00:36 v #984 > >     "E",
00:00:36 v #985 > >     fun input ->
00:00:36 v #986 > >         input
00:00:36 v #987 > >         |> Seq.toList
00:00:36 v #988 > >         |> fun list ->
00:00:36 v #989 > >             let rec loop (last: string) = function
00:00:36 v #990 > >                 | head :: tail ->
00:00:36 v #991 > >                     let item = last.[[1 .. input.Length - 1]] + string head
00:00:36 v #992 > >                     item :: loop item tail
00:00:36 v #993 > >                 | [[]] -> [[]]
00:00:36 v #994 > >             loop input list
00:00:36 v #995 > >         |> SpiralSm.concat " "
00:00:36 v #996 > >
00:00:36 v #997 > >     "F",
00:00:36 v #998 > >     fun input ->
00:00:36 v #999 > >         Array.singleton 0
00:00:36 v #1000 > >         |> Array.append [[| 1 .. input.Length - 1 |]]
00:00:36 v #1001 > >         |> Array.map (fun i -> input.[[ i .. ]] + input.[[ .. i - 1 ]])
00:00:36 v #1002 > >         |> SpiralSm.concat " "
00:00:36 v #1003 > >
00:00:36 v #1004 > >     "FA",
00:00:36 v #1005 > >     fun input ->
00:00:36 v #1006 > >         List.singleton 0
00:00:36 v #1007 > >         |> List.append [[ 1 .. input.Length - 1 ]]
00:00:36 v #1008 > >         |> List.map (fun i -> input.[[ i .. ]] + input.[[ .. i - 1 ]])
00:00:36 v #1009 > >         |> SpiralSm.concat " "
00:00:36 v #1010 > >
00:00:36 v #1011 > >     "FB",
00:00:36 v #1012 > >     fun input ->
00:00:36 v #1013 > >         Seq.singleton 0
00:00:36 v #1014 > >         |> Seq.append (seq { 1 .. input.Length - 1 })
00:00:36 v #1015 > >         |> Seq.map (fun i -> input.[[ i .. ]] + input.[[ .. i - 1 ]])
00:00:36 v #1016 > >         |> SpiralSm.concat " "
00:00:36 v #1017 > >
00:00:36 v #1018 > >     "FC",
00:00:36 v #1019 > >     fun input ->
00:00:36 v #1020 > >         Array.singleton 0
00:00:36 v #1021 > >         |> Array.append [[| 1 .. input.Length - 1 |]]
00:00:36 v #1022 > >         |> Array.Parallel.map (fun i -> input.[[ i .. ]] + input.[[ .. i - 1 ]])
00:00:36 v #1023 > >         |> SpiralSm.concat " "
00:00:36 v #1024 > > ]]
00:00:36 v #1025 > > let testCases = seq {
00:00:36 v #1026 > >     "abc", "bca cab abc"
00:00:36 v #1027 > >     "abcde", "bcdea cdeab deabc eabcd abcde"
00:00:36 v #1028 > >     "abcdefghi", "bcdefghia cdefghiab defghiabc efghiabcd fghiabcde ghiabcdef
00:00:36 v #1029 > > hiabcdefg iabcdefgh abcdefghi"
00:00:36 v #1030 > >     "abab", "baba abab baba abab"
00:00:36 v #1031 > >     "aa", "aa aa"
00:00:36 v #1032 > >     "z", "z"
00:00:36 v #1033 > > }
00:00:36 v #1034 > > let rec rotateStringsTests = runAll (nameof rotateStringsTests) _count solutions
00:00:36 v #1035 > > testCases
00:00:36 v #1036 > > rotateStringsTests
00:00:36 v #1037 > > |> sortResultList
00:00:50 v #1038 > >
00:00:50 v #1039 > > ╭─[ 13.15s - stdout ]──────────────────────────────────────────────────────────╮
00:00:50 v #1040 > > │                                                                              │
00:00:50 v #1041 > > │                                                                              │
00:00:50 v #1042 > > │ Test: rotateStringsTests                                                     │
00:00:50 v #1043 > > │                                                                              │
00:00:50 v #1044 > > │ Solution: abc                                                                │
00:00:50 v #1045 > > │ Test case 1. A. Time: 2L                                                     │
00:00:50 v #1046 > > │ Test case 2. B. Time: 2L                                                     │
00:00:50 v #1047 > > │ Test case 3. C. Time: 1L                                                     │
00:00:50 v #1048 > > │ Test case 4. CA. Time: 3L                                                    │
00:00:50 v #1049 > > │ Test case 5. CB. Time: 2L                                                    │
00:00:50 v #1050 > > │ Test case 6. D. Time: 2L                                                     │
00:00:50 v #1051 > > │ Test case 7. E. Time: 1L                                                     │
00:00:50 v #1052 > > │ Test case 8. F. Time: 2L                                                     │
00:00:50 v #1053 > > │ Test case 9. FA. Time: 3L                                                    │
00:00:50 v #1054 > > │ Test case 10. FB. Time: 8L                                                   │
00:00:50 v #1055 > > │ Test case 11. FC. Time: 8L                                                   │
00:00:50 v #1056 > > │                                                                              │
00:00:50 v #1057 > > │ Solution: abcde                                                              │
00:00:50 v #1058 > > │ Test case 1. A. Time: 3L                                                     │
00:00:50 v #1059 > > │ Test case 2. B. Time: 1L                                                     │
00:00:50 v #1060 > > │ Test case 3. C. Time: 1L                                                     │
00:00:50 v #1061 > > │ Test case 4. CA. Time: 1L                                                    │
00:00:50 v #1062 > > │ Test case 5. CB. Time: 1L                                                    │
00:00:50 v #1063 > > │ Test case 6. D. Time: 4L                                                     │
00:00:50 v #1064 > > │ Test case 7. E. Time: 1L                                                     │
00:00:50 v #1065 > > │ Test case 8. F. Time: 0L                                                     │
00:00:50 v #1066 > > │ Test case 9. FA. Time: 0L                                                    │
00:00:50 v #1067 > > │ Test case 10. FB. Time: 5L                                                   │
00:00:50 v #1068 > > │ Test case 11. FC. Time: 4L                                                   │
00:00:50 v #1069 > > │                                                                              │
00:00:50 v #1070 > > │ Solution: abcdefghi                                                          │
00:00:50 v #1071 > > │ Test case 1. A. Time: 5L                                                     │
00:00:50 v #1072 > > │ Test case 2. B. Time: 2L                                                     │
00:00:50 v #1073 > > │ Test case 3. C. Time: 3L                                                     │
00:00:50 v #1074 > > │ Test case 4. CA. Time: 1L                                                    │
00:00:50 v #1075 > > │ Test case 5. CB. Time: 3L                                                    │
00:00:50 v #1076 > > │ Test case 6. D. Time: 5L                                                     │
00:00:50 v #1077 > > │ Test case 7. E. Time: 2L                                                     │
00:00:50 v #1078 > > │ Test case 8. F. Time: 0L                                                     │
00:00:50 v #1079 > > │ Test case 9. FA. Time: 4L                                                    │
00:00:50 v #1080 > > │ Test case 10. FB. Time: 2L                                                   │
00:00:50 v #1081 > > │ Test case 11. FC. Time: 5L                                                   │
00:00:50 v #1082 > > │                                                                              │
00:00:50 v #1083 > > │ Solution: abab                                                               │
00:00:50 v #1084 > > │ Test case 1. A. Time: 0L                                                     │
00:00:50 v #1085 > > │ Test case 2. B. Time: 0L                                                     │
00:00:50 v #1086 > > │ Test case 3. C. Time: 1L                                                     │
00:00:50 v #1087 > > │ Test case 4. CA. Time: 1L                                                    │
00:00:50 v #1088 > > │ Test case 5. CB. Time: 1L                                                    │
00:00:50 v #1089 > > │ Test case 6. D. Time: 1L                                                     │
00:00:50 v #1090 > > │ Test case 7. E. Time: 0L                                                     │
00:00:50 v #1091 > > │ Test case 8. F. Time: 0L                                                     │
00:00:50 v #1092 > > │ Test case 9. FA. Time: 0L                                                    │
00:00:50 v #1093 > > │ Test case 10. FB. Time: 1L                                                   │
00:00:50 v #1094 > > │ Test case 11. FC. Time: 5L                                                   │
00:00:50 v #1095 > > │                                                                              │
00:00:50 v #1096 > > │ Solution: aa                                                                 │
00:00:50 v #1097 > > │ Test case 1. A. Time: 0L                                                     │
00:00:50 v #1098 > > │ Test case 2. B. Time: 0L                                                     │
00:00:50 v #1099 > > │ Test case 3. C. Time: 0L                                                     │
00:00:50 v #1100 > > │ Test case 4. CA. Time: 0L                                                    │
00:00:50 v #1101 > > │ Test case 5. CB. Time: 0L                                                    │
00:00:50 v #1102 > > │ Test case 6. D. Time: 0L                                                     │
00:00:50 v #1103 > > │ Test case 7. E. Time: 0L                                                     │
00:00:50 v #1104 > > │ Test case 8. F. Time: 0L                                                     │
00:00:50 v #1105 > > │ Test case 9. FA. Time: 0L                                                    │
00:00:50 v #1106 > > │ Test case 10. FB. Time: 0L                                                   │
00:00:50 v #1107 > > │ Test case 11. FC. Time: 4L                                                   │
00:00:50 v #1108 > > │                                                                              │
00:00:50 v #1109 > > │ Solution: z                                                                  │
00:00:50 v #1110 > > │ Test case 1. A. Time: 0L                                                     │
00:00:50 v #1111 > > │ Test case 2. B. Time: 0L                                                     │
00:00:50 v #1112 > > │ Test case 3. C. Time: 0L                                                     │
00:00:50 v #1113 > > │ Test case 4. CA. Time: 0L                                                    │
00:00:50 v #1114 > > │ Test case 5. CB. Time: 0L                                                    │
00:00:50 v #1115 > > │ Test case 6. D. Time: 0L                                                     │
00:00:50 v #1116 > > │ Test case 7. E. Time: 0L                                                     │
00:00:50 v #1117 > > │ Test case 8. F. Time: 0L                                                     │
00:00:50 v #1118 > > │ Test case 9. FA. Time: 0L                                                    │
00:00:50 v #1119 > > │ Test case 10. FB. Time: 0L                                                   │
00:00:50 v #1120 > > │ Test case 11. FC. Time: 4L                                                   │
00:00:50 v #1121 > > │                                                                              │
00:00:50 v #1122 > > │ Input    	| Expected                                                           │
00:00:50 v #1123 > > │                                                                              │
00:00:50 v #1124 > > │ | Result                                                                     │
00:00:50 v #1125 > > │                                                                              │
00:00:50 v #1126 > > │ | Best                                                                       │
00:00:50 v #1127 > > │ ---      	| ---                                                                │
00:00:50 v #1128 > > │                                                                              │
00:00:50 v #1129 > > │ | ---                                                                        │
00:00:50 v #1130 > > │                                                                              │
00:00:50 v #1131 > > │ | ---                                                                        │
00:00:50 v #1132 > > │ abc      	| bca cab abc                                                        │
00:00:50 v #1133 > > │                                                                              │
00:00:50 v #1134 > > │ | bca cab abc                                                                │
00:00:50 v #1135 > > │                                                                              │
00:00:50 v #1136 > > │ | (3, 1)                                                                     │
00:00:50 v #1137 > > │ abcde    	| bcdea cdeab deabc eabcd abcde                                      │
00:00:50 v #1138 > > │ | bcdea cdeab deabc eabcd abcde                                              │
00:00:50 v #1139 > > │ | (8, 0)                                                                     │
00:00:50 v #1140 > > │ abcdefghi	| bcdefghia cdefghiab defghiabc efghiabcd fghiabcde ghiabcdef        │
00:00:50 v #1141 > > │ hiabcdefg iabcdefgh abcdefghi	| bcdefghia cdefghiab defghiabc efghiabcd        │
00:00:50 v #1142 > > │ fghiabcde ghiabcdef hiabcdefg iabcdefgh abcdefghi	| (8, 0)                     │
00:00:50 v #1143 > > │ abab     	| baba abab baba abab                                                │
00:00:50 v #1144 > > │ | baba abab baba abab                                                        │
00:00:50 v #1145 > > │ | (1, 0)                                                                     │
00:00:50 v #1146 > > │ aa       	| aa aa                                                              │
00:00:50 v #1147 > > │                                                                              │
00:00:50 v #1148 > > │ | aa aa                                                                      │
00:00:50 v #1149 > > │                                                                              │
00:00:50 v #1150 > > │ | (1, 0)                                                                     │
00:00:50 v #1151 > > │ z        	| z                                                                  │
00:00:50 v #1152 > > │                                                                              │
00:00:50 v #1153 > > │ | z                                                                          │
00:00:50 v #1154 > > │                                                                              │
00:00:50 v #1155 > > │ | (1, 0)                                                                     │
00:00:50 v #1156 > > │                                                                              │
00:00:50 v #1157 > > │ Average Ranking                                                              │
00:00:50 v #1158 > > │ Test case 2. Average Time: 0L                                                │
00:00:50 v #1159 > > │ Test case 7. Average Time: 0L                                                │
00:00:50 v #1160 > > │ Test case 8. Average Time: 0L                                                │
00:00:50 v #1161 > > │ Test case 1. Average Time: 1L                                                │
00:00:50 v #1162 > > │ Test case 3. Average Time: 1L                                                │
00:00:50 v #1163 > > │ Test case 4. Average Time: 1L                                                │
00:00:50 v #1164 > > │ Test case 5. Average Time: 1L                                                │
00:00:50 v #1165 > > │ Test case 9. Average Time: 1L                                                │
00:00:50 v #1166 > > │ Test case 6. Average Time: 2L                                                │
00:00:50 v #1167 > > │ Test case 10. Average Time: 2L                                               │
00:00:50 v #1168 > > │ Test case 11. Average Time: 5L                                               │
00:00:50 v #1169 > > │                                                                              │
00:00:50 v #1170 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:50 v #1171 > >
00:00:50 v #1172 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:50 v #1173 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:50 v #1174 > > │ ## rotate_strings_tests                                                      │
00:00:50 v #1175 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:50 v #1176 > >
00:00:50 v #1177 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:50 v #1178 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:50 v #1179 > > │ ```                                                                          │
00:00:50 v #1180 > > │ 02:21:12 verbose #1 benchmark.run_all / {count = 2000000; test_name =   │
00:00:50 v #1181 > > │ rotate_strings_tests}                                                        │
00:00:50 v #1182 > > │                                                                              │
00:00:50 v #1183 > > │ 02:21:12 verbose #2 benchmark.run / {input_str = "abc"}                 │
00:00:50 v #1184 > > │ 02:21:13 verbose #3 benchmark.run / solutions.map / {i = 1; test_name = │
00:00:50 v #1185 > > │ F; time = 638}                                                               │
00:00:50 v #1186 > > │ 02:21:14 verbose #4 benchmark.run / solutions.map / {i = 2; test_name = │
00:00:50 v #1187 > > │ FA; time = 779}                                                              │
00:00:50 v #1188 > > │                                                                              │
00:00:50 v #1189 > > │ 02:21:14 verbose #5 benchmark.run / {input_str = "abcde"}               │
00:00:50 v #1190 > > │ 02:21:15 verbose #6 benchmark.run / solutions.map / {i = 1; test_name = │
00:00:50 v #1191 > > │ F; time = 745}                                                               │
00:00:50 v #1192 > > │ 02:21:16 verbose #7 benchmark.run / solutions.map / {i = 2; test_name = │
00:00:50 v #1193 > > │ FA; time = 809}                                                              │
00:00:50 v #1194 > > │                                                                              │
00:00:50 v #1195 > > │ 02:21:16 verbose #8 benchmark.run / {input_str = "abcdefghi"}           │
00:00:50 v #1196 > > │ 02:21:17 verbose #9 benchmark.run / solutions.map / {i = 1; test_name = │
00:00:50 v #1197 > > │ F; time = 1092}                                                              │
00:00:50 v #1198 > > │ 02:21:18 verbose #10 benchmark.run / solutions.map / {i = 2; test_name  │
00:00:50 v #1199 > > │ = FA; time = 1304}                                                           │
00:00:50 v #1200 > > │                                                                              │
00:00:50 v #1201 > > │ 02:21:18 verbose #11 benchmark.run / {input_str = "abab"}               │
00:00:50 v #1202 > > │ 02:21:19 verbose #12 benchmark.run / solutions.map / {i = 1; test_name  │
00:00:50 v #1203 > > │ = F; time = 536}                                                             │
00:00:50 v #1204 > > │ 02:21:20 verbose #13 benchmark.run / solutions.map / {i = 2; test_name  │
00:00:50 v #1205 > > │ = FA; time = 620}                                                            │
00:00:50 v #1206 > > │                                                                              │
00:00:50 v #1207 > > │ 02:21:20 verbose #14 benchmark.run / {input_str = "aa"}                 │
00:00:50 v #1208 > > │ 02:21:21 verbose #15 benchmark.run / solutions.map / {i = 1; test_name  │
00:00:50 v #1209 > > │ = F; time = 365}                                                             │
00:00:50 v #1210 > > │ 02:21:21 verbose #16 benchmark.run / solutions.map / {i = 2; test_name  │
00:00:50 v #1211 > > │ = FA; time = 396}                                                            │
00:00:50 v #1212 > > │                                                                              │
00:00:50 v #1213 > > │ 02:21:21 verbose #17 benchmark.run / {input_str = "z"}                  │
00:00:50 v #1214 > > │ 02:21:22 verbose #18 benchmark.run / solutions.map / {i = 1; test_name  │
00:00:50 v #1215 > > │ = F; time = 158}                                                             │
00:00:50 v #1216 > > │ 02:21:22 verbose #19 benchmark.run / solutions.map / {i = 2; test_name  │
00:00:50 v #1217 > > │ = FA; time = 143}                                                            │
00:00:50 v #1218 > > │ ```                                                                          │
00:00:50 v #1219 > > │ input      	| expected                                                         │
00:00:50 v #1220 > > │                                                                              │
00:00:50 v #1221 > > │ | result                                                                     │
00:00:50 v #1222 > > │                                                                              │
00:00:50 v #1223 > > │ | best                                                                       │
00:00:50 v #1224 > > │ ---        	| ---                                                              │
00:00:50 v #1225 > > │                                                                              │
00:00:50 v #1226 > > │ | ---                                                                        │
00:00:50 v #1227 > > │                                                                              │
00:00:50 v #1228 > > │ | ---                                                                        │
00:00:50 v #1229 > > │ "abc"      	| "bca cab abc"                                                    │
00:00:50 v #1230 > > │                                                                              │
00:00:50 v #1231 > > │ | "bca cab abc"                                                              │
00:00:50 v #1232 > > │                                                                              │
00:00:50 v #1233 > > │ | 1, 638                                                                     │
00:00:50 v #1234 > > │ "abcde"    	| "bcdea cdeab deabc eabcd abcde"                                  │
00:00:50 v #1235 > > │ | "bcdea cdeab deabc eabcd abcde"                                            │
00:00:50 v #1236 > > │ | 1, 745                                                                     │
00:00:50 v #1237 > > │ "abcdefghi"	| "bcdefghia cdefghiab defghiabc efghiabcd fghiabcde ghiabcdef     │
00:00:50 v #1238 > > │ hiabcdefg iabcdefgh abcdefghi"	| "bcdefghia cdefghiab defghiabc efghiabcd      │
00:00:50 v #1239 > > │ fghiabcde ghiabcdef hiabcdefg iabcdefgh abcdefghi"	| 1, 1092                   │
00:00:50 v #1240 > > │ "abab"     	| "baba abab baba abab"                                            │
00:00:50 v #1241 > > │ | "baba abab baba abab"                                                      │
00:00:50 v #1242 > > │ | 1, 536                                                                     │
00:00:50 v #1243 > > │ "aa"       	| "aa aa"                                                          │
00:00:50 v #1244 > > │                                                                              │
00:00:50 v #1245 > > │ | "aa aa"                                                                    │
00:00:50 v #1246 > > │                                                                              │
00:00:50 v #1247 > > │ | 1, 365                                                                     │
00:00:50 v #1248 > > │ "z"        	| "z"                                                              │
00:00:50 v #1249 > > │                                                                              │
00:00:50 v #1250 > > │ | "z"                                                                        │
00:00:50 v #1251 > > │                                                                              │
00:00:50 v #1252 > > │ | 2, 143                                                                     │
00:00:50 v #1253 > > │ ```                                                                          │
00:00:50 v #1254 > > │ 02:21:22 verbose #20 benchmark.sort_result_list / averages.iter / {avg  │
00:00:50 v #1255 > > │ = 589; i = 1}                                                                │
00:00:50 v #1256 > > │ 02:21:22 verbose #21 benchmark.sort_result_list / averages.iter / {avg  │
00:00:50 v #1257 > > │ = 675; i = 2}                                                                │
00:00:50 v #1258 > > │ ```                                                                          │
00:00:50 v #1259 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:50 v #1260 > >
00:00:50 v #1261 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:50 v #1262 > > //// test
00:00:50 v #1263 > > //// timeout=60000
00:00:50 v #1264 > >
00:00:50 v #1265 > > inl get_solutions () =
00:00:50 v #1266 > >     [[
00:00:50 v #1267 > >         // "A",
00:00:50 v #1268 > >         // fun (input : string) =>
00:00:50 v #1269 > >         //     let resultList =
00:00:50 v #1270 > >         //         List.fold (fun acc x =>
00:00:50 v #1271 > >         //             let rotate (text : string) (letter : string) =
00:00:50 v #1272 > > text.Substring (1, input.Length - 1) + letter
00:00:50 v #1273 > >         //             [[ rotate (if acc.IsEmpty then input else acc.Head)
00:00:50 v #1274 > > (string x) ]] ++ acc
00:00:50 v #1275 > >         //         ) [[]] (Seq.toList input)
00:00:50 v #1276 > >
00:00:50 v #1277 > >         //     List.foldBack (fun acc x => x + acc + " ") resultList ""
00:00:50 v #1278 > >         //     |> fun x => x.TrimEnd ()
00:00:50 v #1279 > >
00:00:50 v #1280 > >         // "B",
00:00:50 v #1281 > >         // fun input =>
00:00:50 v #1282 > >         //     input
00:00:50 v #1283 > >         //     |> Seq.toList
00:00:50 v #1284 > >         //     |> List.fold (fun (acc : string list) letter =>
00:00:50 v #1285 > >         //         let last =
00:00:50 v #1286 > >         //             if acc.IsEmpty
00:00:50 v #1287 > >         //             then input
00:00:50 v #1288 > >         //             else acc.Head
00:00:50 v #1289 > >
00:00:50 v #1290 > >         //         let item = last.[[1 .. input.Length - 1]] + string letter
00:00:50 v #1291 > >
00:00:50 v #1292 > >         //         item :: acc
00:00:50 v #1293 > >         //     ) [[]]
00:00:50 v #1294 > >         //     |> List.rev
00:00:50 v #1295 > >         //     |> SpiralSm.concat " "
00:00:50 v #1296 > >
00:00:50 v #1297 > >         // "C",
00:00:50 v #1298 > >         // fun input =>
00:00:50 v #1299 > >         //     input
00:00:50 v #1300 > >         //     |> Seq.toList
00:00:50 v #1301 > >         //     |> List.fold (fun (acc : list string) letter => acc.Head.[[ 1 ..
00:00:50 v #1302 > > input.Length - 1 ]] + string letter :: acc) [[ input ]]
00:00:50 v #1303 > >         //     |> List.rev
00:00:50 v #1304 > >         //     |> List.skip 1
00:00:50 v #1305 > >         //     |> SpiralSm.concat " "
00:00:50 v #1306 > >
00:00:50 v #1307 > >         // "CA",
00:00:50 v #1308 > >         // fun input =>
00:00:50 v #1309 > >         //     input
00:00:50 v #1310 > >         //     |> Seq.fold (fun (acc : list string) letter => acc.Head.[[ 1 ..
00:00:50 v #1311 > > input.Length - 1 ]] + string letter :: acc) [[ input ]]
00:00:50 v #1312 > >         //     |> Seq.rev
00:00:50 v #1313 > >         //     |> Seq.skip 1
00:00:50 v #1314 > >         //     |> SpiralSm.concat " "
00:00:50 v #1315 > >
00:00:50 v #1316 > >         // "CB",
00:00:50 v #1317 > >         // fun input =>
00:00:50 v #1318 > >         //     input
00:00:50 v #1319 > >         //     |> Seq.toArray
00:00:50 v #1320 > >         //     |> Array.fold (fun (acc : a _ string) letter => acc |>
00:00:50 v #1321 > > Array.append (a ;[[ acc.[[0]].[[ 1 .. input.Length - 1 ]] + string letter ]]))
00:00:50 v #1322 > > (a ;[[ input ]])
00:00:50 v #1323 > >         //     |> Array.rev
00:00:50 v #1324 > >         //     |> Array.skip 1
00:00:50 v #1325 > >         //     |> SpiralSm.concat " "
00:00:50 v #1326 > >
00:00:50 v #1327 > >         // "D",
00:00:50 v #1328 > >         // fun input =>
00:00:50 v #1329 > >         //     input
00:00:50 v #1330 > >         //     |> Seq.toList
00:00:50 v #1331 > >         //     |> fun list =>
00:00:50 v #1332 > >         //         let rec loop (acc : list (list char)) = function
00:00:50 v #1333 > >         //             | _ when acc.Length = list.Length => acc
00:00:50 v #1334 > >         //             | head :: tail =>
00:00:50 v #1335 > >         //                 let item = tail ++ [[ head ]]
00:00:50 v #1336 > >         //                 loop (item :: acc) item
00:00:50 v #1337 > >         //             | [[]] => [[]]
00:00:50 v #1338 > >         //         loop [[]] list
00:00:50 v #1339 > >         //     |> List.rev
00:00:50 v #1340 > >         //     |> List.map (List.toArray >> String)
00:00:50 v #1341 > >         //     |> SpiralSm.concat " "
00:00:50 v #1342 > >
00:00:50 v #1343 > >         // "E",
00:00:50 v #1344 > >         // fun input =>
00:00:50 v #1345 > >         //     input
00:00:50 v #1346 > >         //     |> Seq.toList
00:00:50 v #1347 > >         //     |> fun list =>
00:00:50 v #1348 > >         //         let rec loop (last : string) = function
00:00:50 v #1349 > >         //             | head :: tail =>
00:00:50 v #1350 > >         //                 let item = last.[[1 .. input.Length - 1]] + string
00:00:50 v #1351 > > head
00:00:50 v #1352 > >         //                 item :: loop item tail
00:00:50 v #1353 > >         //             | [[]] => [[]]
00:00:50 v #1354 > >         //         loop input list
00:00:50 v #1355 > >         //     |> SpiralSm.concat " "
00:00:50 v #1356 > >
00:00:50 v #1357 > >         "F",
00:00:50 v #1358 > >         fun input =>
00:00:50 v #1359 > >         // Array.singleton 0
00:00:50 v #1360 > >         // |> Array.append [[| 1 .. input.Length - 1 |]]
00:00:50 v #1361 > >         // |> Array.map (fun i -> input.[[ i .. ]] + input.[[ .. i - 1 ]])
00:00:50 v #1362 > >         // |> SpiralSm.concat " "
00:00:50 v #1363 > >             inl input_length = input |> sm.length
00:00:50 v #1364 > >             am.singleton 0i32
00:00:50 v #1365 > >             |> am.append (am'.init_series 1 (input_length - 1) 1 |> fun x => a x
00:00:50 v #1366 > > : _ int _)
00:00:50 v #1367 > >             |> fun (a x) => x
00:00:50 v #1368 > >             |> am'.map_base fun i =>
00:00:50 v #1369 > >                 inl a = input |> sm'.slice i (input_length - 1)
00:00:50 v #1370 > >                 inl b = input |> sm'.slice 0 (i - 1)
00:00:50 v #1371 > >                 a +. b
00:00:50 v #1372 > >             |> fun x => a x : _ int _
00:00:50 v #1373 > >             |> seq.of_array
00:00:50 v #1374 > >             |> sm'.concat " "
00:00:50 v #1375 > >
00:00:50 v #1376 > >         "FA",
00:00:50 v #1377 > >         fun input =>
00:00:50 v #1378 > >         //     List.singleton 0
00:00:50 v #1379 > >         //     |> List.append [[ 1 .. input.Length - 1 ]]
00:00:50 v #1380 > >         //   //  |> List.map (fun i => input.[[ i .. ]] + input.[[ .. i - 1 ]])
00:00:50 v #1381 > >         //     |> SpiralSm.concat " "
00:00:50 v #1382 > >             inl input_length = input |> sm.length
00:00:50 v #1383 > >             listm.singleton 0i32
00:00:50 v #1384 > >             |> listm.append (listm'.init_series 1 (input_length - 1) 1)
00:00:50 v #1385 > >             |> listm.map (fun i =>
00:00:50 v #1386 > >                 inl a = input |> sm'.slice i (input_length - 1)
00:00:50 v #1387 > >                 inl b = if i = 0 then "" else input |> sm'.slice 0 (i - 1)
00:00:50 v #1388 > >                 a +. b
00:00:50 v #1389 > >             )
00:00:50 v #1390 > >             |> listm'.box
00:00:50 v #1391 > >             |> listm'.to_array'
00:00:50 v #1392 > >             |> fun x => a x : _ int _
00:00:50 v #1393 > >             |> seq.of_array
00:00:50 v #1394 > >             |> sm'.concat " "
00:00:50 v #1395 > >
00:00:50 v #1396 > >         // "FB",
00:00:50 v #1397 > >         // fun input =>
00:00:50 v #1398 > >         //     Seq.singleton 0
00:00:50 v #1399 > >         //   //  |> Seq.append (seq { 1 .. input.Length - 1 })
00:00:50 v #1400 > >         //   //  |> Seq.map (fun i => input.[[ i .. ]] + input.[[ .. i - 1 ]])
00:00:50 v #1401 > >         //     |> SpiralSm.concat " "
00:00:50 v #1402 > >
00:00:50 v #1403 > >         // "FC",
00:00:50 v #1404 > >         // fun input =>
00:00:50 v #1405 > >         //     Array.singleton 0
00:00:50 v #1406 > >         //     |> Array.append (a ;[[ 1 .. input.Length - 1 ]])
00:00:50 v #1407 > >         ////    |> Array.Parallel.map (fun i => input.[[ i .. ]] + input.[[ .. i
00:00:50 v #1408 > > - 1 ]])
00:00:50 v #1409 > >         //     |> SpiralSm.concat " "
00:00:50 v #1410 > >     ]]
00:00:50 v #1411 > >
00:00:50 v #1412 > > inl rec rotate_strings_tests () =
00:00:50 v #1413 > >     inl test_cases = [[
00:00:50 v #1414 > >         "abc", "bca cab abc"
00:00:50 v #1415 > >         "abcde", "bcdea cdeab deabc eabcd abcde"
00:00:50 v #1416 > >         "abcdefghi", "bcdefghia cdefghiab defghiabc efghiabcd fghiabcde
00:00:50 v #1417 > > ghiabcdef hiabcdefg iabcdefgh abcdefghi"
00:00:50 v #1418 > >         "abab", "baba abab baba abab"
00:00:50 v #1419 > >         "aa", "aa aa"
00:00:50 v #1420 > >         "z", "z"
00:00:50 v #1421 > >     ]]
00:00:50 v #1422 > >
00:00:50 v #1423 > >     inl solutions = get_solutions ()
00:00:50 v #1424 > >
00:00:50 v #1425 > >     // inl is_fast () = true
00:00:50 v #1426 > >
00:00:50 v #1427 > >     inl count =
00:00:50 v #1428 > >         if is_fast ()
00:00:50 v #1429 > >         then 1000i32
00:00:50 v #1430 > >         else 2000000i32
00:00:50 v #1431 > >
00:00:50 v #1432 > >     run_all (reflection.nameof { rotate_strings_tests }) count solutions
00:00:50 v #1433 > > test_cases
00:00:50 v #1434 > >     |> sort_result_list
00:00:50 v #1435 > >
00:00:50 v #1436 > > rotate_strings_tests ()
00:01:10 v #1437 > >
00:01:10 v #1438 > > ╭─[ 20.12s - stdout ]──────────────────────────────────────────────────────────╮
00:01:10 v #1439 > > │                                                                              │
00:01:10 v #1440 > > │ ```                                                                          │
00:01:10 v #1441 > > │ 00:00:00 v #1 benchmark.run_all / { test_name = rotate_strings_tests;   │
00:01:10 v #1442 > > │ count = 2000000 }                                                            │
00:01:10 v #1443 > > │                                                                              │
00:01:10 v #1444 > > │ 00:00:00 v #2 benchmark.run / { input_str = "abc" }                     │
00:01:10 v #1445 > > │ 00:00:01 v #3 benchmark.run / solutions.map / { i = 1; test_name = F;   │
00:01:10 v #1446 > > │ time = 942 }                                                                 │
00:01:10 v #1447 > > │ 00:00:02 v #4 benchmark.run / solutions.map / { i = 2; test_name = FA;  │
00:01:10 v #1448 > > │ time = 1165 }                                                                │
00:01:10 v #1449 > > │                                                                              │
00:01:10 v #1450 > > │ 00:00:02 v #5 benchmark.run / { input_str = "abcde" }                   │
00:01:10 v #1451 > > │ 00:00:04 v #6 benchmark.run / solutions.map / { i = 1; test_name = F;   │
00:01:10 v #1452 > > │ time = 1180 }                                                                │
00:01:10 v #1453 > > │ 00:00:06 v #7 benchmark.run / solutions.map / { i = 2; test_name = FA;  │
00:01:10 v #1454 > > │ time = 1659 }                                                                │
00:01:10 v #1455 > > │                                                                              │
00:01:10 v #1456 > > │ 00:00:06 v #8 benchmark.run / { input_str = "abcdefghi" }               │
00:01:10 v #1457 > > │ 00:00:08 v #9 benchmark.run / solutions.map / { i = 1; test_name = F;   │
00:01:10 v #1458 > > │ time = 2025 }                                                                │
00:01:10 v #1459 > > │ 00:00:12 v #10 benchmark.run / solutions.map / { i = 2; test_name = FA; │
00:01:10 v #1460 > > │ time = 3039 }                                                                │
00:01:10 v #1461 > > │                                                                              │
00:01:10 v #1462 > > │ 00:00:12 v #11 benchmark.run / { input_str = "abab" }                   │
00:01:10 v #1463 > > │ 00:00:13 v #12 benchmark.run / solutions.map / { i = 1; test_name = F;  │
00:01:10 v #1464 > > │ time = 1028 }                                                                │
00:01:10 v #1465 > > │ 00:00:15 v #13 benchmark.run / solutions.map / { i = 2; test_name = FA; │
00:01:10 v #1466 > > │ time = 1210 }                                                                │
00:01:10 v #1467 > > │                                                                              │
00:01:10 v #1468 > > │ 00:00:15 v #14 benchmark.run / { input_str = "aa" }                     │
00:01:10 v #1469 > > │ 00:00:16 v #15 benchmark.run / solutions.map / { i = 1; test_name = F;  │
00:01:10 v #1470 > > │ time = 750 }                                                                 │
00:01:10 v #1471 > > │ 00:00:17 v #16 benchmark.run / solutions.map / { i = 2; test_name = FA; │
00:01:10 v #1472 > > │ time = 790 }                                                                 │
00:01:10 v #1473 > > │                                                                              │
00:01:10 v #1474 > > │ 00:00:17 v #17 benchmark.run / { input_str = "z" }                      │
00:01:10 v #1475 > > │ 00:00:18 v #18 benchmark.run / solutions.map / { i = 1; test_name = F;  │
00:01:10 v #1476 > > │ time = 224 }                                                                 │
00:01:10 v #1477 > > │ 00:00:18 v #19 benchmark.run / solutions.map / { i = 2; test_name = FA; │
00:01:10 v #1478 > > │ time = 193 }                                                                 │
00:01:10 v #1479 > > │ ```                                                                          │
00:01:10 v #1480 > > │ input      	| expected                                                         │
00:01:10 v #1481 > > │                                                                              │
00:01:10 v #1482 > > │ | result                                                                     │
00:01:10 v #1483 > > │                                                                              │
00:01:10 v #1484 > > │ | best                                                                       │
00:01:10 v #1485 > > │ ---        	| ---                                                              │
00:01:10 v #1486 > > │                                                                              │
00:01:10 v #1487 > > │ | ---                                                                        │
00:01:10 v #1488 > > │                                                                              │
00:01:10 v #1489 > > │ | ---                                                                        │
00:01:10 v #1490 > > │ "abc"      	| "bca cab abc"                                                    │
00:01:10 v #1491 > > │                                                                              │
00:01:10 v #1492 > > │ | "bca cab abc"                                                              │
00:01:10 v #1493 > > │                                                                              │
00:01:10 v #1494 > > │ | 1, 942                                                                     │
00:01:10 v #1495 > > │ "abcde"    	| "bcdea cdeab deabc eabcd abcde"                                  │
00:01:10 v #1496 > > │ | "bcdea cdeab deabc eabcd abcde"                                            │
00:01:10 v #1497 > > │ | 1, 1180                                                                    │
00:01:10 v #1498 > > │ "abcdefghi"	| "bcdefghia cdefghiab defghiabc efghiabcd fghiabcde ghiabcdef     │
00:01:10 v #1499 > > │ hiabcdefg iabcdefgh abcdefghi"	| "bcdefghia cdefghiab defghiabc efghiabcd      │
00:01:10 v #1500 > > │ fghiabcde ghiabcdef hiabcdefg iabcdefgh abcdefghi"	| 1, 2025                   │
00:01:10 v #1501 > > │ "abab"     	| "baba abab baba abab"                                            │
00:01:10 v #1502 > > │ | "baba abab baba abab"                                                      │
00:01:10 v #1503 > > │ | 1, 1028                                                                    │
00:01:10 v #1504 > > │ "aa"       	| "aa aa"                                                          │
00:01:10 v #1505 > > │                                                                              │
00:01:10 v #1506 > > │ | "aa aa"                                                                    │
00:01:10 v #1507 > > │                                                                              │
00:01:10 v #1508 > > │ | 1, 750                                                                     │
00:01:10 v #1509 > > │ "z"        	| "z"                                                              │
00:01:10 v #1510 > > │                                                                              │
00:01:10 v #1511 > > │ | "z"                                                                        │
00:01:10 v #1512 > > │                                                                              │
00:01:10 v #1513 > > │ | 2, 193                                                                     │
00:01:10 v #1514 > > │ ```                                                                          │
00:01:10 v #1515 > > │ 00:00:18 v #20 benchmark.sort_result_list / averages.iter / { i = 1;    │
00:01:10 v #1516 > > │ avg = 1024 }                                                                 │
00:01:10 v #1517 > > │ 00:00:18 v #21 benchmark.sort_result_list / averages.iter / { i = 2;    │
00:01:10 v #1518 > > │ avg = 1342 }                                                                 │
00:01:10 v #1519 > > │ ```                                                                          │
00:01:10 v #1520 > > │                                                                              │
00:01:10 v #1521 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:10 v #1522 > >
00:01:10 v #1523 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:10 v #1524 > > //// test
00:01:10 v #1525 > >
00:01:10 v #1526 > > // rotate_strings_tests ()
00:01:10 v #1527 > > ()
00:01:10 v #1528 > >
00:01:10 v #1529 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:10 v #1530 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:10 v #1531 > > │ ## binary_search_tests                                                       │
00:01:10 v #1532 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:10 v #1533 > >
00:01:10 v #1534 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:10 v #1535 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:10 v #1536 > > │ ```                                                                          │
00:01:10 v #1537 > > │ 02:19:29 verbose #1 benchmark.run_all / {count = 10000000; test_name =  │
00:01:10 v #1538 > > │ binary_search_tests}                                                         │
00:01:10 v #1539 > > │                                                                              │
00:01:10 v #1540 > > │ 02:19:29 verbose #2 benchmark.run / {input_str = struct ([|1; 3; 4; 6;  │
00:01:10 v #1541 > > │ 8; 9; 11|], 6, 7)}                                                           │
00:01:10 v #1542 > > │ 02:19:30 verbose #3 benchmark.run / solutions.map / {i = 1; test_name = │
00:01:10 v #1543 > > │ semi_open_1; time = 662}                                                     │
00:01:10 v #1544 > > │ 02:19:30 verbose #4 benchmark.run / solutions.map / {i = 2; test_name = │
00:01:10 v #1545 > > │ closed_1; time = 619}                                                        │
00:01:10 v #1546 > > │ 02:19:31 verbose #5 benchmark.run / solutions.map / {i = 3; test_name = │
00:01:10 v #1547 > > │ semi_open_2; time = 644}                                                     │
00:01:10 v #1548 > > │ 02:19:32 verbose #6 benchmark.run / solutions.map / {i = 4; test_name = │
00:01:10 v #1549 > > │ closed_2; time = 610}                                                        │
00:01:10 v #1550 > > │                                                                              │
00:01:10 v #1551 > > │ 02:19:32 verbose #7 benchmark.run / {input_str = struct ([|1; 3; 4; 6;  │
00:01:10 v #1552 > > │ 8; 9; 11|], 1, 7)}                                                           │
00:01:10 v #1553 > > │ 02:19:33 verbose #8 benchmark.run / solutions.map / {i = 1; test_name = │
00:01:10 v #1554 > > │ semi_open_1; time = 607}                                                     │
00:01:10 v #1555 > > │ 02:19:33 verbose #9 benchmark.run / solutions.map / {i = 2; test_name = │
00:01:10 v #1556 > > │ closed_1; time = 559}                                                        │
00:01:10 v #1557 > > │ 02:19:34 verbose #10 benchmark.run / solutions.map / {i = 3; test_name  │
00:01:10 v #1558 > > │ = semi_open_2; time = 612}                                                   │
00:01:10 v #1559 > > │ 02:19:35 verbose #11 benchmark.run / solutions.map / {i = 4; test_name  │
00:01:10 v #1560 > > │ = closed_2; time = 577}                                                      │
00:01:10 v #1561 > > │                                                                              │
00:01:10 v #1562 > > │ 02:19:35 verbose #12 benchmark.run / {input_str = struct ([|1; 3; 4; 6; │
00:01:10 v #1563 > > │ 8; 9; 11|], 11, 7)}                                                          │
00:01:10 v #1564 > > │ 02:19:35 verbose #13 benchmark.run / solutions.map / {i = 1; test_name  │
00:01:10 v #1565 > > │ = semi_open_1; time = 550}                                                   │
00:01:10 v #1566 > > │ 02:19:36 verbose #14 benchmark.run / solutions.map / {i = 2; test_name  │
00:01:10 v #1567 > > │ = closed_1; time = 580}                                                      │
00:01:10 v #1568 > > │ 02:19:37 verbose #15 benchmark.run / solutions.map / {i = 3; test_name  │
00:01:10 v #1569 > > │ = semi_open_2; time = 624}                                                   │
00:01:10 v #1570 > > │ 02:19:37 verbose #16 benchmark.run / solutions.map / {i = 4; test_name  │
00:01:10 v #1571 > > │ = closed_2; time = 590}                                                      │
00:01:10 v #1572 > > │                                                                              │
00:01:10 v #1573 > > │ 02:19:37 verbose #17 benchmark.run / {input_str = struct ([|1; 3; 4; 6; │
00:01:10 v #1574 > > │ 8; 9; 11|], 12, 7)}                                                          │
00:01:10 v #1575 > > │ 02:19:38 verbose #18 benchmark.run / solutions.map / {i = 1; test_name  │
00:01:10 v #1576 > > │ = semi_open_1; time = 574}                                                   │
00:01:10 v #1577 > > │ 02:19:39 verbose #19 benchmark.run / solutions.map / {i = 2; test_name  │
00:01:10 v #1578 > > │ = closed_1; time = 577}                                                      │
00:01:10 v #1579 > > │ 02:19:39 verbose #20 benchmark.run / solutions.map / {i = 3; test_name  │
00:01:10 v #1580 > > │ = semi_open_2; time = 582}                                                   │
00:01:10 v #1581 > > │ 02:19:40 verbose #21 benchmark.run / solutions.map / {i = 4; test_name  │
00:01:10 v #1582 > > │ = closed_2; time = 585}                                                      │
00:01:10 v #1583 > > │                                                                              │
00:01:10 v #1584 > > │ 02:19:40 verbose #22 benchmark.run / {input_str = struct ([|1; 2; 3;    │
00:01:10 v #1585 > > │ 4...00; ...|], 60, 1000)}                                                    │
00:01:10 v #1586 > > │ 02:19:41 verbose #23 benchmark.run / solutions.map / {i = 1; test_name  │
00:01:10 v #1587 > > │ = semi_open_1; time = 610}                                                   │
00:01:10 v #1588 > > │ 02:19:42 verbose #24 benchmark.run / solutions.map / {i = 2; test_name  │
00:01:10 v #1589 > > │ = closed_1; time = 672}                                                      │
00:01:10 v #1590 > > │ 02:19:42 verbose #25 benchmark.run / solutions.map / {i = 3; test_name  │
00:01:10 v #1591 > > │ = semi_open_2; time = 636}                                                   │
00:01:10 v #1592 > > │ 02:19:43 verbose #26 benchmark.run / solutions.map / {i = 4; test_name  │
00:01:10 v #1593 > > │ = closed_2; time = 629}                                                      │
00:01:10 v #1594 > > │                                                                              │
00:01:10 v #1595 > > │ 02:19:43 verbose #27 benchmark.run / {input_str = struct ([|1; 3; 4; 6; │
00:01:10 v #1596 > > │ 8; 9; 11|], 6, 7)}                                                           │
00:01:10 v #1597 > > │ 02:19:44 verbose #28 benchmark.run / solutions.map / {i = 1; test_name  │
00:01:10 v #1598 > > │ = semi_open_1; time = 599}                                                   │
00:01:10 v #1599 > > │ 02:19:44 verbose #29 benchmark.run / solutions.map / {i = 2; test_name  │
00:01:10 v #1600 > > │ = closed_1; time = 561}                                                      │
00:01:10 v #1601 > > │ 02:19:45 verbose #30 benchmark.run / solutions.map / {i = 3; test_name  │
00:01:10 v #1602 > > │ = semi_open_2; time = 604}                                                   │
00:01:10 v #1603 > > │ 02:19:46 verbose #31 benchmark.run / solutions.map / {i = 4; test_name  │
00:01:10 v #1604 > > │ = closed_2; time = 573}                                                      │
00:01:10 v #1605 > > │                                                                              │
00:01:10 v #1606 > > │ 02:19:46 verbose #32 benchmark.run / {input_str = struct ([|1; 3; 4; 6; │
00:01:10 v #1607 > > │ 8; 9; 11|], 1, 7)}                                                           │
00:01:10 v #1608 > > │ 02:19:47 verbose #33 benchmark.run / solutions.map / {i = 1; test_name  │
00:01:10 v #1609 > > │ = semi_open_1; time = 635}                                                   │
00:01:10 v #1610 > > │ 02:19:47 verbose #34 benchmark.run / solutions.map / {i = 2; test_name  │
00:01:10 v #1611 > > │ = closed_1; time = 603}                                                      │
00:01:10 v #1612 > > │ 02:19:48 verbose #35 benchmark.run / solutions.map / {i = 3; test_name  │
00:01:10 v #1613 > > │ = semi_open_2; time = 644}                                                   │
00:01:10 v #1614 > > │ 02:19:49 verbose #36 benchmark.run / solutions.map / {i = 4; test_name  │
00:01:10 v #1615 > > │ = closed_2; time = 628}                                                      │
00:01:10 v #1616 > > │                                                                              │
00:01:10 v #1617 > > │ 02:19:49 verbose #37 benchmark.run / {input_str = struct ([|1; 3; 4; 6; │
00:01:10 v #1618 > > │ 8; 9; 11|], 11, 7)}                                                          │
00:01:10 v #1619 > > │ 02:19:49 verbose #38 benchmark.run / solutions.map / {i = 1; test_name  │
00:01:10 v #1620 > > │ = semi_open_1; time = 643}                                                   │
00:01:10 v #1621 > > │ 02:19:50 verbose #39 benchmark.run / solutions.map / {i = 2; test_name  │
00:01:10 v #1622 > > │ = closed_1; time = 606}                                                      │
00:01:10 v #1623 > > │ 02:19:51 verbose #40 benchmark.run / solutions.map / {i = 3; test_name  │
00:01:10 v #1624 > > │ = semi_open_2; time = 636}                                                   │
00:01:10 v #1625 > > │ 02:19:52 verbose #41 benchmark.run / solutions.map / {i = 4; test_name  │
00:01:10 v #1626 > > │ = closed_2; time = 624}                                                      │
00:01:10 v #1627 > > │                                                                              │
00:01:10 v #1628 > > │ 02:19:52 verbose #42 benchmark.run / {input_str = struct ([|1; 3; 4; 6; │
00:01:10 v #1629 > > │ 8; 9; 11|], 12, 7)}                                                          │
00:01:10 v #1630 > > │ 02:19:52 verbose #43 benchmark.run / solutions.map / {i = 1; test_name  │
00:01:10 v #1631 > > │ = semi_open_1; time = 689}                                                   │
00:01:10 v #1632 > > │ 02:19:53 verbose #44 benchmark.run / solutions.map / {i = 2; test_name  │
00:01:10 v #1633 > > │ = closed_1; time = 613}                                                      │
00:01:10 v #1634 > > │ 02:19:54 verbose #45 benchmark.run / solutions.map / {i = 3; test_name  │
00:01:10 v #1635 > > │ = semi_open_2; time = 623}                                                   │
00:01:10 v #1636 > > │ 02:19:55 verbose #46 benchmark.run / solutions.map / {i = 4; test_name  │
00:01:10 v #1637 > > │ = closed_2; time = 613}                                                      │
00:01:10 v #1638 > > │                                                                              │
00:01:10 v #1639 > > │ 02:19:55 verbose #47 benchmark.run / {input_str = struct ([|1; 2; 3;    │
00:01:10 v #1640 > > │ 4...100; ...|], 60, 100)}                                                    │
00:01:10 v #1641 > > │ 02:19:55 verbose #48 benchmark.run / solutions.map / {i = 1; test_name  │
00:01:10 v #1642 > > │ = semi_open_1; time = 630}                                                   │
00:01:10 v #1643 > > │ 02:19:56 verbose #49 benchmark.run / solutions.map / {i = 2; test_name  │
00:01:10 v #1644 > > │ = closed_1; time = 633}                                                      │
00:01:10 v #1645 > > │ 02:19:57 verbose #50 benchmark.run / solutions.map / {i = 3; test_name  │
00:01:10 v #1646 > > │ = semi_open_2; time = 653}                                                   │
00:01:10 v #1647 > > │ 02:19:58 verbose #51 benchmark.run / solutions.map / {i = 4; test_name  │
00:01:10 v #1648 > > │ = closed_2; time = 646}                                                      │
00:01:10 v #1649 > > │ ```                                                                          │
00:01:10 v #1650 > > │ input                                    	| expected	| result  	| best             │
00:01:10 v #1651 > > │ ---                                      	| ---     	| ---     	| ---              │
00:01:10 v #1652 > > │ struct ([1; 3; 4; 6; 8; 9; 11], 6, 7)    	| US4_0 3 	| US4_0 3 	| 4, 610           │
00:01:10 v #1653 > > │ struct ([1; 3; 4; 6; 8; 9; 11], 1, 7)    	| US4_0 0 	| US4_0 0 	| 2, 559           │
00:01:10 v #1654 > > │ struct ([1; 3; 4; 6; 8; 9; 11], 11, 7)   	| US4_0 6 	| US4_0 6 	| 1, 550           │
00:01:10 v #1655 > > │ struct ([1; 3; 4; 6; 8; 9; 11], 12, 7)   	| US4_1   	| US4_1   	| 1, 574           │
00:01:10 v #1656 > > │ struct ([1; 2; 3; 4...00; ...], 60, 1000)	| US4_0 59	| US4_0 59	| 1, 610           │
00:01:10 v #1657 > > │ struct ([1; 3; 4; 6; 8; 9; 11], 6, 7)    	| US4_0 3 	| US4_0 3 	| 2, 561           │
00:01:10 v #1658 > > │ struct ([1; 3; 4; 6; 8; 9; 11], 1, 7)    	| US4_0 0 	| US4_0 0 	| 2, 603           │
00:01:10 v #1659 > > │ struct ([1; 3; 4; 6; 8; 9; 11], 11, 7)   	| US4_0 6 	| US4_0 6 	| 2, 606           │
00:01:10 v #1660 > > │ struct ([1; 3; 4; 6; 8; 9; 11], 12, 7)   	| US4_1   	| US4_1   	| 2, 613           │
00:01:10 v #1661 > > │ struct ([1; 2; 3; 4...100; ...], 60, 100)	| US4_0 59	| US4_0 59	| 1, 630           │
00:01:10 v #1662 > > │ ```                                                                          │
00:01:10 v #1663 > > │ 02:19:58 verbose #52 benchmark.sort_result_list / averages.iter / {avg  │
00:01:10 v #1664 > > │ = 602; i = 2}                                                                │
00:01:10 v #1665 > > │ 02:19:58 verbose #53 benchmark.sort_result_list / averages.iter / {avg  │
00:01:10 v #1666 > > │ = 607; i = 4}                                                                │
00:01:10 v #1667 > > │ 02:19:58 verbose #54 benchmark.sort_result_list / averages.iter / {avg  │
00:01:10 v #1668 > > │ = 619; i = 1}                                                                │
00:01:10 v #1669 > > │ 02:19:58 verbose #55 benchmark.sort_result_list / averages.iter / {avg  │
00:01:10 v #1670 > > │ = 625; i = 3}                                                                │
00:01:10 v #1671 > > │ ```                                                                          │
00:01:10 v #1672 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:10 v #1673 > >
00:01:10 v #1674 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:10 v #1675 > > //// test
00:01:10 v #1676 > > //// timeout=90000
00:01:10 v #1677 > >
00:01:10 v #1678 > > inl binary_search_semi_open_1 arr target left right =
00:01:10 v #1679 > >     inl rec body left right =
00:01:10 v #1680 > >         if left >= right
00:01:10 v #1681 > >         then None
00:01:10 v #1682 > >         else
00:01:10 v #1683 > >             inl mid = (left + right) / 2
00:01:10 v #1684 > >             inl item = index arr mid
00:01:10 v #1685 > >             if item = target
00:01:10 v #1686 > >             then Some mid
00:01:10 v #1687 > >             elif item < target
00:01:10 v #1688 > >             then loop (mid + 1) right
00:01:10 v #1689 > >             else loop left mid
00:01:10 v #1690 > >     and inl loop left right =
00:01:10 v #1691 > >         if var_is right |> not
00:01:10 v #1692 > >         then body left right
00:01:10 v #1693 > >         else
00:01:10 v #1694 > >             inl left = dyn left
00:01:10 v #1695 > >             join body left right
00:01:10 v #1696 > >     loop left right
00:01:10 v #1697 > >
00:01:10 v #1698 > > inl binary_search_closed_1 arr target left right =
00:01:10 v #1699 > >     inl rec body left right =
00:01:10 v #1700 > >         if left > right
00:01:10 v #1701 > >         then None
00:01:10 v #1702 > >         else
00:01:10 v #1703 > >             inl mid = (left + right) / 2
00:01:10 v #1704 > >             inl item = index arr mid
00:01:10 v #1705 > >             if item = target
00:01:10 v #1706 > >             then Some mid
00:01:10 v #1707 > >             elif item < target
00:01:10 v #1708 > >             then loop (mid + 1) right
00:01:10 v #1709 > >             else loop left (mid - 1)
00:01:10 v #1710 > >     and inl loop left right =
00:01:10 v #1711 > >         if var_is right |> not
00:01:10 v #1712 > >         then body left right
00:01:10 v #1713 > >         else
00:01:10 v #1714 > >             inl left = dyn left
00:01:10 v #1715 > >             join body left right
00:01:10 v #1716 > >     loop left right
00:01:10 v #1717 > >
00:01:10 v #1718 > > inl binary_search_semi_open_2 arr target left right =
00:01:10 v #1719 > >     let rec body left right =
00:01:10 v #1720 > >         if left >= right
00:01:10 v #1721 > >         then None
00:01:10 v #1722 > >         else
00:01:10 v #1723 > >             inl mid = (left + right) / 2
00:01:10 v #1724 > >             inl item = index arr mid
00:01:10 v #1725 > >             if item = target
00:01:10 v #1726 > >             then Some mid
00:01:10 v #1727 > >             elif item < target
00:01:10 v #1728 > >             then loop (mid + 1) right
00:01:10 v #1729 > >             else loop left mid
00:01:10 v #1730 > >     and inl loop left right = body left right
00:01:10 v #1731 > >     loop left right
00:01:10 v #1732 > >
00:01:10 v #1733 > > inl binary_search_closed_2 arr target left right =
00:01:10 v #1734 > >     let rec body left right =
00:01:10 v #1735 > >         if left > right
00:01:10 v #1736 > >         then None
00:01:10 v #1737 > >         else
00:01:10 v #1738 > >             inl mid = (left + right) / 2
00:01:10 v #1739 > >             inl item = index arr mid
00:01:10 v #1740 > >             if item = target
00:01:10 v #1741 > >             then Some mid
00:01:10 v #1742 > >             elif item < target
00:01:10 v #1743 > >             then loop (mid + 1) right
00:01:10 v #1744 > >             else loop left (mid - 1)
00:01:10 v #1745 > >     and inl loop left right = body left right
00:01:10 v #1746 > >     loop left right
00:01:10 v #1747 > >
00:01:10 v #1748 > > inl get_solutions () =
00:01:10 v #1749 > >     [[
00:01:10 v #1750 > >         "semi_open_1",
00:01:10 v #1751 > >         fun (arr, (target, len)) =>
00:01:10 v #1752 > >             binary_search_semi_open_1 arr target 0 len
00:01:10 v #1753 > >
00:01:10 v #1754 > >         "closed_1",
00:01:10 v #1755 > >         fun (arr, (target, len)) =>
00:01:10 v #1756 > >             binary_search_closed_1 arr target 0 (len - 1)
00:01:10 v #1757 > >
00:01:10 v #1758 > >         "semi_open_2",
00:01:10 v #1759 > >         fun (arr, (target, len)) =>
00:01:10 v #1760 > >             binary_search_semi_open_2 arr target 0 len
00:01:10 v #1761 > >
00:01:10 v #1762 > >         "closed_2",
00:01:10 v #1763 > >         fun (arr, (target, len)) =>
00:01:10 v #1764 > >             binary_search_closed_2 arr target 0 (len - 1)
00:01:10 v #1765 > >     ]]
00:01:10 v #1766 > >
00:01:10 v #1767 > > inl rec binary_search_tests () =
00:01:10 v #1768 > >     inl arr_with_len target len arr =
00:01:10 v #1769 > >         arr, (target, (len |> optionm'.default_with fun () => length arr))
00:01:10 v #1770 > >
00:01:10 v #1771 > >     inl test_cases = [[
00:01:10 v #1772 > >         (a ;[[ 1i32; 3; 4; 6; 8; 9; 11 ]] |> arr_with_len 6 None), (Some 3i32)
00:01:10 v #1773 > >         (a ;[[ 1i32; 3; 4; 6; 8; 9; 11 ]] |> arr_with_len 1 None), (Some 0i32)
00:01:10 v #1774 > >         (a ;[[ 1i32; 3; 4; 6; 8; 9; 11 ]] |> arr_with_len 11 None), (Some 6i32)
00:01:10 v #1775 > >         (a ;[[ 1i32; 3; 4; 6; 8; 9; 11 ]] |> arr_with_len 12 None), None
00:01:10 v #1776 > >         ((am'.init_series 1i32 1000 1 |> fun x => a x : _ int _) |> arr_with_len
00:01:10 v #1777 > > 60 None), (Some 59)
00:01:10 v #1778 > >
00:01:10 v #1779 > >         (a ;[[ 1i32; 3; 4; 6; 8; 9; 11 ]] |> arr_with_len 6 (Some 7)), (Some
00:01:10 v #1780 > > 3i32)
00:01:10 v #1781 > >         (a ;[[ 1i32; 3; 4; 6; 8; 9; 11 ]] |> arr_with_len 1 (Some 7)), (Some
00:01:10 v #1782 > > 0i32)
00:01:10 v #1783 > >         (a ;[[ 1i32; 3; 4; 6; 8; 9; 11 ]] |> arr_with_len 11 (Some 7)), (Some
00:01:10 v #1784 > > 6i32)
00:01:10 v #1785 > >         (a ;[[ 1i32; 3; 4; 6; 8; 9; 11 ]] |> arr_with_len 12 (Some 7)), None
00:01:10 v #1786 > >         ((am'.init_series 1i32 1000 1 |> fun x => a x : _ int _) |> arr_with_len
00:01:10 v #1787 > > 60 (Some 100)), (Some 59)
00:01:10 v #1788 > >     ]]
00:01:10 v #1789 > >
00:01:10 v #1790 > >     inl solutions = get_solutions ()
00:01:10 v #1791 > >
00:01:10 v #1792 > >     // inl is_fast () = true
00:01:10 v #1793 > >
00:01:10 v #1794 > >     inl count =
00:01:10 v #1795 > >         if is_fast ()
00:01:10 v #1796 > >         then 1000i32
00:01:10 v #1797 > >         else 10000000i32
00:01:10 v #1798 > >
00:01:10 v #1799 > >     run_all (reflection.nameof { binary_search_tests }) count solutions
00:01:10 v #1800 > > test_cases
00:01:10 v #1801 > >     |> sort_result_list
00:01:10 v #1802 > >
00:01:10 v #1803 > >
00:01:10 v #1804 > > let main () =
00:01:10 v #1805 > >     binary_search_tests ()
00:01:42 v #1806 > >
00:01:42 v #1807 > > ╭─[ 31.44s - stdout ]──────────────────────────────────────────────────────────╮
00:01:42 v #1808 > > │                                                                              │
00:01:42 v #1809 > > │ ```                                                                          │
00:01:42 v #1810 > > │ 00:00:00 v #1 benchmark.run_all / { test_name = binary_search_tests;    │
00:01:42 v #1811 > > │ count = 10000000 }                                                           │
00:01:42 v #1812 > > │                                                                              │
00:01:42 v #1813 > > │ 00:00:00 v #2 benchmark.run / { input_str = struct ([|1; 3; 4; 6; 8; 9; │
00:01:42 v #1814 > > │ 11|], 6, 7) }                                                                │
00:01:42 v #1815 > > │ 00:00:00 v #3 benchmark.run / solutions.map / { i = 1; test_name =      │
00:01:42 v #1816 > > │ semi_open_1; time = 614 }                                                    │
00:01:42 v #1817 > > │ 00:00:01 v #4 benchmark.run / solutions.map / { i = 2; test_name =      │
00:01:42 v #1818 > > │ closed_1; time = 591 }                                                       │
00:01:42 v #1819 > > │ 00:00:02 v #5 benchmark.run / solutions.map / { i = 3; test_name =      │
00:01:42 v #1820 > > │ semi_open_2; time = 616 }                                                    │
00:01:42 v #1821 > > │ 00:00:03 v #6 benchmark.run / solutions.map / { i = 4; test_name =      │
00:01:42 v #1822 > > │ closed_2; time = 602 }                                                       │
00:01:42 v #1823 > > │                                                                              │
00:01:42 v #1824 > > │ 00:00:03 v #7 benchmark.run / { input_str = struct ([|1; 3; 4; 6; 8; 9; │
00:01:42 v #1825 > > │ 11|], 1, 7) }                                                                │
00:01:42 v #1826 > > │ 00:00:04 v #8 benchmark.run / solutions.map / { i = 1; test_name =      │
00:01:42 v #1827 > > │ semi_open_1; time = 644 }                                                    │
00:01:42 v #1828 > > │ 00:00:04 v #9 benchmark.run / solutions.map / { i = 2; test_name =      │
00:01:42 v #1829 > > │ closed_1; time = 475 }                                                       │
00:01:42 v #1830 > > │ 00:00:05 v #10 benchmark.run / solutions.map / { i = 3; test_name =     │
00:01:42 v #1831 > > │ semi_open_2; time = 489 }                                                    │
00:01:42 v #1832 > > │ 00:00:06 v #11 benchmark.run / solutions.map / { i = 4; test_name =     │
00:01:42 v #1833 > > │ closed_2; time = 504 }                                                       │
00:01:42 v #1834 > > │                                                                              │
00:01:42 v #1835 > > │ 00:00:06 v #12 benchmark.run / { input_str = struct ([|1; 3; 4; 6; 8;   │
00:01:42 v #1836 > > │ 9; 11|], 11, 7) }                                                            │
00:01:42 v #1837 > > │ 00:00:06 v #13 benchmark.run / solutions.map / { i = 1; test_name =     │
00:01:42 v #1838 > > │ semi_open_1; time = 505 }                                                    │
00:01:42 v #1839 > > │ 00:00:07 v #14 benchmark.run / solutions.map / { i = 2; test_name =     │
00:01:42 v #1840 > > │ closed_1; time = 480 }                                                       │
00:01:42 v #1841 > > │ 00:00:08 v #15 benchmark.run / solutions.map / { i = 3; test_name =     │
00:01:42 v #1842 > > │ semi_open_2; time = 490 }                                                    │
00:01:42 v #1843 > > │ 00:00:09 v #16 benchmark.run / solutions.map / { i = 4; test_name =     │
00:01:42 v #1844 > > │ closed_2; time = 513 }                                                       │
00:01:42 v #1845 > > │                                                                              │
00:01:42 v #1846 > > │ 00:00:09 v #17 benchmark.run / { input_str = struct ([|1; 3; 4; 6; 8;   │
00:01:42 v #1847 > > │ 9; 11|], 12, 7) }                                                            │
00:01:42 v #1848 > > │ 00:00:09 v #18 benchmark.run / solutions.map / { i = 1; test_name =     │
00:01:42 v #1849 > > │ semi_open_1; time = 494 }                                                    │
00:01:42 v #1850 > > │ 00:00:10 v #19 benchmark.run / solutions.map / { i = 2; test_name =     │
00:01:42 v #1851 > > │ closed_1; time = 502 }                                                       │
00:01:42 v #1852 > > │ 00:00:11 v #20 benchmark.run / solutions.map / { i = 3; test_name =     │
00:01:42 v #1853 > > │ semi_open_2; time = 507 }                                                    │
00:01:42 v #1854 > > │ 00:00:11 v #21 benchmark.run / solutions.map / { i = 4; test_name =     │
00:01:42 v #1855 > > │ closed_2; time = 505 }                                                       │
00:01:42 v #1856 > > │                                                                              │
00:01:42 v #1857 > > │ 00:00:11 v #22 benchmark.run / { input_str = struct ([|1; 2; 3; 4...00; │
00:01:42 v #1858 > > │ ...|], 60, 1000) }                                                           │
00:01:42 v #1859 > > │ 00:00:12 v #23 benchmark.run / solutions.map / { i = 1; test_name =     │
00:01:42 v #1860 > > │ semi_open_1; time = 531 }                                                    │
00:01:42 v #1861 > > │ 00:00:13 v #24 benchmark.run / solutions.map / { i = 2; test_name =     │
00:01:42 v #1862 > > │ closed_1; time = 547 }                                                       │
00:01:42 v #1863 > > │ 00:00:14 v #25 benchmark.run / solutions.map / { i = 3; test_name =     │
00:01:42 v #1864 > > │ semi_open_2; time = 535 }                                                    │
00:01:42 v #1865 > > │ 00:00:14 v #26 benchmark.run / solutions.map / { i = 4; test_name =     │
00:01:42 v #1866 > > │ closed_2; time = 545 }                                                       │
00:01:42 v #1867 > > │                                                                              │
00:01:42 v #1868 > > │ 00:00:14 v #27 benchmark.run / { input_str = struct ([|1; 3; 4; 6; 8;   │
00:01:42 v #1869 > > │ 9; 11|], 6, 7) }                                                             │
00:01:42 v #1870 > > │ 00:00:15 v #28 benchmark.run / solutions.map / { i = 1; test_name =     │
00:01:42 v #1871 > > │ semi_open_1; time = 472 }                                                    │
00:01:42 v #1872 > > │ 00:00:16 v #29 benchmark.run / solutions.map / { i = 2; test_name =     │
00:01:42 v #1873 > > │ closed_1; time = 496 }                                                       │
00:01:42 v #1874 > > │ 00:00:17 v #30 benchmark.run / solutions.map / { i = 3; test_name =     │
00:01:42 v #1875 > > │ semi_open_2; time = 499 }                                                    │
00:01:42 v #1876 > > │ 00:00:17 v #31 benchmark.run / solutions.map / { i = 4; test_name =     │
00:01:42 v #1877 > > │ closed_2; time = 472 }                                                       │
00:01:42 v #1878 > > │                                                                              │
00:01:42 v #1879 > > │ 00:00:17 v #32 benchmark.run / { input_str = struct ([|1; 3; 4; 6; 8;   │
00:01:42 v #1880 > > │ 9; 11|], 1, 7) }                                                             │
00:01:42 v #1881 > > │ 00:00:18 v #33 benchmark.run / solutions.map / { i = 1; test_name =     │
00:01:42 v #1882 > > │ semi_open_1; time = 505 }                                                    │
00:01:42 v #1883 > > │ 00:00:19 v #34 benchmark.run / solutions.map / { i = 2; test_name =     │
00:01:42 v #1884 > > │ closed_1; time = 528 }                                                       │
00:01:42 v #1885 > > │ 00:00:19 v #35 benchmark.run / solutions.map / { i = 3; test_name =     │
00:01:42 v #1886 > > │ semi_open_2; time = 539 }                                                    │
00:01:42 v #1887 > > │ 00:00:20 v #36 benchmark.run / solutions.map / { i = 4; test_name =     │
00:01:42 v #1888 > > │ closed_2; time = 511 }                                                       │
00:01:42 v #1889 > > │                                                                              │
00:01:42 v #1890 > > │ 00:00:20 v #37 benchmark.run / { input_str = struct ([|1; 3; 4; 6; 8;   │
00:01:42 v #1891 > > │ 9; 11|], 11, 7) }                                                            │
00:01:42 v #1892 > > │ 00:00:21 v #38 benchmark.run / solutions.map / { i = 1; test_name =     │
00:01:42 v #1893 > > │ semi_open_1; time = 527 }                                                    │
00:01:42 v #1894 > > │ 00:00:22 v #39 benchmark.run / solutions.map / { i = 2; test_name =     │
00:01:42 v #1895 > > │ closed_1; time = 516 }                                                       │
00:01:42 v #1896 > > │ 00:00:22 v #40 benchmark.run / solutions.map / { i = 3; test_name =     │
00:01:42 v #1897 > > │ semi_open_2; time = 535 }                                                    │
00:01:42 v #1898 > > │ 00:00:23 v #41 benchmark.run / solutions.map / { i = 4; test_name =     │
00:01:42 v #1899 > > │ closed_2; time = 500 }                                                       │
00:01:42 v #1900 > > │                                                                              │
00:01:42 v #1901 > > │ 00:00:23 v #42 benchmark.run / { input_str = struct ([|1; 3; 4; 6; 8;   │
00:01:42 v #1902 > > │ 9; 11|], 12, 7) }                                                            │
00:01:42 v #1903 > > │ 00:00:24 v #43 benchmark.run / solutions.map / { i = 1; test_name =     │
00:01:42 v #1904 > > │ semi_open_1; time = 506 }                                                    │
00:01:42 v #1905 > > │ 00:00:25 v #44 benchmark.run / solutions.map / { i = 2; test_name =     │
00:01:42 v #1906 > > │ closed_1; time = 539 }                                                       │
00:01:42 v #1907 > > │ 00:00:25 v #45 benchmark.run / solutions.map / { i = 3; test_name =     │
00:01:42 v #1908 > > │ semi_open_2; time = 523 }                                                    │
00:01:42 v #1909 > > │ 00:00:26 v #46 benchmark.run / solutions.map / { i = 4; test_name =     │
00:01:42 v #1910 > > │ closed_2; time = 515 }                                                       │
00:01:42 v #1911 > > │                                                                              │
00:01:42 v #1912 > > │ 00:00:26 v #47 benchmark.run / { input_str = struct ([|1; 2; 3;         │
00:01:42 v #1913 > > │ 4...100; ...|], 60, 100) }                                                   │
00:01:42 v #1914 > > │ 00:00:27 v #48 benchmark.run / solutions.map / { i = 1; test_name =     │
00:01:42 v #1915 > > │ semi_open_1; time = 551 }                                                    │
00:01:42 v #1916 > > │ 00:00:28 v #49 benchmark.run / solutions.map / { i = 2; test_name =     │
00:01:42 v #1917 > > │ closed_1; time = 588 }                                                       │
00:01:42 v #1918 > > │ 00:00:29 v #50 benchmark.run / solutions.map / { i = 3; test_name =     │
00:01:42 v #1919 > > │ semi_open_2; time = 546 }                                                    │
00:01:42 v #1920 > > │ 00:00:29 v #51 benchmark.run / solutions.map / { i = 4; test_name =     │
00:01:42 v #1921 > > │ closed_2; time = 549 }                                                       │
00:01:42 v #1922 > > │ ```                                                                          │
00:01:42 v #1923 > > │ input                                    	| expected	| result  	| best             │
00:01:42 v #1924 > > │ ---                                      	| ---     	| ---     	| ---              │
00:01:42 v #1925 > > │ struct ([1; 3; 4; 6; 8; 9; 11], 6, 7)    	| US6_0 3 	| US6_0 3 	| 2, 591           │
00:01:42 v #1926 > > │ struct ([1; 3; 4; 6; 8; 9; 11], 1, 7)    	| US6_0 0 	| US6_0 0 	| 2, 475           │
00:01:42 v #1927 > > │ struct ([1; 3; 4; 6; 8; 9; 11], 11, 7)   	| US6_0 6 	| US6_0 6 	| 2, 480           │
00:01:42 v #1928 > > │ struct ([1; 3; 4; 6; 8; 9; 11], 12, 7)   	| US6_1   	| US6_1   	| 1, 494           │
00:01:42 v #1929 > > │ struct ([1; 2; 3; 4...00; ...], 60, 1000)	| US6_0 59	| US6_0 59	| 1, 531           │
00:01:42 v #1930 > > │ struct ([1; 3; 4; 6; 8; 9; 11], 6, 7)    	| US6_0 3 	| US6_0 3 	| 1, 472           │
00:01:42 v #1931 > > │ struct ([1; 3; 4; 6; 8; 9; 11], 1, 7)    	| US6_0 0 	| US6_0 0 	| 1, 505           │
00:01:42 v #1932 > > │ struct ([1; 3; 4; 6; 8; 9; 11], 11, 7)   	| US6_0 6 	| US6_0 6 	| 4, 500           │
00:01:42 v #1933 > > │ struct ([1; 3; 4; 6; 8; 9; 11], 12, 7)   	| US6_1   	| US6_1   	| 1, 506           │
00:01:42 v #1934 > > │ struct ([1; 2; 3; 4...100; ...], 60, 100)	| US6_0 59	| US6_0 59	| 3, 546           │
00:01:42 v #1935 > > │ ```                                                                          │
00:01:42 v #1936 > > │ 00:00:29 v #52 benchmark.sort_result_list / averages.iter / { i = 4;    │
00:01:42 v #1937 > > │ avg = 521 }                                                                  │
00:01:42 v #1938 > > │ 00:00:29 v #53 benchmark.sort_result_list / averages.iter / { i = 2;    │
00:01:42 v #1939 > > │ avg = 526 }                                                                  │
00:01:42 v #1940 > > │ 00:00:29 v #54 benchmark.sort_result_list / averages.iter / { i = 3;    │
00:01:42 v #1941 > > │ avg = 527 }                                                                  │
00:01:42 v #1942 > > │ 00:00:29 v #55 benchmark.sort_result_list / averages.iter / { i = 1;    │
00:01:42 v #1943 > > │ avg = 534 }                                                                  │
00:01:42 v #1944 > > │ ```                                                                          │
00:01:42 v #1945 > > │                                                                              │
00:01:42 v #1946 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:42 v #1947 > >
00:01:42 v #1948 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:42 v #1949 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:42 v #1950 > > │ ## returnLettersWithOddCountTests                                            │
00:01:42 v #1951 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:42 v #1952 > >
00:01:42 v #1953 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:42 v #1954 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:42 v #1955 > > │ Test: ReturnLettersWithOddCount                                              │
00:01:42 v #1956 > > │                                                                              │
00:01:42 v #1957 > > │ Solution: 1                                                                  │
00:01:42 v #1958 > > │ Test case 1. A. Time: 645L                                                   │
00:01:42 v #1959 > > │                                                                              │
00:01:42 v #1960 > > │ Solution: 2                                                                  │
00:01:42 v #1961 > > │ Test case 1. A. Time: 663L                                                   │
00:01:42 v #1962 > > │                                                                              │
00:01:42 v #1963 > > │ Solution: 3                                                                  │
00:01:42 v #1964 > > │ Test case 1. A. Time: 680L                                                   │
00:01:42 v #1965 > > │                                                                              │
00:01:42 v #1966 > > │ Solution: 9                                                                  │
00:01:42 v #1967 > > │ Test case 1. A. Time: 730L                                                   │
00:01:42 v #1968 > > │                                                                              │
00:01:42 v #1969 > > │ Solution: 10                                                                 │
00:01:42 v #1970 > > │ Test case 1. A. Time: 815L                                                   │
00:01:42 v #1971 > > │                                                                              │
00:01:42 v #1972 > > │ Input   | Expected        | Result          | Best                           │
00:01:42 v #1973 > > │ ---     | ---             | ---             | ---                            │
00:01:42 v #1974 > > │ 1       | a               | a               | (1, 645)                       │
00:01:42 v #1975 > > │ 2       | ba              | ba              | (1, 663)                       │
00:01:42 v #1976 > > │ 3       | aaa             | aaa             | (1, 680)                       │
00:01:42 v #1977 > > │ 9       | aaaaaaaaa       | aaaaaaaaa       | (1, 730)                       │
00:01:42 v #1978 > > │ 10      | baaaaaaaaa      | baaaaaaaaa      | (1, 815)                       │
00:01:42 v #1979 > > │                                                                              │
00:01:42 v #1980 > > │ Averages                                                                     │
00:01:42 v #1981 > > │ Test case 1. Average Time: 706L                                              │
00:01:42 v #1982 > > │                                                                              │
00:01:42 v #1983 > > │ Ranking                                                                      │
00:01:42 v #1984 > > │ Test case 1. Average Time: 706L                                              │
00:01:42 v #1985 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:42 v #1986 > >
00:01:42 v #1987 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:01:42 v #1988 > > //// test
00:01:42 v #1989 > >
00:01:42 v #1990 > > let solutions = [[
00:01:42 v #1991 > >     "A",
00:01:42 v #1992 > >     fun n ->
00:01:42 v #1993 > >         let mutable _builder = StringBuilder (new string('a', n))
00:01:42 v #1994 > >         if n % 2 = 0 then
00:01:42 v #1995 > >             _builder.[[0]] <- 'b'
00:01:42 v #1996 > >
00:01:42 v #1997 > >         _builder.ToString ()
00:01:42 v #1998 > > ]]
00:01:42 v #1999 > > let testCases = seq {
00:01:42 v #2000 > >     1, "a"
00:01:42 v #2001 > >     2, "ba"
00:01:42 v #2002 > >     3, "aaa"
00:01:42 v #2003 > >     9, "aaaaaaaaa"
00:01:42 v #2004 > >     10, "baaaaaaaaa"
00:01:42 v #2005 > > }
00:01:42 v #2006 > > let rec returnLettersWithOddCountTests =
00:01:42 v #2007 > >     runAll (nameof returnLettersWithOddCountTests) _count solutions testCases
00:01:42 v #2008 > > returnLettersWithOddCountTests
00:01:42 v #2009 > > |> sortResultList
00:01:43 v #2010 > >
00:01:43 v #2011 > > ╭─[ 1.14s - stdout ]───────────────────────────────────────────────────────────╮
00:01:43 v #2012 > > │                                                                              │
00:01:43 v #2013 > > │                                                                              │
00:01:43 v #2014 > > │ Test: returnLettersWithOddCountTests                                         │
00:01:43 v #2015 > > │                                                                              │
00:01:43 v #2016 > > │ Solution: 1                                                                  │
00:01:43 v #2017 > > │ Test case 1. A. Time: 0L                                                     │
00:01:43 v #2018 > > │                                                                              │
00:01:43 v #2019 > > │ Solution: 2                                                                  │
00:01:43 v #2020 > > │ Test case 1. A. Time: 0L                                                     │
00:01:43 v #2021 > > │                                                                              │
00:01:43 v #2022 > > │ Solution: 3                                                                  │
00:01:43 v #2023 > > │ Test case 1. A. Time: 0L                                                     │
00:01:43 v #2024 > > │                                                                              │
00:01:43 v #2025 > > │ Solution: 9                                                                  │
00:01:43 v #2026 > > │ Test case 1. A. Time: 0L                                                     │
00:01:43 v #2027 > > │                                                                              │
00:01:43 v #2028 > > │ Solution: 10                                                                 │
00:01:43 v #2029 > > │ Test case 1. A. Time: 2L                                                     │
00:01:43 v #2030 > > │                                                                              │
00:01:43 v #2031 > > │ Input	| Expected  	| Result    	| Best                                             │
00:01:43 v #2032 > > │ ---  	| ---       	| ---       	| ---                                              │
00:01:43 v #2033 > > │ 1    	| a         	| a         	| (1, 0)                                           │
00:01:43 v #2034 > > │ 2    	| ba        	| ba        	| (1, 0)                                           │
00:01:43 v #2035 > > │ 3    	| aaa       	| aaa       	| (1, 0)                                           │
00:01:43 v #2036 > > │ 9    	| aaaaaaaaa 	| aaaaaaaaa 	| (1, 0)                                           │
00:01:43 v #2037 > > │ 10   	| baaaaaaaaa	| baaaaaaaaa	| (1, 2)                                           │
00:01:43 v #2038 > > │                                                                              │
00:01:43 v #2039 > > │ Average Ranking                                                              │
00:01:43 v #2040 > > │ Test case 1. Average Time: 0L                                                │
00:01:43 v #2041 > > │                                                                              │
00:01:43 v #2042 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:43 v #2043 > >
00:01:43 v #2044 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:43 v #2045 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:43 v #2046 > > │ ## hasAnyPairCloseToEachotherTests                                           │
00:01:43 v #2047 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:43 v #2048 > >
00:01:43 v #2049 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:43 v #2050 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:43 v #2051 > > │ Test: HasAnyPairCloseToEachother                                             │
00:01:43 v #2052 > > │                                                                              │
00:01:43 v #2053 > > │ Solution: 0                                                                  │
00:01:43 v #2054 > > │ Test case 1. A. Time: 137L                                                   │
00:01:43 v #2055 > > │                                                                              │
00:01:43 v #2056 > > │ Solution: 1,2                                                                │
00:01:43 v #2057 > > │ Test case 1. A. Time: 186L                                                   │
00:01:43 v #2058 > > │                                                                              │
00:01:43 v #2059 > > │ Solution: 3,5                                                                │
00:01:43 v #2060 > > │ Test case 1. A. Time: 206L                                                   │
00:01:43 v #2061 > > │                                                                              │
00:01:43 v #2062 > > │ Solution: 3,4,6                                                              │
00:01:43 v #2063 > > │ Test case 1. A. Time: 149L                                                   │
00:01:43 v #2064 > > │                                                                              │
00:01:43 v #2065 > > │ Solution: 2,4,6                                                              │
00:01:43 v #2066 > > │ Test case 1. A. Time: 150L                                                   │
00:01:43 v #2067 > > │                                                                              │
00:01:43 v #2068 > > │ Input   | Expected        | Result  | Best                                   │
00:01:43 v #2069 > > │ ---     | ---             | ---     | ---                                    │
00:01:43 v #2070 > > │ 0       | False           | False   | (1, 137)                               │
00:01:43 v #2071 > > │ 1,2     | True            | True    | (1, 186)                               │
00:01:43 v #2072 > > │ 3,5     | False           | False   | (1, 206)                               │
00:01:43 v #2073 > > │ 3,4,6   | True            | True    | (1, 149)                               │
00:01:43 v #2074 > > │ 2,4,6   | False           | False   | (1, 150)                               │
00:01:43 v #2075 > > │                                                                              │
00:01:43 v #2076 > > │ Averages                                                                     │
00:01:43 v #2077 > > │ Test case 1. Average Time: 165L                                              │
00:01:43 v #2078 > > │                                                                              │
00:01:43 v #2079 > > │ Ranking                                                                      │
00:01:43 v #2080 > > │ Test case 1. Average Time: 165L                                              │
00:01:43 v #2081 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:43 v #2082 > >
00:01:43 v #2083 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:01:43 v #2084 > > //// test
00:01:43 v #2085 > >
00:01:43 v #2086 > > let solutions = [[
00:01:43 v #2087 > >     "A",
00:01:43 v #2088 > >     fun (a: int[[]]) ->
00:01:43 v #2089 > >         let indices = System.Linq.Enumerable.Range(0, a.Length) |>
00:01:43 v #2090 > > System.Linq.Enumerable.ToArray
00:01:43 v #2091 > >         System.Array.Sort (a, indices)
00:01:43 v #2092 > >
00:01:43 v #2093 > >         indices
00:01:43 v #2094 > >         |> Array.take (a.Length - 1)
00:01:43 v #2095 > >         |> Array.exists (fun i -> a.[[i + 1]] - a.[[i]] = 1)
00:01:43 v #2096 > > ]]
00:01:43 v #2097 > > let testCases = seq {
00:01:43 v #2098 > >     [[| 0 |]], false
00:01:43 v #2099 > >     [[| 1; 2 |]], true
00:01:43 v #2100 > >     [[| 3; 5 |]], false
00:01:43 v #2101 > >     [[| 3; 4; 6 |]], true
00:01:43 v #2102 > >     [[| 2; 4; 6 |]], false
00:01:43 v #2103 > > }
00:01:43 v #2104 > > let rec hasAnyPairCloseToEachotherTests =
00:01:43 v #2105 > >     runAll (nameof hasAnyPairCloseToEachotherTests) _count solutions testCases
00:01:43 v #2106 > > hasAnyPairCloseToEachotherTests
00:01:43 v #2107 > > |> sortResultList
00:01:44 v #2108 > >
00:01:44 v #2109 > > ╭─[ 1.20s - stdout ]───────────────────────────────────────────────────────────╮
00:01:44 v #2110 > > │                                                                              │
00:01:44 v #2111 > > │                                                                              │
00:01:44 v #2112 > > │ Test: hasAnyPairCloseToEachotherTests                                        │
00:01:44 v #2113 > > │                                                                              │
00:01:44 v #2114 > > │ Solution: 0                                                                  │
00:01:44 v #2115 > > │ Test case 1. A. Time: 2L                                                     │
00:01:44 v #2116 > > │                                                                              │
00:01:44 v #2117 > > │ Solution: 1,2                                                                │
00:01:44 v #2118 > > │ Test case 1. A. Time: 0L                                                     │
00:01:44 v #2119 > > │                                                                              │
00:01:44 v #2120 > > │ Solution: 3,5                                                                │
00:01:44 v #2121 > > │ Test case 1. A. Time: 0L                                                     │
00:01:44 v #2122 > > │                                                                              │
00:01:44 v #2123 > > │ Solution: 3,4,6                                                              │
00:01:44 v #2124 > > │ Test case 1. A. Time: 0L                                                     │
00:01:44 v #2125 > > │                                                                              │
00:01:44 v #2126 > > │ Solution: 2,4,6                                                              │
00:01:44 v #2127 > > │ Test case 1. A. Time: 0L                                                     │
00:01:44 v #2128 > > │                                                                              │
00:01:44 v #2129 > > │ Input	| Expected	| Result	| Best                                                   │
00:01:44 v #2130 > > │ ---  	| ---     	| ---   	| ---                                                    │
00:01:44 v #2131 > > │ 0    	| False   	| False 	| (1, 2)                                                 │
00:01:44 v #2132 > > │ 1,2  	| True    	| True  	| (1, 0)                                                 │
00:01:44 v #2133 > > │ 3,5  	| False   	| False 	| (1, 0)                                                 │
00:01:44 v #2134 > > │ 3,4,6	| True    	| True  	| (1, 0)                                                 │
00:01:44 v #2135 > > │ 2,4,6	| False   	| False 	| (1, 0)                                                 │
00:01:44 v #2136 > > │                                                                              │
00:01:44 v #2137 > > │ Average Ranking                                                              │
00:01:44 v #2138 > > │ Test case 1. Average Time: 0L                                                │
00:01:44 v #2139 > > │                                                                              │
00:01:44 v #2140 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:44 v #2141 > 00:01:42 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 125147 }
00:01:44 v #2142 > 00:01:42 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/polyglot/apps/perf/Perf.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/polyglot/apps/perf/Perf.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:01:46 v #2143 > 00:01:44 v #5 ! [NbConvertApp] Converting notebook c:/home/git/polyglot/apps/perf/Perf.dib.ipynb to html
00:01:46 v #2144 > 00:01:44 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:01:46 v #2145 > 00:01:44 v #7 !   validate(nb)
00:01:47 v #2146 > 00:01:45 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:01:47 v #2147 > 00:01:45 v #9 !   return _pygments_highlight(
00:01:48 v #2148 > 00:01:46 v #10 ! [NbConvertApp] Writing 458080 bytes to c:\home\git\polyglot\apps\perf\Perf.dib.html
00:01:48 v #2149 > 00:01:46 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 848 }
00:01:48 v #2150 > 00:01:46 d #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 848 }
00:01:48 v #2151 > 00:01:46 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/polyglot/apps/perf/Perf.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/polyglot/apps/perf/Perf.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:01:48 v #2152 > 00:01:46 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:01:48 v #2153 > 00:01:46 d #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:01:48 v #2154 > 00:01:46 d #16 spiral_builder.run / dib / { exit_code = 0; result_length = 126054 }
00:01:48 d #2155 runtime.execute_with_options_async / { exit_code = 0; output_length = 132859 }
00:01:48 d #3 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder.exe dib --path Perf.dib --retries 3
00:01:48 v #5 async.run_with_timeout_async / { timeout = 100 }
00:00:00 d #1 writeDibCode / output: Fs / path: Perf.dib
00:00:00 d #2 parseDibCode / output: Fs / file: Perf.dib
In [ ]:
{ pwsh ../apps/dir-tree-html/build.ps1 } | Invoke-Block
00:00:00 v #1 async.run_with_timeout_async / { timeout = 180 }
00:00:00 d #1 runtime.execute_with_options_async / { file_name = dotnet; arguments = US5_0
  ""C:\home\git\polyglot\deps\The-Spiral-Language\The Spiral Language 2\artifacts\bin\The Spiral Language 2\release\Spiral.dll" --port 13805 --default-int i32 --default-float f64"; options = { command = dotnet "C:\home\git\polyglot\deps\The-Spiral-Language\The Spiral Language 2\artifacts\bin\The Spiral Language 2\release\Spiral.dll" --port 13805 --default-int i32 --default-float f64; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = Some <fun:main@595-7>; stdin = None; trace = true; working_directory = Some "C:\home\git\polyglot" } }
00:00:01 v #2 > 00:00:00 d #1 pwd: C:\home\git\polyglot
00:00:01 v #3 > 00:00:00 d #2 dllPath: C:\home\git\polyglot\deps\The-Spiral-Language\The Spiral Language 2\artifacts\bin\The Spiral Language 2\release
00:00:01 v #4 > 00:00:00 d #3 targetDir: C:\home\git\polyglot\target/spiral_Eval
00:00:01 v #2 async.run_with_timeout_async / { timeout = 100 }
00:00:01 v #3 async.run_with_timeout_async / { timeout = 100 }
00:00:01 v #5 > Starting the Spiral Server. It is bound to: http://localhost:13805
00:00:01 v #4 async.run_with_timeout_async / { timeout = 100 }
00:00:01 v #1 Supervisor.sendJson / port: 13805 / json: {"Ping":true} / result:
00:00:01 v #2 Supervisor.awaitCompiler / Ping / result: 'Some null' / port: 13805 / retry: 1
00:00:01 v #6 > Server bound to: http://localhost:13805
00:00:01 d #7 runtime.execute_with_options_async / { file_name = ../../workspace/target/release/spiral_builder.exe; arguments = US5_0 "dib --path DirTreeHtml.dib"; options = { command = ../../workspace/target/release/spiral_builder.exe dib --path DirTreeHtml.dib; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:00:01 v #8 > 00:00:00 d #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "DirTreeHtml.dib"])) }
00:00:01 v #9 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/polyglot/apps/dir-tree-html/DirTreeHtml.dib", "--output-path", "c:/home/git/polyglot/apps/dir-tree-html/DirTreeHtml.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/polyglot/apps/dir-tree-html/DirTreeHtml.dib" --output-path "c:/home/git/polyglot/apps/dir-tree-html/DirTreeHtml.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:00:03 v #10 > >
00:00:03 v #11 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:03 v #12 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:03 v #13 > > │ # DirTreeHtml (Polyglot)                                                     │
00:00:03 v #14 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 v #15 > >
00:00:08 v #16 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:08 v #17 > > #r
00:00:08 v #18 > > @"../../../../../../../.nuget/packages/fsharp.control.asyncseq/3.2.1/lib/netstan
00:00:08 v #19 > > dard2.1/FSharp.Control.AsyncSeq.dll"
00:00:08 v #20 > > #r
00:00:08 v #21 > > @"../../../../../../../.nuget/packages/system.reactive/6.0.1-preview.1/lib/net6.
00:00:08 v #22 > > 0/System.Reactive.dll"
00:00:08 v #23 > > #r
00:00:08 v #24 > > @"../../../../../../../.nuget/packages/system.reactive.linq/6.0.1-preview.1/lib
00:00:08 v #25 > > netstandard2.0/System.Reactive.Linq.dll"
00:00:08 v #26 > > #r
00:00:08 v #27 > > @"../../../../../../../.nuget/packages/argu/6.2.4/lib/netstandard2.0/Argu.dll"
00:00:08 v #28 > > #r
00:00:08 v #29 > > @"../../../../../../../.nuget/packages/falco.markup/1.1.1/lib/netstandard2.0/Fal
00:00:08 v #30 > > co.Markup.dll"
00:00:22 v #31 > >
00:00:22 v #32 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:22 v #33 > > #if !INTERACTIVE
00:00:22 v #34 > > open Lib
00:00:22 v #35 > > #endif
00:00:22 v #36 > >
00:00:22 v #37 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:22 v #38 > > open SpiralFileSystem.Operators
00:00:22 v #39 > > open Falco.Markup
00:00:22 v #40 > >
00:00:22 v #41 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:22 v #42 > > type FileSystemNode =
00:00:22 v #43 > >     | File of string * string * int64
00:00:22 v #44 > >     | Folder of string * string * FileSystemNode list
00:00:22 v #45 > >     | Root of FileSystemNode list
00:00:22 v #46 > >
00:00:22 v #47 > > let rec scanDirectory isRoot (basePath : string) (path : string) =
00:00:22 v #48 > >     let relativePath =
00:00:22 v #49 > >         path
00:00:22 v #50 > >         |> SpiralSm.replace basePath ""
00:00:22 v #51 > >         |> SpiralSm.replace "\\" "/"
00:00:22 v #52 > >         |> SpiralSm.replace "//" "/"
00:00:22 v #53 > >         |> SpiralSm.trim_start [[| '/' |]]
00:00:22 v #54 > >
00:00:22 v #55 > >     let directories =
00:00:22 v #56 > >         path
00:00:22 v #57 > >         |> System.IO.Directory.GetDirectories
00:00:22 v #58 > >         |> Array.toList
00:00:22 v #59 > >         |> List.sort
00:00:22 v #60 > >         |> List.map (scanDirectory false basePath)
00:00:22 v #61 > >     let files =
00:00:22 v #62 > >         path
00:00:22 v #63 > >         |> System.IO.Directory.GetFiles
00:00:22 v #64 > >         |> Array.toList
00:00:22 v #65 > >         |> List.sort
00:00:22 v #66 > >         |> List.map (fun f -> File (System.IO.Path.GetFileName f, relativePath,
00:00:22 v #67 > > System.IO.FileInfo(f).Length))
00:00:22 v #68 > >
00:00:22 v #69 > >     let children = directories @ files
00:00:22 v #70 > >     if isRoot
00:00:22 v #71 > >     then Root children
00:00:22 v #72 > >     else Folder (path |> System.IO.Path.GetFileName, relativePath, children)
00:00:22 v #73 > >
00:00:22 v #74 > > let rec generateHtml fsNode =
00:00:22 v #75 > >     let sizeLabel size =
00:00:22 v #76 > >         match float size with
00:00:22 v #77 > >         | size when size > 1024.0 * 1024.0 -> $"%.2f{size / 1024.0 / 1024.0} MB"
00:00:22 v #78 > >         | size when size > 1024.0 -> $"%.2f{size / 1024.0} KB"
00:00:22 v #79 > >         | size -> $"%.2f{size} B"
00:00:22 v #80 > >     match fsNode with
00:00:22 v #81 > >     | File (fileName, relativePath, size) ->
00:00:22 v #82 > >         Elem.div [[]] [[
00:00:22 v #83 > >             Text.raw "&#128196; "
00:00:22 v #84 > >             Elem.a [[
00:00:22 v #85 > >                 Attr.href $"""{relativePath}{if relativePath = "" then "" else
00:00:22 v #86 > > "/"}{fileName}"""
00:00:22 v #87 > >             ]] [[
00:00:22 v #88 > >                 Text.raw fileName
00:00:22 v #89 > >             ]]
00:00:22 v #90 > >             Elem.span [[]] [[
00:00:22 v #91 > >                 Text.raw $" ({size |> sizeLabel})"
00:00:22 v #92 > >             ]]
00:00:22 v #93 > >         ]]
00:00:22 v #94 > >     | Folder (folderName, relativePath, children) ->
00:00:22 v #95 > >         let size =
00:00:22 v #96 > >             let rec loop children =
00:00:22 v #97 > >                 children
00:00:22 v #98 > >                 |> List.sumBy (function
00:00:22 v #99 > >                     | File (_, _, size) -> size
00:00:22 v #100 > >                     | Folder (_, _, children)
00:00:22 v #101 > >                     | Root children -> loop children
00:00:22 v #102 > >                 )
00:00:22 v #103 > >             loop children
00:00:22 v #104 > >         Elem.details [[
00:00:22 v #105 > >             Attr.open' "true"
00:00:22 v #106 > >         ]] [[
00:00:22 v #107 > >             Elem.summary [[]] [[
00:00:22 v #108 > >                 Text.raw "&#128194; "
00:00:22 v #109 > >                 Elem.a [[
00:00:22 v #110 > >                     Attr.href relativePath
00:00:22 v #111 > >                 ]] [[
00:00:22 v #112 > >                     Text.raw folderName
00:00:22 v #113 > >                 ]]
00:00:22 v #114 > >                 Elem.span [[]] [[
00:00:22 v #115 > >                     Text.raw $" ({size |> sizeLabel})"
00:00:22 v #116 > >                 ]]
00:00:22 v #117 > >             ]]
00:00:22 v #118 > >             Elem.div [[]] [[
00:00:22 v #119 > >                 yield! children |> List.map generateHtml
00:00:22 v #120 > >             ]]
00:00:22 v #121 > >         ]]
00:00:22 v #122 > >     | Root children ->
00:00:22 v #123 > >         Elem.div [[]] [[
00:00:22 v #124 > >             yield! children |> List.map generateHtml
00:00:22 v #125 > >         ]]
00:00:22 v #126 > >
00:00:22 v #127 > > let generateHtmlForFileSystem root =
00:00:22 v #128 > >     $"""<!DOCTYPE html>
00:00:22 v #129 > > <html lang="en">
00:00:22 v #130 > > <head>
00:00:22 v #131 > >   <meta charset="UTF-8">
00:00:22 v #132 > >   <style>
00:00:22 v #133 > > body {{
00:00:22 v #134 > >     background-color: #222;
00:00:22 v #135 > >     color: #ccc;
00:00:22 v #136 > > }}
00:00:22 v #137 > > a {{
00:00:22 v #138 > >   color: #777;
00:00:22 v #139 > >   font-size: 15px;
00:00:22 v #140 > > }}
00:00:22 v #141 > > span {{
00:00:22 v #142 > >   font-size: 11px;
00:00:22 v #143 > > }}
00:00:22 v #144 > > div > div {{
00:00:22 v #145 > >   padding-left: 10px;
00:00:22 v #146 > > }}
00:00:22 v #147 > > details > div {{
00:00:22 v #148 > >   padding-left: 19px;
00:00:22 v #149 > > }}
00:00:22 v #150 > >   </style>
00:00:22 v #151 > > </head>
00:00:22 v #152 > > <body>
00:00:22 v #153 > >   {root |> generateHtml |> renderNode}
00:00:22 v #154 > > </body>
00:00:22 v #155 > > </html>
00:00:22 v #156 > > """
00:00:22 v #157 > >
00:00:22 v #158 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:22 v #159 > > //// test
00:00:22 v #160 > >
00:00:22 v #161 > > let expected = """<!DOCTYPE html>
00:00:22 v #162 > > <html lang="en">
00:00:22 v #163 > > <head>
00:00:22 v #164 > >   <meta charset="UTF-8">
00:00:22 v #165 > >   <style>
00:00:22 v #166 > > body {
00:00:22 v #167 > >     background-color: #222;
00:00:22 v #168 > >     color: #ccc;
00:00:22 v #169 > > }
00:00:22 v #170 > > a {
00:00:22 v #171 > >   color: #777;
00:00:22 v #172 > >   font-size: 15px;
00:00:22 v #173 > > }
00:00:22 v #174 > > span {
00:00:22 v #175 > >   font-size: 11px;
00:00:22 v #176 > > }
00:00:22 v #177 > > div > div {
00:00:22 v #178 > >   padding-left: 10px;
00:00:22 v #179 > > }
00:00:22 v #180 > > details > div {
00:00:22 v #181 > >   padding-left: 19px;
00:00:22 v #182 > > }
00:00:22 v #183 > >   </style>
00:00:22 v #184 > > </head>
00:00:22 v #185 > > <body>
00:00:22 v #186 > >   <div><details open="true"><summary>&#128194; <a href="_.root">_.root</a><span>
00:00:22 v #187 > > (10.00 B)</span></summary><div><details open="true"><summary>&#128194; <a
00:00:22 v #188 > > href="_.root/3">3</a><span> (6.00 B)</span></summary><div><details
00:00:22 v #189 > > open="true"><summary>&#128194; <a href="_.root/3/2">2</a><span> (3.00
00:00:22 v #190 > > B)</span></summary><div><details open="true"><summary>&#128194; <a
00:00:22 v #191 > > href="_.root/3/2/1">1</a><span> (1.00 B)</span></summary><div><div>&#128196; <a
00:00:22 v #192 > > href="_.root/3/2/1/file.txt">file.txt</a><span> (1.00
00:00:22 v #193 > > B)</span></div></div></details><div>&#128196; <a
00:00:22 v #194 > > href="_.root/3/2/file.txt">file.txt</a><span> (2.00
00:00:22 v #195 > > B)</span></div></div></details><div>&#128196; <a
00:00:22 v #196 > > href="_.root/3/file.txt">file.txt</a><span> (3.00
00:00:22 v #197 > > B)</span></div></div></details><div>&#128196; <a
00:00:22 v #198 > > href="_.root/file.txt">file.txt</a><span> (4.00
00:00:22 v #199 > > B)</span></div></div></details></div>
00:00:22 v #200 > > </body>
00:00:22 v #201 > > </html>
00:00:22 v #202 > > """
00:00:22 v #203 > >
00:00:22 v #204 > > let struct (tempFolder, disposable) = expected |> SpiralCrypto.hash_text |>
00:00:22 v #205 > > SpiralFileSystem.create_temp_dir'
00:00:22 v #206 > > let rec loop d n = async {
00:00:22 v #207 > >     if n >= 0 then
00:00:22 v #208 > >         tempFolder </> d |> System.IO.Directory.CreateDirectory |> ignore
00:00:22 v #209 > >         do!
00:00:22 v #210 > >             n
00:00:22 v #211 > >             |> string
00:00:22 v #212 > >             |> String.replicate (n + 1)
00:00:22 v #213 > >             |> SpiralFileSystem.write_all_text_async (tempFolder </> d </>
00:00:22 v #214 > > $"file.txt")
00:00:22 v #215 > >         do! loop $"{d}/{n}" (n - 1)
00:00:22 v #216 > > }
00:00:22 v #217 > > loop "_.root" 3
00:00:22 v #218 > > |> Async.RunSynchronously
00:00:22 v #219 > >
00:00:22 v #220 > > let html =
00:00:22 v #221 > >     scanDirectory true tempFolder tempFolder
00:00:22 v #222 > >     |> generateHtmlForFileSystem
00:00:22 v #223 > >
00:00:22 v #224 > > html
00:00:22 v #225 > > |> _assertEqual expected
00:00:22 v #226 > >
00:00:22 v #227 > > disposable.Dispose ()
00:00:22 v #228 > >
00:00:22 v #229 > > html |> Microsoft.DotNet.Interactive.Formatting.Html.ToHtmlContent
00:00:22 v #230 > >
00:00:22 v #231 > > ╭─[ 180.33ms - return value ]──────────────────────────────────────────────────╮
00:00:22 v #232 > > │ <!DOCTYPE html>                                                              │
00:00:22 v #233 > > │ <html lang="en">                                                             │
00:00:22 v #234 > > │ <head>                                                                       │
00:00:22 v #235 > > │   <meta charset="UTF-8">                                                     │
00:00:22 v #236 > > │   <style>                                                                    │
00:00:22 v #237 > > │ body {                                                                       │
00:00:22 v #238 > > │     background-color: #222;                                                  │
00:00:22 v #239 > > │     color: #ccc;                                                             │
00:00:22 v #240 > > │ }                                                                            │
00:00:22 v #241 > > │ a {                                                                          │
00:00:22 v #242 > > │   color: #777;                                                               │
00:00:22 v #243 > > │   font-size: 15px;                                                           │
00:00:22 v #244 > > │ }                                                                            │
00:00:22 v #245 > > │ span {                                                                       │
00:00:22 v #246 > > │   font-size: 11px;                                                           │
00:00:22 v #247 > > │ }                                                                            │
00:00:22 v #248 > > │ div > div {                                                                  │
00:00:22 v #249 > > │   padding-left: 10px;                                                        │
00:00:22 v #250 > > │ }                                                                            │
00:00:22 v #251 > > │ details > div {                                                              │
00:00:22 v #252 > > │   padding-left: 19px;                                                        │
00:00:22 v #253 > > │ }                                                                            │
00:00:22 v #254 > > │   </style>                                                                   │
00:00:22 v #255 > > │ </head>                                                                      │
00:00:22 v #256 > > │ <body>                                                                       │
00:00:22 v #257 > > │   <div><details open="true"><summary>&#128194; <a                            │
00:00:22 v #258 > > │ href="_.root">_.root</a><span> (10.00 B)</span></summary><div><details       │
00:00:22 v #259 > > │ open="true"><summary>&#128194; <a href="_.root/3">3</a><span> (6.00          │
00:00:22 v #260 > > │ B)</span></summary><div><details open="true"><summary>&#128194; <a           │
00:00:22 v #261 > > │ href="_.root/3/2">2</a><span> (3.00 B)</span></summary><div><details         │
00:00:22 v #262 > > │ open="true"><summary>&#128194; <a href="_.root/3/2/1">1</a><span> (1.00      │
00:00:22 v #263 > > │ B)</span></summary><div><div>&#128196; <a                                    │
00:00:22 v #264 > > │ href="_.root/3/2/1/file.txt">file.txt</a><span> (1.00                        │
00:00:22 v #265 > > │ B)</span></div></div></details><div>&#128196; <a                             │
00:00:22 v #266 > > │ href="_.root/3/2/file.txt">file.txt</a><span> (2.00                          │
00:00:22 v #267 > > │ B)</span></div></div></details><div>&#128196; <a                             │
00:00:22 v #268 > > │ href="_.root/3/file.txt">file.txt</a><span> (3.00                            │
00:00:22 v #269 > > │ B)</span></div></div></details><div>&#128196; <a                             │
00:00:22 v #270 > > │ href="_.root/file.txt">file.txt</a><span> (4.00                              │
00:00:22 v #271 > > │ B)</span></div></div></details></div>                                        │
00:00:22 v #272 > > │ </body>                                                                      │
00:00:22 v #273 > > │ </html>                                                                      │
00:00:22 v #274 > > │                                                                              │
00:00:22 v #275 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:22 v #276 > >
00:00:22 v #277 > > ╭─[ 186.63ms - stdout ]────────────────────────────────────────────────────────╮
00:00:22 v #278 > > │ "<!DOCTYPE html>                                                             │
00:00:22 v #279 > > │ <html lang="en">                                                             │
00:00:22 v #280 > > │ <head>                                                                       │
00:00:22 v #281 > > │   <meta charset="UTF-8">                                                     │
00:00:22 v #282 > > │   <style>                                                                    │
00:00:22 v #283 > > │ body {                                                                       │
00:00:22 v #284 > > │     background-color: #222;                                                  │
00:00:22 v #285 > > │     color: #ccc;                                                             │
00:00:22 v #286 > > │ }                                                                            │
00:00:22 v #287 > > │ a {                                                                          │
00:00:22 v #288 > > │   color: #777;                                                               │
00:00:22 v #289 > > │   font-size: 15px;                                                           │
00:00:22 v #290 > > │ }                                                                            │
00:00:22 v #291 > > │ span {                                                                       │
00:00:22 v #292 > > │   font-size: 11px;                                                           │
00:00:22 v #293 > > │ }                                                                            │
00:00:22 v #294 > > │ div > div {                                                                  │
00:00:22 v #295 > > │   padding-left: 10px;                                                        │
00:00:22 v #296 > > │ }                                                                            │
00:00:22 v #297 > > │ details > div {                                                              │
00:00:22 v #298 > > │   padding-left: 19px;                                                        │
00:00:22 v #299 > > │ }                                                                            │
00:00:22 v #300 > > │   </style>                                                                   │
00:00:22 v #301 > > │ </head>                                                                      │
00:00:22 v #302 > > │ <body>                                                                       │
00:00:22 v #303 > > │   <div><details open="true"><summary>&#128194; <a                            │
00:00:22 v #304 > > │ href="_.root">_.root</a><span> (10.00 B)</span></summary><div><details       │
00:00:22 v #305 > > │ open="true"><summary>&#128194; <a href="_.root/3">3</a><span> (6.00          │
00:00:22 v #306 > > │ B)</span></summary><div><details open="true"><summary>&#128194; <a           │
00:00:22 v #307 > > │ href="_.root/3/2">2</a><span> (3.00 B)</span></summary><div><details         │
00:00:22 v #308 > > │ open="true"><summary>&#128194; <a href="_.root/3/2/1">1</a><span> (1.00      │
00:00:22 v #309 > > │ B)</span></summary><div><div>&#128196; <a                                    │
00:00:22 v #310 > > │ href="_.root/3/2/1/file.txt">file.txt</a><span> (1.00                        │
00:00:22 v #311 > > │ B)</span></div></div></details><div>&#128196; <a                             │
00:00:22 v #312 > > │ href="_.root/3/2/file.txt">file.txt</a><span> (2.00                          │
00:00:22 v #313 > > │ B)</span></div></div></details><div>&#128196; <a                             │
00:00:22 v #314 > > │ href="_.root/3/file.txt">file.txt</a><span> (3.00                            │
00:00:22 v #315 > > │ B)</span></div></div></details><div>&#128196; <a                             │
00:00:22 v #316 > > │ href="_.root/file.txt">file.txt</a><span> (4.00                              │
00:00:22 v #317 > > │ B)</span></div></div></details></div>                                        │
00:00:22 v #318 > > │ </body>                                                                      │
00:00:22 v #319 > > │ </html>                                                                      │
00:00:22 v #320 > > │ "                                                                            │
00:00:22 v #321 > > │                                                                              │
00:00:22 v #322 > > │                                                                              │
00:00:22 v #323 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:22 v #324 > >
00:00:22 v #325 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:22 v #326 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:22 v #327 > > │ ## Arguments                                                                 │
00:00:22 v #328 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:22 v #329 > >
00:00:22 v #330 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:22 v #331 > > [[<RequireQualifiedAccess>]]
00:00:22 v #332 > > type Arguments =
00:00:22 v #333 > >     | [[<Argu.ArguAttributes.ExactlyOnce>]] Dir of string
00:00:22 v #334 > >     | [[<Argu.ArguAttributes.ExactlyOnce>]] Html of string
00:00:22 v #335 > >
00:00:22 v #336 > >     interface Argu.IArgParserTemplate with
00:00:22 v #337 > >         member s.Usage =
00:00:22 v #338 > >             match s with
00:00:22 v #339 > >             | Dir _ -> nameof Dir
00:00:22 v #340 > >             | Html _ -> nameof Html
00:00:22 v #341 > >
00:00:22 v #342 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:22 v #343 > > //// test
00:00:22 v #344 > >
00:00:22 v #345 > > Argu.ArgumentParser.Create<Arguments>().PrintUsage ()
00:00:22 v #346 > >
00:00:22 v #347 > > ╭─[ 92.23ms - return value ]───────────────────────────────────────────────────╮
00:00:22 v #348 > > │ "USAGE: dotnet-repl [--help] --dir <string> --html <string>                  │
00:00:22 v #349 > > │                                                                              │
00:00:22 v #350 > > │ OPTIONS:                                                                     │
00:00:22 v #351 > > │                                                                              │
00:00:22 v #352 > > │     --dir <string>        Dir                                                │
00:00:22 v #353 > > │     --html <string>       Html                                               │
00:00:22 v #354 > > │     --help                display this list of options.                      │
00:00:22 v #355 > > │ "                                                                            │
00:00:22 v #356 > > │                                                                              │
00:00:22 v #357 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:22 v #358 > >
00:00:22 v #359 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:22 v #360 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:22 v #361 > > │ ## main                                                                      │
00:00:22 v #362 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:22 v #363 > >
00:00:22 v #364 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:22 v #365 > > let main args =
00:00:22 v #366 > >     let argsMap = args |> Runtime.parseArgsMap<Arguments>
00:00:22 v #367 > >
00:00:22 v #368 > >     let dir =
00:00:22 v #369 > >         match argsMap.[[nameof Arguments.Dir]] with
00:00:22 v #370 > >         | [[ Arguments.Dir dir ]] -> Some dir
00:00:22 v #371 > >         | _ -> None
00:00:22 v #372 > >         |> Option.get
00:00:22 v #373 > >
00:00:22 v #374 > >     let htmlPath =
00:00:22 v #375 > >         match argsMap.[[nameof Arguments.Html]] with
00:00:22 v #376 > >         | [[ Arguments.Html html ]] -> Some html
00:00:22 v #377 > >         | _ -> None
00:00:22 v #378 > >         |> Option.get
00:00:22 v #379 > >
00:00:22 v #380 > >     let fileSystem = scanDirectory true dir dir
00:00:22 v #381 > >     let html = generateHtmlForFileSystem fileSystem
00:00:22 v #382 > >
00:00:22 v #383 > >     html |> SpiralFileSystem.write_all_text_async htmlPath
00:00:22 v #384 > >     |> Async.runWithTimeout 30000
00:00:22 v #385 > >     |> function
00:00:22 v #386 > >         | Some () -> 0
00:00:22 v #387 > >         | None -> 1
00:00:23 v #388 > >
00:00:23 v #389 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:23 v #390 > > //// test
00:00:23 v #391 > >
00:00:23 v #392 > > let args =
00:00:23 v #393 > >     System.Environment.GetEnvironmentVariable "ARGS"
00:00:23 v #394 > >     |> SpiralRuntime.split_args
00:00:23 v #395 > >     |> Result.toArray
00:00:23 v #396 > >     |> Array.collect id
00:00:23 v #397 > >
00:00:23 v #398 > > match args with
00:00:23 v #399 > > | [[||]] -> 0
00:00:23 v #400 > > | args -> if main args = 0 then 0 else failwith "main failed"
00:00:23 v #401 > >
00:00:23 v #402 > > ╭─[ 85.12ms - return value ]───────────────────────────────────────────────────╮
00:00:23 v #403 > > │ <div class="dni-plaintext"><pre>0                                            │
00:00:23 v #404 > > │ </pre></div><style>                                                          │
00:00:23 v #405 > > │ .dni-code-hint {                                                             │
00:00:23 v #406 > > │     font-style: italic;                                                      │
00:00:23 v #407 > > │     overflow: hidden;                                                        │
00:00:23 v #408 > > │     white-space: nowrap;                                                     │
00:00:23 v #409 > > │ }                                                                            │
00:00:23 v #410 > > │ .dni-treeview {                                                              │
00:00:23 v #411 > > │     white-space: nowrap;                                                     │
00:00:23 v #412 > > │ }                                                                            │
00:00:23 v #413 > > │ .dni-treeview td {                                                           │
00:00:23 v #414 > > │     vertical-align: top;                                                     │
00:00:23 v #415 > > │     text-align: start;                                                       │
00:00:23 v #416 > > │ }                                                                            │
00:00:23 v #417 > > │ details.dni-treeview {                                                       │
00:00:23 v #418 > > │     padding-left: 1em;                                                       │
00:00:23 v #419 > > │ }                                                                            │
00:00:23 v #420 > > │ table td {                                                                   │
00:00:23 v #421 > > │     text-align: start;                                                       │
00:00:23 v #422 > > │ }                                                                            │
00:00:23 v #423 > > │ table tr {                                                                   │
00:00:23 v #424 > > │     vertical-align: top;                                                     │
00:00:23 v #425 > > │     margin: 0em 0px;                                                         │
00:00:23 v #426 > > │ }                                                                            │
00:00:23 v #427 > > │ table tr td pre                                                              │
00:00:23 v #428 > > │ {                                                                            │
00:00:23 v #429 > > │     vertical-align: top !important;                                          │
00:00:23 v #430 > > │     margin: 0em 0px !important;                                              │
00:00:23 v #431 > > │ }                                                                            │
00:00:23 v #432 > > │ table th {                                                                   │
00:00:23 v #433 > > │     text-align: start;                                                       │
00:00:23 v #434 > > │ }                                                                            │
00:00:23 v #435 > > │ </style>                                                                     │
00:00:23 v #436 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:23 v #437 > 00:00:21 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 19755 }
00:00:23 v #438 > 00:00:21 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/polyglot/apps/dir-tree-html/DirTreeHtml.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/polyglot/apps/dir-tree-html/DirTreeHtml.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:00:24 v #439 > 00:00:22 v #5 ! [NbConvertApp] Converting notebook c:/home/git/polyglot/apps/dir-tree-html/DirTreeHtml.dib.ipynb to html
00:00:24 v #440 > 00:00:22 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:00:24 v #441 > 00:00:22 v #7 !   validate(nb)
00:00:25 v #442 > 00:00:23 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:00:25 v #443 > 00:00:23 v #9 !   return _pygments_highlight(
00:00:25 v #444 > 00:00:23 v #10 ! [NbConvertApp] Writing 310059 bytes to c:\home\git\polyglot\apps\dir-tree-html\DirTreeHtml.dib.html
00:00:25 v #445 > 00:00:23 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 880 }
00:00:25 v #446 > 00:00:23 d #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 880 }
00:00:25 v #447 > 00:00:23 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/polyglot/apps/dir-tree-html/DirTreeHtml.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/polyglot/apps/dir-tree-html/DirTreeHtml.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:00:26 v #448 > 00:00:24 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:00:26 v #449 > 00:00:24 d #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:00:26 v #450 > 00:00:24 d #16 spiral_builder.run / dib / { exit_code = 0; result_length = 20694 }
00:00:26 d #451 runtime.execute_with_options_async / { exit_code = 0; output_length = 24206 }
00:00:26 d #3 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder.exe dib --path DirTreeHtml.dib
00:00:26 v #5 async.run_with_timeout_async / { timeout = 100 }
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("std::string::String")>]
type std_string_String = class end
#else
type std_string_String = string
#endif

#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("&$0")>]
type Ref<'T> = class end
#else
type Ref<'T> = 'T
#endif

#if FABLE_COMPILER

type System_Net_Sockets_TcpClient = System.IDisposable
#else
type System_Net_Sockets_TcpClient = System.Net.Sockets.TcpClient
#endif

#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("mut $0")>]
#endif
type Mut<'T> = class end
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("Vec<$0>")>]
#endif
type Vec<'T> = class end
module TraceState = let mutable trace_state = None
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("std::env::VarError")>]
#endif
type std_env_VarError = class end
type IOsEnviron = abstract environ: x: unit -> obj
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("str")>]
type Str = class end
#else
type Str = string
#endif

type [<Struct>] US0 =
    | US0_0
    | US0_1
    | US0_2
    | US0_3
    | US0_4
and Mut0 = {mutable l0 : int64}
and Mut1 = {mutable l0 : (string -> unit)}
and Mut2 = {mutable l0 : bool}
and Mut3 = {mutable l0 : string}
and Mut4 = {mutable l0 : US0}
and [<Struct>] US1 =
    | US1_0 of f0_0 : US0
    | US1_1
and [<Struct>] US2 =
    | US2_0 of f0_0 : int64
    | US2_1
and [<Struct>] US3 =
    | US3_0
    | US3_1
    | US3_2
and [<Struct>] US4 =
    | US4_0 of f0_0 : US3
    | US4_1 of f1_0 : US3
    | US4_2 of f2_0 : US3
    | US4_3 of f3_0 : US3
    | US4_4 of f4_0 : US3
and [<Struct>] US5 =
    | US5_0 of f0_0 : string
    | US5_1
and [<Struct>] US6 =
    | US6_0 of f0_0 : bool
    | US6_1
and [<Struct>] US7 =
    | US7_0 of f0_0 : bool
    | US7_1 of f1_0 : exn
and [<Struct>] US8 =
    | US8_0 of f0_0 : bool
    | US8_1 of f1_0 : exn
and [<Struct>] US9 =
    | US9_0 of f0_0 : int32
    | US9_1
let rec method3 () : string =
    let v0 : string = ""
    v0
and closure1 () (v0 : string) : US5 =
    US5_0(v0)
and method4 () : (string -> US5) =
    closure1()
and method2 (v0 : string) : string =
    let v1 : unit = ()
    
#if FABLE_COMPILER || WASM || CONTRACT
    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
    let v2 : string = "std::env::var(&*$0)"
    let v3 : Result<std_string_String, std_env_VarError> = Fable.Core.RustInterop.emitRustExpr v0 v2 
    let v4 : string = "true; let _result_map_ = $0.map(|x| { //"
    let v5 : bool = Fable.Core.RustInterop.emitRustExpr v3 v4 
    let v6 : string = "x"
    let v7 : std_string_String = Fable.Core.RustInterop.emitRustExpr () v6 
    let v8 : string = "fable_library_rust::String_::fromString($0)"
    let v9 : string = Fable.Core.RustInterop.emitRustExpr v7 v8 
    let v10 : string = "true; $0 })"
    let v11 : bool = Fable.Core.RustInterop.emitRustExpr v9 v10 
    let v12 : string = "_result_map_"
    let v13 : Result<string, std_env_VarError> = Fable.Core.RustInterop.emitRustExpr () v12 
    let v14 : string = method3()
    let v15 : string = "$0.unwrap_or($1)"
    let v16 : string = Fable.Core.RustInterop.emitRustExpr struct (v13, v14) v15 
    let _v1 = v16 
    #endif
#if FABLE_COMPILER_RUST && WASM
    let v17 : US3 = US3_1
    let v18 : US4 = US4_2(v17)
    let v19 : string = $"env.get_environment_variable / target: {v18} / var: {v0}"
    let v20 : string = failwith<string> v19
    let _v1 = v20 
    #endif
#if FABLE_COMPILER_RUST && CONTRACT
    let v21 : US3 = US3_2
    let v22 : US4 = US4_2(v21)
    let v23 : string = $"env.get_environment_variable / target: {v22} / var: {v0}"
    let v24 : string = failwith<string> v23
    let _v1 = v24 
    #endif
#if FABLE_COMPILER_TYPESCRIPT
    let v25 : string = "process.env[$0] ?? \"\""
    let v26 : string = Fable.Core.JsInterop.emitJsExpr v0 v25 
    let _v1 = v26 
    #endif
#if FABLE_COMPILER_PYTHON
    let v27 : string = "os"
    let v28 : IOsEnviron = Fable.Core.PyInterop.importAll v27 
    let v29 : string = "v28.environ"
    let v30 : obj = Fable.Core.PyInterop.emitPyExpr () v29 
    let v33 : string = "v30.get($0)"
    let v34 : string = Fable.Core.PyInterop.emitPyExpr v0 v33 
    let mutable _v34 = None
    #if !FABLE_COMPILER && !WASM && !CONTRACT
    let v37 : (string -> string option) = Option.ofObj
    let v38 : string option = v37 v34
    v38 
    #else
    Some v34 
    #endif
    |> fun x -> _v34 <- Some x
    let v39 : string option = match _v34 with Some x -> x | None -> failwith "optionm'.of_obj / _v34=None"
    let v42 : (string -> US5) = method4()
    let v43 : US5 option = v39 |> Option.map v42 
    let v54 : US5 = US5_1
    let v55 : US5 = v43 |> Option.defaultValue v54 
    let v62 : string =
        match v55 with
        | US5_1 -> (* None *)
            let v60 : string = ""
            v60
        | US5_0(v59) -> (* Some *)
            v59
    let _v1 = v62 
    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
    let v63 : US3 = US3_1
    let v64 : US4 = US4_0(v63)
    let v65 : string = $"env.get_environment_variable / target: {v64} / var: {v0}"
    let v66 : string = failwith<string> v65
    let _v1 = v66 
    #endif
#else
    let v67 : (string -> string) = System.Environment.GetEnvironmentVariable
    let v68 : string = v67 v0
    let mutable _v68 = None
    #if !FABLE_COMPILER && !WASM && !CONTRACT
    let v69 : (string -> string option) = Option.ofObj
    let v70 : string option = v69 v68
    v70 
    #else
    Some v68 
    #endif
    |> fun x -> _v68 <- Some x
    let v71 : string option = match _v68 with Some x -> x | None -> failwith "optionm'.of_obj / _v68=None"
    let v74 : (string -> US5) = method4()
    let v75 : US5 option = v71 |> Option.map v74 
    let v86 : US5 = US5_1
    let v87 : US5 = v75 |> Option.defaultValue v86 
    let v94 : string =
        match v87 with
        | US5_1 -> (* None *)
            let v92 : string = ""
            v92
        | US5_0(v91) -> (* Some *)
            v91
    let _v1 = v94 
    #endif
    let v95 : string = _v1 
    v95
and method1 () : struct (US1 * US2) =
    let v0 : string = "TRACE_LEVEL"
    let v1 : string = method2(v0)
    
    
    
    
    
    let v2 : bool = "Verbose" = v1
    let v6 : US1 =
        if v2 then
            let v3 : US0 = US0_0
            US1_0(v3)
        else
            US1_1
    let v47 : US1 =
        match v6 with
        | US1_1 -> (* None *)
            let v9 : bool = "Debug" = v1
            let v13 : US1 =
                if v9 then
                    let v10 : US0 = US0_1
                    US1_0(v10)
                else
                    US1_1
            match v13 with
            | US1_1 -> (* None *)
                let v16 : bool = "Info" = v1
                let v20 : US1 =
                    if v16 then
                        let v17 : US0 = US0_2
                        US1_0(v17)
                    else
                        US1_1
                match v20 with
                | US1_1 -> (* None *)
                    let v23 : bool = "Warning" = v1
                    let v27 : US1 =
                        if v23 then
                            let v24 : US0 = US0_3
                            US1_0(v24)
                        else
                            US1_1
                    match v27 with
                    | US1_1 -> (* None *)
                        let v30 : bool = "Critical" = v1
                        let v34 : US1 =
                            if v30 then
                                let v31 : US0 = US0_4
                                US1_0(v31)
                            else
                                US1_1
                        match v34 with
                        | US1_1 -> (* None *)
                            US1_1
                        | US1_0(v35) -> (* Some *)
                            US1_0(v35)
                    | US1_0(v28) -> (* Some *)
                        US1_0(v28)
                | US1_0(v21) -> (* Some *)
                    US1_0(v21)
            | US1_0(v14) -> (* Some *)
                US1_0(v14)
        | US1_0(v7) -> (* Some *)
            US1_0(v7)
    let v48 : string = "AUTOMATION"
    let v49 : string = method2(v48)
    let v50 : string = "True"
    let v51 : bool = v49 <> v50 
    let v107 : US2 =
        if v51 then
            US2_1
        else
            let v55 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v56 : System.DateTime = System.DateTime.Now
            let _v55 = v56 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v57 : System.DateTime = System.DateTime.Now
            let _v55 = v57 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v58 : System.DateTime = null |> unbox<System.DateTime>
            let _v55 = v58 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v61 : System.DateTime = System.DateTime.Now
            let _v55 = v61 
            #endif
#if FABLE_COMPILER_PYTHON
            let v62 : System.DateTime = System.DateTime.Now
            let _v55 = v62 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v63 : System.DateTime = System.DateTime.Now
            let _v55 = v63 
            #endif
#else
            let v64 : System.DateTime = System.DateTime.Now
            let _v55 = v64 
            #endif
            let v65 : System.DateTime = _v55 
            let v70 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v71 : (System.DateTime -> int64) = _.Ticks
            let v72 : int64 = v71 v65
            let _v70 = v72 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v73 : (System.DateTime -> int64) = _.Ticks
            let v74 : int64 = v73 v65
            let _v70 = v74 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v75 : int64 = null |> unbox<int64>
            let _v70 = v75 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v78 : (System.DateTime -> int64) = _.Ticks
            let v79 : int64 = v78 v65
            let _v70 = v79 
            #endif
#if FABLE_COMPILER_PYTHON
            let v80 : (System.DateTime -> int64) = _.Ticks
            let v81 : int64 = v80 v65
            let _v70 = v81 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v82 : (System.DateTime -> int64) = _.Ticks
            let v83 : int64 = v82 v65
            let _v70 = v83 
            #endif
#else
            let v84 : (System.DateTime -> int64) = _.Ticks
            let v85 : int64 = v84 v65
            let _v70 = v85 
            #endif
            let v86 : int64 = _v70 
            let v103 : int64 = v86 |> int64 
            US2_0(v103)
    struct (v47, v107)
and closure2 () (v0 : string) : unit =
    ()
and method0 (v0 : US0) : struct (Mut0 * Mut1 * Mut2 * Mut3 * Mut4 * int64 option) =
    let v1 : unit = ()
    
#if FABLE_COMPILER || WASM || CONTRACT
    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
    let struct (v2 : US1, v3 : US2) = method1()
    let _v1 = struct (v2, v3) 
    #endif
#if FABLE_COMPILER_RUST && WASM
    let v4 : US1 = US1_1
    let v5 : US2 = US2_1
    let _v1 = struct (v4, v5) 
    #endif
#if FABLE_COMPILER_RUST && CONTRACT
    let v6 : string = "AUTOMATION"
    let v7 : unit = ()
    
#if FABLE_COMPILER || WASM || CONTRACT
    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
    let v8 : string = "env!(\"" + v6 + "\")"
    let v9 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v8 
    let v10 : unit = ()
    
#if FABLE_COMPILER || WASM || CONTRACT
    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
    let v11 : string = "String::from($0)"
    let v12 : std_string_String = Fable.Core.RustInterop.emitRustExpr v9 v11 
    let _v10 = v12 
    #endif
#if FABLE_COMPILER_RUST && WASM
    let v13 : string = "String::from($0)"
    let v14 : std_string_String = Fable.Core.RustInterop.emitRustExpr v9 v13 
    let _v10 = v14 
    #endif
#if FABLE_COMPILER_RUST && CONTRACT
    let v15 : string = "String::from($0)"
    let v16 : std_string_String = Fable.Core.RustInterop.emitRustExpr v9 v15 
    let _v10 = v16 
    #endif
#if FABLE_COMPILER_TYPESCRIPT
    let v17 : std_string_String = v9 |> unbox<std_string_String>
    let _v10 = v17 
    #endif
#if FABLE_COMPILER_PYTHON
    let v20 : std_string_String = v9 |> unbox<std_string_String>
    let _v10 = v20 
    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
    let v23 : std_string_String = v9 |> unbox<std_string_String>
    let _v10 = v23 
    #endif
#else
    let v26 : std_string_String = v9 |> unbox<std_string_String>
    let _v10 = v26 
    #endif
    let v29 : std_string_String = _v10 
    let v34 : string = "fable_library_rust::String_::fromString($0)"
    let v35 : string = Fable.Core.RustInterop.emitRustExpr v29 v34 
    let _v7 = v35 
    #endif
#if FABLE_COMPILER_RUST && WASM
    let v36 : string = "env!(\"" + v6 + "\")"
    let v37 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v36 
    let v38 : unit = ()
    
#if FABLE_COMPILER || WASM || CONTRACT
    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
    let v39 : string = "String::from($0)"
    let v40 : std_string_String = Fable.Core.RustInterop.emitRustExpr v37 v39 
    let _v38 = v40 
    #endif
#if FABLE_COMPILER_RUST && WASM
    let v41 : string = "String::from($0)"
    let v42 : std_string_String = Fable.Core.RustInterop.emitRustExpr v37 v41 
    let _v38 = v42 
    #endif
#if FABLE_COMPILER_RUST && CONTRACT
    let v43 : string = "String::from($0)"
    let v44 : std_string_String = Fable.Core.RustInterop.emitRustExpr v37 v43 
    let _v38 = v44 
    #endif
#if FABLE_COMPILER_TYPESCRIPT
    let v45 : std_string_String = v37 |> unbox<std_string_String>
    let _v38 = v45 
    #endif
#if FABLE_COMPILER_PYTHON
    let v48 : std_string_String = v37 |> unbox<std_string_String>
    let _v38 = v48 
    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
    let v51 : std_string_String = v37 |> unbox<std_string_String>
    let _v38 = v51 
    #endif
#else
    let v54 : std_string_String = v37 |> unbox<std_string_String>
    let _v38 = v54 
    #endif
    let v57 : std_string_String = _v38 
    let v62 : string = "fable_library_rust::String_::fromString($0)"
    let v63 : string = Fable.Core.RustInterop.emitRustExpr v57 v62 
    let _v7 = v63 
    #endif
#if FABLE_COMPILER_RUST && CONTRACT
    let v64 : string = "env!(\"" + v6 + "\")"
    let v65 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v64 
    let v66 : unit = ()
    
#if FABLE_COMPILER || WASM || CONTRACT
    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
    let v67 : string = "String::from($0)"
    let v68 : std_string_String = Fable.Core.RustInterop.emitRustExpr v65 v67 
    let _v66 = v68 
    #endif
#if FABLE_COMPILER_RUST && WASM
    let v69 : string = "String::from($0)"
    let v70 : std_string_String = Fable.Core.RustInterop.emitRustExpr v65 v69 
    let _v66 = v70 
    #endif
#if FABLE_COMPILER_RUST && CONTRACT
    let v71 : string = "String::from($0)"
    let v72 : std_string_String = Fable.Core.RustInterop.emitRustExpr v65 v71 
    let _v66 = v72 
    #endif
#if FABLE_COMPILER_TYPESCRIPT
    let v73 : std_string_String = v65 |> unbox<std_string_String>
    let _v66 = v73 
    #endif
#if FABLE_COMPILER_PYTHON
    let v76 : std_string_String = v65 |> unbox<std_string_String>
    let _v66 = v76 
    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
    let v79 : std_string_String = v65 |> unbox<std_string_String>
    let _v66 = v79 
    #endif
#else
    let v82 : std_string_String = v65 |> unbox<std_string_String>
    let _v66 = v82 
    #endif
    let v85 : std_string_String = _v66 
    let v90 : string = "fable_library_rust::String_::fromString($0)"
    let v91 : string = Fable.Core.RustInterop.emitRustExpr v85 v90 
    let _v7 = v91 
    #endif
#if FABLE_COMPILER_TYPESCRIPT
    let v92 : string = null |> unbox<string>
    let _v7 = v92 
    #endif
#if FABLE_COMPILER_PYTHON
    let v95 : string = null |> unbox<string>
    let _v7 = v95 
    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
    let v98 : string = null |> unbox<string>
    let _v7 = v98 
    #endif
#else
    let v101 : string = null |> unbox<string>
    let _v7 = v101 
    #endif
    let v104 : string = _v7 
    let v109 : string = "True"
    let v110 : bool = v104 <> v109 
    let v121 : US2 =
        if v110 then
            US2_1
        else
            let v114 : string = $"near_sdk::env::block_timestamp()"
            let v115 : uint64 = Fable.Core.RustInterop.emitRustExpr () v114 
            let v116 : (uint64 -> int64) = int64
            let v117 : int64 = v116 v115
            US2_0(v117)
    let v122 : US1 = US1_1
    let _v1 = struct (v122, v121) 
    #endif
#if FABLE_COMPILER_TYPESCRIPT
    let struct (v123 : US1, v124 : US2) = method1()
    let _v1 = struct (v123, v124) 
    #endif
#if FABLE_COMPILER_PYTHON
    let struct (v125 : US1, v126 : US2) = method1()
    let _v1 = struct (v125, v126) 
    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
    let struct (v127 : US1, v128 : US2) = method1()
    let _v1 = struct (v127, v128) 
    #endif
#else
    let struct (v129 : US1, v130 : US2) = method1()
    let _v1 = struct (v129, v130) 
    #endif
    let struct (v131 : US1, v132 : US2) = _v1 
    let v137 : Mut0 = {l0 = 1L} : Mut0
    let v138 : (string -> unit) = closure2()
    let v139 : Mut1 = {l0 = v138} : Mut1
    let v140 : Mut2 = {l0 = true} : Mut2
    let v141 : string = ""
    let v142 : Mut3 = {l0 = v141} : Mut3
    let v145 : US0 =
        match v131 with
        | US1_1 -> (* None *)
            v0
        | US1_0(v143) -> (* Some *)
            v143
    let v146 : Mut4 = {l0 = v145} : Mut4
    let v153 : int64 option =
        match v132 with
        | US2_1 -> (* None *)
            let v151 : int64 option = None
            v151
        | US2_0(v147) -> (* Some *)
            let v148 : int64 option = Some v147 
            v148
    struct (v137, v139, v140, v142, v146, v153)
and closure0 () () : unit =
    let v0 : bool = TraceState.trace_state.IsNone
    if v0 then
        let v1 : US0 = US0_0
        let struct (v2 : Mut0, v3 : Mut1, v4 : Mut2, v5 : Mut3, v6 : Mut4, v7 : int64 option) = method0(v1)
        let v8 : struct (Mut0 * Mut1 * Mut2 * Mut3 * Mut4 * int64 option) option = Some struct (v2, v3, v4, v5, v6, v7) 
        TraceState.trace_state <- v8 
        ()
and method6 (v0 : US0) : bool =
    let v1 : unit = ()
    let v2 : (unit -> unit) = closure0()
    let v3 : unit = (fun () -> v2 (); v1) ()
    let struct (v17 : Mut0, v18 : Mut1, v19 : Mut2, v20 : Mut3, v21 : Mut4, v22 : int64 option) = TraceState.trace_state.Value
    let v35 : US0 = v21.l0
    let v36 : bool = v19.l0
    let v37 : bool = v36 = false
    if v37 then
        false
    else
        let v38 : int32 = [ US0_0, 0; US0_1, 1; US0_2, 2; US0_3, 3; US0_4, 4 ] |> Map |> Map.find v0
        let v39 : int32 = [ US0_0, 0; US0_1, 1; US0_2, 2; US0_3, 3; US0_4, 4 ] |> Map |> Map.find v35
        let v40 : bool = v38 >= v39
        v40
and closure6 () (v0 : int64) : US2 =
    US2_0(v0)
and method8 () : (int64 -> US2) =
    closure6()
and method9 () : string =
    let v0 : string = "hh:mm:ss"
    v0
and method10 () : string =
    let v0 : string = "HH:mm:ss"
    v0
and method7 (v0 : Mut0, v1 : Mut1, v2 : Mut2, v3 : Mut3, v4 : Mut4, v5 : int64 option) : string =
    let v6 : unit = ()
    
#if FABLE_COMPILER || WASM || CONTRACT
    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
    let v7 : (int64 -> US2) = method8()
    let v8 : US2 option = v5 |> Option.map v7 
    let v19 : US2 = US2_1
    let v20 : US2 = v8 |> Option.defaultValue v19 
    let v116 : System.DateTime =
        match v20 with
        | US2_1 -> (* None *)
            let v100 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v101 : System.DateTime = System.DateTime.Now
            let _v100 = v101 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v102 : System.DateTime = System.DateTime.Now
            let _v100 = v102 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v103 : System.DateTime = null |> unbox<System.DateTime>
            let _v100 = v103 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v106 : System.DateTime = System.DateTime.Now
            let _v100 = v106 
            #endif
#if FABLE_COMPILER_PYTHON
            let v107 : System.DateTime = System.DateTime.Now
            let _v100 = v107 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v108 : System.DateTime = System.DateTime.Now
            let _v100 = v108 
            #endif
#else
            let v109 : System.DateTime = System.DateTime.Now
            let _v100 = v109 
            #endif
            let v110 : System.DateTime = _v100 
            v110
        | US2_0(v24) -> (* Some *)
            let v25 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v26 : System.DateTime = System.DateTime.Now
            let _v25 = v26 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v27 : System.DateTime = System.DateTime.Now
            let _v25 = v27 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v28 : System.DateTime = null |> unbox<System.DateTime>
            let _v25 = v28 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v31 : System.DateTime = System.DateTime.Now
            let _v25 = v31 
            #endif
#if FABLE_COMPILER_PYTHON
            let v32 : System.DateTime = System.DateTime.Now
            let _v25 = v32 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v33 : System.DateTime = System.DateTime.Now
            let _v25 = v33 
            #endif
#else
            let v34 : System.DateTime = System.DateTime.Now
            let _v25 = v34 
            #endif
            let v35 : System.DateTime = _v25 
            let v40 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v41 : (System.DateTime -> int64) = _.Ticks
            let v42 : int64 = v41 v35
            let _v40 = v42 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v43 : (System.DateTime -> int64) = _.Ticks
            let v44 : int64 = v43 v35
            let _v40 = v44 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v45 : int64 = null |> unbox<int64>
            let _v40 = v45 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v48 : (System.DateTime -> int64) = _.Ticks
            let v49 : int64 = v48 v35
            let _v40 = v49 
            #endif
#if FABLE_COMPILER_PYTHON
            let v50 : (System.DateTime -> int64) = _.Ticks
            let v51 : int64 = v50 v35
            let _v40 = v51 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v52 : (System.DateTime -> int64) = _.Ticks
            let v53 : int64 = v52 v35
            let _v40 = v53 
            #endif
#else
            let v54 : (System.DateTime -> int64) = _.Ticks
            let v55 : int64 = v54 v35
            let _v40 = v55 
            #endif
            let v56 : int64 = _v40 
            let v73 : int64 = v56 |> int64 
            let v76 : int64 = v73 - v24
            let v77 : (int64 -> System.TimeSpan) = System.TimeSpan 
            let v78 : System.TimeSpan = v77 v76
            let v81 : (System.TimeSpan -> int32) = _.Hours
            let v82 : int32 = v81 v78
            let v85 : (System.TimeSpan -> int32) = _.Minutes
            let v86 : int32 = v85 v78
            let v89 : (System.TimeSpan -> int32) = _.Seconds
            let v90 : int32 = v89 v78
            let v93 : (System.TimeSpan -> int32) = _.Milliseconds
            let v94 : int32 = v93 v78
            let v97 : System.DateTime = System.DateTime (1, 1, 1, v82, v86, v90, v94)
            v97
    let v117 : string = method9()
    let v120 : (string -> string) = v116.ToString
    let v121 : string = v120 v117
    let _v6 = v121 
    #endif
#if FABLE_COMPILER_RUST && WASM
    let v124 : (int64 -> US2) = method8()
    let v125 : US2 option = v5 |> Option.map v124 
    let v136 : US2 = US2_1
    let v137 : US2 = v125 |> Option.defaultValue v136 
    let v233 : System.DateTime =
        match v137 with
        | US2_1 -> (* None *)
            let v217 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v218 : System.DateTime = System.DateTime.Now
            let _v217 = v218 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v219 : System.DateTime = System.DateTime.Now
            let _v217 = v219 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v220 : System.DateTime = null |> unbox<System.DateTime>
            let _v217 = v220 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v223 : System.DateTime = System.DateTime.Now
            let _v217 = v223 
            #endif
#if FABLE_COMPILER_PYTHON
            let v224 : System.DateTime = System.DateTime.Now
            let _v217 = v224 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v225 : System.DateTime = System.DateTime.Now
            let _v217 = v225 
            #endif
#else
            let v226 : System.DateTime = System.DateTime.Now
            let _v217 = v226 
            #endif
            let v227 : System.DateTime = _v217 
            v227
        | US2_0(v141) -> (* Some *)
            let v142 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v143 : System.DateTime = System.DateTime.Now
            let _v142 = v143 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v144 : System.DateTime = System.DateTime.Now
            let _v142 = v144 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v145 : System.DateTime = null |> unbox<System.DateTime>
            let _v142 = v145 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v148 : System.DateTime = System.DateTime.Now
            let _v142 = v148 
            #endif
#if FABLE_COMPILER_PYTHON
            let v149 : System.DateTime = System.DateTime.Now
            let _v142 = v149 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v150 : System.DateTime = System.DateTime.Now
            let _v142 = v150 
            #endif
#else
            let v151 : System.DateTime = System.DateTime.Now
            let _v142 = v151 
            #endif
            let v152 : System.DateTime = _v142 
            let v157 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v158 : (System.DateTime -> int64) = _.Ticks
            let v159 : int64 = v158 v152
            let _v157 = v159 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v160 : (System.DateTime -> int64) = _.Ticks
            let v161 : int64 = v160 v152
            let _v157 = v161 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v162 : int64 = null |> unbox<int64>
            let _v157 = v162 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v165 : (System.DateTime -> int64) = _.Ticks
            let v166 : int64 = v165 v152
            let _v157 = v166 
            #endif
#if FABLE_COMPILER_PYTHON
            let v167 : (System.DateTime -> int64) = _.Ticks
            let v168 : int64 = v167 v152
            let _v157 = v168 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v169 : (System.DateTime -> int64) = _.Ticks
            let v170 : int64 = v169 v152
            let _v157 = v170 
            #endif
#else
            let v171 : (System.DateTime -> int64) = _.Ticks
            let v172 : int64 = v171 v152
            let _v157 = v172 
            #endif
            let v173 : int64 = _v157 
            let v190 : int64 = v173 |> int64 
            let v193 : int64 = v190 - v141
            let v194 : (int64 -> System.TimeSpan) = System.TimeSpan 
            let v195 : System.TimeSpan = v194 v193
            let v198 : (System.TimeSpan -> int32) = _.Hours
            let v199 : int32 = v198 v195
            let v202 : (System.TimeSpan -> int32) = _.Minutes
            let v203 : int32 = v202 v195
            let v206 : (System.TimeSpan -> int32) = _.Seconds
            let v207 : int32 = v206 v195
            let v210 : (System.TimeSpan -> int32) = _.Milliseconds
            let v211 : int32 = v210 v195
            let v214 : System.DateTime = System.DateTime (1, 1, 1, v199, v203, v207, v211)
            v214
    let v234 : string = method9()
    let v237 : (string -> string) = v233.ToString
    let v238 : string = v237 v234
    let _v6 = v238 
    #endif
#if FABLE_COMPILER_RUST && CONTRACT
    let v241 : string = $"near_sdk::env::block_timestamp()"
    let v242 : uint64 = Fable.Core.RustInterop.emitRustExpr () v241 
    let v243 : (int64 -> US2) = method8()
    let v244 : US2 option = v5 |> Option.map v243 
    let v255 : US2 = US2_1
    let v256 : US2 = v244 |> Option.defaultValue v255 
    let v267 : uint64 =
        match v256 with
        | US2_1 -> (* None *)
            v242
        | US2_0(v260) -> (* Some *)
            let v261 : (int64 -> uint64) = uint64
            let v262 : uint64 = v261 v260
            let v265 : uint64 = v242 - v262
            v265
    let v268 : uint64 = v267 / 1000000000UL
    let v269 : uint64 = v268 % 60UL
    let v270 : uint64 = v268 / 60UL
    let v271 : uint64 = v270 % 60UL
    let v272 : uint64 = v268 / 3600UL
    let v273 : uint64 = v272 % 24UL
    let v274 : string = $"format!(\"{{:02}}:{{:02}}:{{:02}}\", $0, $1, $2)"
    let v275 : std_string_String = Fable.Core.RustInterop.emitRustExpr struct (v273, v271, v269) v274 
    let v276 : string = "fable_library_rust::String_::fromString($0)"
    let v277 : string = Fable.Core.RustInterop.emitRustExpr v275 v276 
    let _v6 = v277 
    #endif
#if FABLE_COMPILER_TYPESCRIPT
    let v278 : (int64 -> US2) = method8()
    let v279 : US2 option = v5 |> Option.map v278 
    let v290 : US2 = US2_1
    let v291 : US2 = v279 |> Option.defaultValue v290 
    let v387 : System.DateTime =
        match v291 with
        | US2_1 -> (* None *)
            let v371 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v372 : System.DateTime = System.DateTime.Now
            let _v371 = v372 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v373 : System.DateTime = System.DateTime.Now
            let _v371 = v373 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v374 : System.DateTime = null |> unbox<System.DateTime>
            let _v371 = v374 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v377 : System.DateTime = System.DateTime.Now
            let _v371 = v377 
            #endif
#if FABLE_COMPILER_PYTHON
            let v378 : System.DateTime = System.DateTime.Now
            let _v371 = v378 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v379 : System.DateTime = System.DateTime.Now
            let _v371 = v379 
            #endif
#else
            let v380 : System.DateTime = System.DateTime.Now
            let _v371 = v380 
            #endif
            let v381 : System.DateTime = _v371 
            v381
        | US2_0(v295) -> (* Some *)
            let v296 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v297 : System.DateTime = System.DateTime.Now
            let _v296 = v297 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v298 : System.DateTime = System.DateTime.Now
            let _v296 = v298 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v299 : System.DateTime = null |> unbox<System.DateTime>
            let _v296 = v299 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v302 : System.DateTime = System.DateTime.Now
            let _v296 = v302 
            #endif
#if FABLE_COMPILER_PYTHON
            let v303 : System.DateTime = System.DateTime.Now
            let _v296 = v303 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v304 : System.DateTime = System.DateTime.Now
            let _v296 = v304 
            #endif
#else
            let v305 : System.DateTime = System.DateTime.Now
            let _v296 = v305 
            #endif
            let v306 : System.DateTime = _v296 
            let v311 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v312 : (System.DateTime -> int64) = _.Ticks
            let v313 : int64 = v312 v306
            let _v311 = v313 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v314 : (System.DateTime -> int64) = _.Ticks
            let v315 : int64 = v314 v306
            let _v311 = v315 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v316 : int64 = null |> unbox<int64>
            let _v311 = v316 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v319 : (System.DateTime -> int64) = _.Ticks
            let v320 : int64 = v319 v306
            let _v311 = v320 
            #endif
#if FABLE_COMPILER_PYTHON
            let v321 : (System.DateTime -> int64) = _.Ticks
            let v322 : int64 = v321 v306
            let _v311 = v322 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v323 : (System.DateTime -> int64) = _.Ticks
            let v324 : int64 = v323 v306
            let _v311 = v324 
            #endif
#else
            let v325 : (System.DateTime -> int64) = _.Ticks
            let v326 : int64 = v325 v306
            let _v311 = v326 
            #endif
            let v327 : int64 = _v311 
            let v344 : int64 = v327 |> int64 
            let v347 : int64 = v344 - v295
            let v348 : (int64 -> System.TimeSpan) = System.TimeSpan 
            let v349 : System.TimeSpan = v348 v347
            let v352 : (System.TimeSpan -> int32) = _.Hours
            let v353 : int32 = v352 v349
            let v356 : (System.TimeSpan -> int32) = _.Minutes
            let v357 : int32 = v356 v349
            let v360 : (System.TimeSpan -> int32) = _.Seconds
            let v361 : int32 = v360 v349
            let v364 : (System.TimeSpan -> int32) = _.Milliseconds
            let v365 : int32 = v364 v349
            let v368 : System.DateTime = System.DateTime (1, 1, 1, v353, v357, v361, v365)
            v368
    let v388 : string = method10()
    let v391 : (string -> string) = v387.ToString
    let v392 : string = v391 v388
    let _v6 = v392 
    #endif
#if FABLE_COMPILER_PYTHON
    let v395 : (int64 -> US2) = method8()
    let v396 : US2 option = v5 |> Option.map v395 
    let v407 : US2 = US2_1
    let v408 : US2 = v396 |> Option.defaultValue v407 
    let v504 : System.DateTime =
        match v408 with
        | US2_1 -> (* None *)
            let v488 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v489 : System.DateTime = System.DateTime.Now
            let _v488 = v489 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v490 : System.DateTime = System.DateTime.Now
            let _v488 = v490 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v491 : System.DateTime = null |> unbox<System.DateTime>
            let _v488 = v491 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v494 : System.DateTime = System.DateTime.Now
            let _v488 = v494 
            #endif
#if FABLE_COMPILER_PYTHON
            let v495 : System.DateTime = System.DateTime.Now
            let _v488 = v495 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v496 : System.DateTime = System.DateTime.Now
            let _v488 = v496 
            #endif
#else
            let v497 : System.DateTime = System.DateTime.Now
            let _v488 = v497 
            #endif
            let v498 : System.DateTime = _v488 
            v498
        | US2_0(v412) -> (* Some *)
            let v413 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v414 : System.DateTime = System.DateTime.Now
            let _v413 = v414 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v415 : System.DateTime = System.DateTime.Now
            let _v413 = v415 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v416 : System.DateTime = null |> unbox<System.DateTime>
            let _v413 = v416 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v419 : System.DateTime = System.DateTime.Now
            let _v413 = v419 
            #endif
#if FABLE_COMPILER_PYTHON
            let v420 : System.DateTime = System.DateTime.Now
            let _v413 = v420 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v421 : System.DateTime = System.DateTime.Now
            let _v413 = v421 
            #endif
#else
            let v422 : System.DateTime = System.DateTime.Now
            let _v413 = v422 
            #endif
            let v423 : System.DateTime = _v413 
            let v428 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v429 : (System.DateTime -> int64) = _.Ticks
            let v430 : int64 = v429 v423
            let _v428 = v430 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v431 : (System.DateTime -> int64) = _.Ticks
            let v432 : int64 = v431 v423
            let _v428 = v432 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v433 : int64 = null |> unbox<int64>
            let _v428 = v433 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v436 : (System.DateTime -> int64) = _.Ticks
            let v437 : int64 = v436 v423
            let _v428 = v437 
            #endif
#if FABLE_COMPILER_PYTHON
            let v438 : (System.DateTime -> int64) = _.Ticks
            let v439 : int64 = v438 v423
            let _v428 = v439 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v440 : (System.DateTime -> int64) = _.Ticks
            let v441 : int64 = v440 v423
            let _v428 = v441 
            #endif
#else
            let v442 : (System.DateTime -> int64) = _.Ticks
            let v443 : int64 = v442 v423
            let _v428 = v443 
            #endif
            let v444 : int64 = _v428 
            let v461 : int64 = v444 |> int64 
            let v464 : int64 = v461 - v412
            let v465 : (int64 -> System.TimeSpan) = System.TimeSpan 
            let v466 : System.TimeSpan = v465 v464
            let v469 : (System.TimeSpan -> int32) = _.Hours
            let v470 : int32 = v469 v466
            let v473 : (System.TimeSpan -> int32) = _.Minutes
            let v474 : int32 = v473 v466
            let v477 : (System.TimeSpan -> int32) = _.Seconds
            let v478 : int32 = v477 v466
            let v481 : (System.TimeSpan -> int32) = _.Milliseconds
            let v482 : int32 = v481 v466
            let v485 : System.DateTime = System.DateTime (1, 1, 1, v470, v474, v478, v482)
            v485
    let v505 : string = method10()
    let v508 : (string -> string) = v504.ToString
    let v509 : string = v508 v505
    let _v6 = v509 
    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
    let v512 : (int64 -> US2) = method8()
    let v513 : US2 option = v5 |> Option.map v512 
    let v524 : US2 = US2_1
    let v525 : US2 = v513 |> Option.defaultValue v524 
    let v621 : System.DateTime =
        match v525 with
        | US2_1 -> (* None *)
            let v605 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v606 : System.DateTime = System.DateTime.Now
            let _v605 = v606 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v607 : System.DateTime = System.DateTime.Now
            let _v605 = v607 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v608 : System.DateTime = null |> unbox<System.DateTime>
            let _v605 = v608 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v611 : System.DateTime = System.DateTime.Now
            let _v605 = v611 
            #endif
#if FABLE_COMPILER_PYTHON
            let v612 : System.DateTime = System.DateTime.Now
            let _v605 = v612 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v613 : System.DateTime = System.DateTime.Now
            let _v605 = v613 
            #endif
#else
            let v614 : System.DateTime = System.DateTime.Now
            let _v605 = v614 
            #endif
            let v615 : System.DateTime = _v605 
            v615
        | US2_0(v529) -> (* Some *)
            let v530 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v531 : System.DateTime = System.DateTime.Now
            let _v530 = v531 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v532 : System.DateTime = System.DateTime.Now
            let _v530 = v532 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v533 : System.DateTime = null |> unbox<System.DateTime>
            let _v530 = v533 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v536 : System.DateTime = System.DateTime.Now
            let _v530 = v536 
            #endif
#if FABLE_COMPILER_PYTHON
            let v537 : System.DateTime = System.DateTime.Now
            let _v530 = v537 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v538 : System.DateTime = System.DateTime.Now
            let _v530 = v538 
            #endif
#else
            let v539 : System.DateTime = System.DateTime.Now
            let _v530 = v539 
            #endif
            let v540 : System.DateTime = _v530 
            let v545 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v546 : (System.DateTime -> int64) = _.Ticks
            let v547 : int64 = v546 v540
            let _v545 = v547 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v548 : (System.DateTime -> int64) = _.Ticks
            let v549 : int64 = v548 v540
            let _v545 = v549 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v550 : int64 = null |> unbox<int64>
            let _v545 = v550 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v553 : (System.DateTime -> int64) = _.Ticks
            let v554 : int64 = v553 v540
            let _v545 = v554 
            #endif
#if FABLE_COMPILER_PYTHON
            let v555 : (System.DateTime -> int64) = _.Ticks
            let v556 : int64 = v555 v540
            let _v545 = v556 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v557 : (System.DateTime -> int64) = _.Ticks
            let v558 : int64 = v557 v540
            let _v545 = v558 
            #endif
#else
            let v559 : (System.DateTime -> int64) = _.Ticks
            let v560 : int64 = v559 v540
            let _v545 = v560 
            #endif
            let v561 : int64 = _v545 
            let v578 : int64 = v561 |> int64 
            let v581 : int64 = v578 - v529
            let v582 : (int64 -> System.TimeSpan) = System.TimeSpan 
            let v583 : System.TimeSpan = v582 v581
            let v586 : (System.TimeSpan -> int32) = _.Hours
            let v587 : int32 = v586 v583
            let v590 : (System.TimeSpan -> int32) = _.Minutes
            let v591 : int32 = v590 v583
            let v594 : (System.TimeSpan -> int32) = _.Seconds
            let v595 : int32 = v594 v583
            let v598 : (System.TimeSpan -> int32) = _.Milliseconds
            let v599 : int32 = v598 v583
            let v602 : System.DateTime = System.DateTime (1, 1, 1, v587, v591, v595, v599)
            v602
    let v622 : string = method10()
    let v625 : (string -> string) = v621.ToString
    let v626 : string = v625 v622
    let _v6 = v626 
    #endif
#else
    let v629 : (int64 -> US2) = method8()
    let v630 : US2 option = v5 |> Option.map v629 
    let v641 : US2 = US2_1
    let v642 : US2 = v630 |> Option.defaultValue v641 
    let v738 : System.DateTime =
        match v642 with
        | US2_1 -> (* None *)
            let v722 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v723 : System.DateTime = System.DateTime.Now
            let _v722 = v723 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v724 : System.DateTime = System.DateTime.Now
            let _v722 = v724 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v725 : System.DateTime = null |> unbox<System.DateTime>
            let _v722 = v725 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v728 : System.DateTime = System.DateTime.Now
            let _v722 = v728 
            #endif
#if FABLE_COMPILER_PYTHON
            let v729 : System.DateTime = System.DateTime.Now
            let _v722 = v729 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v730 : System.DateTime = System.DateTime.Now
            let _v722 = v730 
            #endif
#else
            let v731 : System.DateTime = System.DateTime.Now
            let _v722 = v731 
            #endif
            let v732 : System.DateTime = _v722 
            v732
        | US2_0(v646) -> (* Some *)
            let v647 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v648 : System.DateTime = System.DateTime.Now
            let _v647 = v648 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v649 : System.DateTime = System.DateTime.Now
            let _v647 = v649 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v650 : System.DateTime = null |> unbox<System.DateTime>
            let _v647 = v650 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v653 : System.DateTime = System.DateTime.Now
            let _v647 = v653 
            #endif
#if FABLE_COMPILER_PYTHON
            let v654 : System.DateTime = System.DateTime.Now
            let _v647 = v654 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v655 : System.DateTime = System.DateTime.Now
            let _v647 = v655 
            #endif
#else
            let v656 : System.DateTime = System.DateTime.Now
            let _v647 = v656 
            #endif
            let v657 : System.DateTime = _v647 
            let v662 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v663 : (System.DateTime -> int64) = _.Ticks
            let v664 : int64 = v663 v657
            let _v662 = v664 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v665 : (System.DateTime -> int64) = _.Ticks
            let v666 : int64 = v665 v657
            let _v662 = v666 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v667 : int64 = null |> unbox<int64>
            let _v662 = v667 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v670 : (System.DateTime -> int64) = _.Ticks
            let v671 : int64 = v670 v657
            let _v662 = v671 
            #endif
#if FABLE_COMPILER_PYTHON
            let v672 : (System.DateTime -> int64) = _.Ticks
            let v673 : int64 = v672 v657
            let _v662 = v673 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v674 : (System.DateTime -> int64) = _.Ticks
            let v675 : int64 = v674 v657
            let _v662 = v675 
            #endif
#else
            let v676 : (System.DateTime -> int64) = _.Ticks
            let v677 : int64 = v676 v657
            let _v662 = v677 
            #endif
            let v678 : int64 = _v662 
            let v695 : int64 = v678 |> int64 
            let v698 : int64 = v695 - v646
            let v699 : (int64 -> System.TimeSpan) = System.TimeSpan 
            let v700 : System.TimeSpan = v699 v698
            let v703 : (System.TimeSpan -> int32) = _.Hours
            let v704 : int32 = v703 v700
            let v707 : (System.TimeSpan -> int32) = _.Minutes
            let v708 : int32 = v707 v700
            let v711 : (System.TimeSpan -> int32) = _.Seconds
            let v712 : int32 = v711 v700
            let v715 : (System.TimeSpan -> int32) = _.Milliseconds
            let v716 : int32 = v715 v700
            let v719 : System.DateTime = System.DateTime (1, 1, 1, v704, v708, v712, v716)
            v719
    let v739 : string = method10()
    let v742 : (string -> string) = v738.ToString
    let v743 : string = v742 v739
    let _v6 = v743 
    #endif
    let v746 : string = _v6 
    v746
and method13 () : string =
    let v0 : string = ""
    v0
and closure7 (v0 : Mut3, v1 : string) () : unit =
    let v2 : string = v0.l0
    let v3 : string = v2 + v1 
    v0.l0 <- v3
    ()
and method12 (v0 : char) : string =
    let v1 : string = method13()
    let v2 : Mut3 = {l0 = v1} : Mut3
    let v3 : string = $"{v0}"
    let v6 : unit = ()
    let v7 : (unit -> unit) = closure7(v2, v3)
    let v8 : unit = (fun () -> v7 (); v6) ()
    let v11 : string = v2.l0
    v11
and method14 () : string =
    let v0 : string = "\u001b[0m"
    v0
and method11 () : string =
    
    
    
    
    
    let v0 : string = "Verbose"
    let v1 : (unit -> string) = v0.ToLower
    let v2 : string = v1 ()
    let v5 : char = v2.[int 0]
    let v6 : string = method12(v5)
    let v7 : unit = ()
    
#if FABLE_COMPILER || WASM || CONTRACT
    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
    let v8 : string = "inline_colorization::color_bright_black"
    let v9 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v8 
    let v10 : unit = ()
    
#if FABLE_COMPILER || WASM || CONTRACT
    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
    let v11 : string = "&*$0"
    let v12 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr v6 v11 
    let _v10 = v12 
    #endif
#if FABLE_COMPILER_RUST && WASM
    let v13 : string = "&*$0"
    let v14 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr v6 v13 
    let _v10 = v14 
    #endif
#if FABLE_COMPILER_RUST && CONTRACT
    let v15 : string = "&*$0"
    let v16 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr v6 v15 
    let _v10 = v16 
    #endif
#if FABLE_COMPILER_TYPESCRIPT
    let v17 : Ref<Str> = v6 |> unbox<Ref<Str>>
    let _v10 = v17 
    #endif
#if FABLE_COMPILER_PYTHON
    let v20 : Ref<Str> = v6 |> unbox<Ref<Str>>
    let _v10 = v20 
    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
    let v23 : Ref<Str> = v6 |> unbox<Ref<Str>>
    let _v10 = v23 
    #endif
#else
    let v26 : Ref<Str> = v6 |> unbox<Ref<Str>>
    let _v10 = v26 
    #endif
    let v29 : Ref<Str> = _v10 
    let v34 : string = "inline_colorization::color_reset"
    let v35 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v34 
    let v36 : string = $"format!(\"{{}}{{}}{{}}\", $0, $1, $2)"
    let v37 : std_string_String = Fable.Core.RustInterop.emitRustExpr struct (v9, v29, v35) v36 
    let v38 : string = "fable_library_rust::String_::fromString($0)"
    let v39 : string = Fable.Core.RustInterop.emitRustExpr v37 v38 
    let _v7 = v39 
    #endif
#if FABLE_COMPILER_RUST && WASM
    let v40 : string = "inline_colorization::color_bright_black"
    let v41 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v40 
    let v42 : unit = ()
    
#if FABLE_COMPILER || WASM || CONTRACT
    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
    let v43 : string = "&*$0"
    let v44 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr v6 v43 
    let _v42 = v44 
    #endif
#if FABLE_COMPILER_RUST && WASM
    let v45 : string = "&*$0"
    let v46 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr v6 v45 
    let _v42 = v46 
    #endif
#if FABLE_COMPILER_RUST && CONTRACT
    let v47 : string = "&*$0"
    let v48 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr v6 v47 
    let _v42 = v48 
    #endif
#if FABLE_COMPILER_TYPESCRIPT
    let v49 : Ref<Str> = v6 |> unbox<Ref<Str>>
    let _v42 = v49 
    #endif
#if FABLE_COMPILER_PYTHON
    let v52 : Ref<Str> = v6 |> unbox<Ref<Str>>
    let _v42 = v52 
    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
    let v55 : Ref<Str> = v6 |> unbox<Ref<Str>>
    let _v42 = v55 
    #endif
#else
    let v58 : Ref<Str> = v6 |> unbox<Ref<Str>>
    let _v42 = v58 
    #endif
    let v61 : Ref<Str> = _v42 
    let v66 : string = "inline_colorization::color_reset"
    let v67 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v66 
    let v68 : string = $"format!(\"{{}}{{}}{{}}\", $0, $1, $2)"
    let v69 : std_string_String = Fable.Core.RustInterop.emitRustExpr struct (v41, v61, v67) v68 
    let v70 : string = "fable_library_rust::String_::fromString($0)"
    let v71 : string = Fable.Core.RustInterop.emitRustExpr v69 v70 
    let _v7 = v71 
    #endif
#if FABLE_COMPILER_RUST && CONTRACT
    let v72 : string = "inline_colorization::color_bright_black"
    let v73 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v72 
    let v74 : unit = ()
    
#if FABLE_COMPILER || WASM || CONTRACT
    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
    let v75 : string = "&*$0"
    let v76 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr v6 v75 
    let _v74 = v76 
    #endif
#if FABLE_COMPILER_RUST && WASM
    let v77 : string = "&*$0"
    let v78 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr v6 v77 
    let _v74 = v78 
    #endif
#if FABLE_COMPILER_RUST && CONTRACT
    let v79 : string = "&*$0"
    let v80 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr v6 v79 
    let _v74 = v80 
    #endif
#if FABLE_COMPILER_TYPESCRIPT
    let v81 : Ref<Str> = v6 |> unbox<Ref<Str>>
    let _v74 = v81 
    #endif
#if FABLE_COMPILER_PYTHON
    let v84 : Ref<Str> = v6 |> unbox<Ref<Str>>
    let _v74 = v84 
    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
    let v87 : Ref<Str> = v6 |> unbox<Ref<Str>>
    let _v74 = v87 
    #endif
#else
    let v90 : Ref<Str> = v6 |> unbox<Ref<Str>>
    let _v74 = v90 
    #endif
    let v93 : Ref<Str> = _v74 
    let v98 : string = "inline_colorization::color_reset"
    let v99 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v98 
    let v100 : string = $"format!(\"{{}}{{}}{{}}\", $0, $1, $2)"
    let v101 : std_string_String = Fable.Core.RustInterop.emitRustExpr struct (v73, v93, v99) v100 
    let v102 : string = "fable_library_rust::String_::fromString($0)"
    let v103 : string = Fable.Core.RustInterop.emitRustExpr v101 v102 
    let _v7 = v103 
    #endif
#if FABLE_COMPILER_TYPESCRIPT
    let v104 : string = "\u001b[90m"
    let v105 : string = method14()
    let v106 : string = v104 + v6 
    let v107 : string = v106 + v105 
    let _v7 = v107 
    #endif
#if FABLE_COMPILER_PYTHON
    let v108 : string = "\u001b[90m"
    let v109 : string = method14()
    let v110 : string = v108 + v6 
    let v111 : string = v110 + v109 
    let _v7 = v111 
    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
    let v112 : string = "\u001b[90m"
    let v113 : string = method14()
    let v114 : string = v112 + v6 
    let v115 : string = v114 + v113 
    let _v7 = v115 
    #endif
#else
    let v116 : string = "\u001b[90m"
    let v117 : string = method14()
    let v118 : string = v116 + v6 
    let v119 : string = v118 + v117 
    let _v7 = v119 
    #endif
    let v120 : string = _v7 
    v120
and method16 (v0 : int32, v1 : string) : string =
    let v2 : string = method13()
    let v3 : Mut3 = {l0 = v2} : Mut3
    let v4 : string = "{ "
    let v5 : string = $"{v4}"
    let v8 : unit = ()
    let v9 : (unit -> unit) = closure7(v3, v5)
    let v10 : unit = (fun () -> v9 (); v8) ()
    let v13 : string = "port"
    let v14 : string = $"{v13}"
    let v17 : unit = ()
    let v18 : (unit -> unit) = closure7(v3, v14)
    let v19 : unit = (fun () -> v18 (); v17) ()
    let v22 : string = " = "
    let v23 : string = $"{v22}"
    let v26 : unit = ()
    let v27 : (unit -> unit) = closure7(v3, v23)
    let v28 : unit = (fun () -> v27 (); v26) ()
    let v31 : string = $"{v0}"
    let v34 : unit = ()
    let v35 : (unit -> unit) = closure7(v3, v31)
    let v36 : unit = (fun () -> v35 (); v34) ()
    let v39 : string = "; "
    let v40 : string = $"{v39}"
    let v43 : unit = ()
    let v44 : (unit -> unit) = closure7(v3, v40)
    let v45 : unit = (fun () -> v44 (); v43) ()
    let v48 : string = "ex"
    let v49 : string = $"{v48}"
    let v52 : unit = ()
    let v53 : (unit -> unit) = closure7(v3, v49)
    let v54 : unit = (fun () -> v53 (); v52) ()
    let v57 : string = $"{v22}"
    let v60 : unit = ()
    let v61 : (unit -> unit) = closure7(v3, v57)
    let v62 : unit = (fun () -> v61 (); v60) ()
    let v65 : string = $"{v1}"
    let v68 : unit = ()
    let v69 : (unit -> unit) = closure7(v3, v65)
    let v70 : unit = (fun () -> v69 (); v68) ()
    let v73 : string = " }"
    let v74 : string = $"{v73}"
    let v77 : unit = ()
    let v78 : (unit -> unit) = closure7(v3, v74)
    let v79 : unit = (fun () -> v78 (); v77) ()
    let v82 : string = v3.l0
    v82
and method17 (v0 : string) : string =
    let v1 : char list = []
    let v2 : (char list -> (char [])) = List.toArray
    let v3 : (char []) = v2 v1
    let v6 : string = v0.TrimStart v3 
    let v28 : char list = []
    let v29 : char list = '/' :: v28 
    let v32 : char list = ' ' :: v29 
    let v35 : (char list -> (char [])) = List.toArray
    let v36 : (char []) = v35 v32
    let v39 : string = v6.TrimEnd v36 
    v39
and method15 (v0 : Mut0, v1 : Mut1, v2 : Mut2, v3 : Mut3, v4 : Mut4, v5 : int64 option, v6 : string, v7 : string, v8 : int32, v9 : string) : string =
    let v10 : string = method16(v8, v9)
    let v11 : int64 = v0.l0
    let v12 : string = "networking.test_port_open"
    let v13 : string = $"{v6} {v7} #{v11} %s{v12} / {v10}"
    method17(v13)
and closure8 (v0 : Mut0) () : unit =
    let v1 : int64 = v0.l0
    let v2 : int64 = v1 + 1L
    v0.l0 <- v2
    ()
and closure10 (v0 : string) () : unit =
    let v1 : (string -> unit) = System.Console.WriteLine
    v1 v0
and closure9 () (v0 : string) : unit =
    let v1 : unit = ()
    let v2 : (unit -> unit) = closure10(v0)
    let v3 : unit = (fun () -> v2 (); v1) ()
    ()
and method18 (v0 : string) : unit =
    let v1 : unit = ()
    let v2 : (unit -> unit) = closure0()
    let v3 : unit = (fun () -> v2 (); v1) ()
    let struct (v17 : Mut0, v18 : Mut1, v19 : Mut2, v20 : Mut3, v21 : Mut4, v22 : int64 option) = TraceState.trace_state.Value
    let v35 : unit = ()
    let v36 : (unit -> unit) = closure8(v17)
    let v37 : unit = (fun () -> v36 (); v35) ()
    let v40 : (string -> unit) = closure9()
    let v41 : unit = ()
    
#if FABLE_COMPILER || WASM || CONTRACT
    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
    let v42 : string = @"println!(""{}"", $0)"
    Fable.Core.RustInterop.emitRustExpr v0 v42 
    let _v41 = () 
    #endif
#if FABLE_COMPILER_RUST && WASM
    let v43 : string = @"println!(""{}"", $0)"
    Fable.Core.RustInterop.emitRustExpr v0 v43 
    let _v41 = () 
    #endif
#if FABLE_COMPILER_RUST && CONTRACT
    let v44 : string = v20.l0
    let v45 : bool = v44 = ""
    let v53 : string =
        if v45 then
            v0
        else
            let v46 : bool = v0 = ""
            if v46 then
                let v47 : string = v20.l0
                v47
            else
                let v48 : string = v20.l0
                let v49 : string = "\n"
                let v50 : string = v48 + v49 
                let v51 : string = v50 + v0 
                v51
    let v54 : unit = ()
    
#if FABLE_COMPILER || WASM || CONTRACT
    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
    let v55 : string = "&*$0"
    let v56 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr v53 v55 
    let _v54 = v56 
    #endif
#if FABLE_COMPILER_RUST && WASM
    let v57 : string = "&*$0"
    let v58 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr v53 v57 
    let _v54 = v58 
    #endif
#if FABLE_COMPILER_RUST && CONTRACT
    let v59 : string = "&*$0"
    let v60 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr v53 v59 
    let _v54 = v60 
    #endif
#if FABLE_COMPILER_TYPESCRIPT
    let v61 : Ref<Str> = v53 |> unbox<Ref<Str>>
    let _v54 = v61 
    #endif
#if FABLE_COMPILER_PYTHON
    let v64 : Ref<Str> = v53 |> unbox<Ref<Str>>
    let _v54 = v64 
    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
    let v67 : Ref<Str> = v53 |> unbox<Ref<Str>>
    let _v54 = v67 
    #endif
#else
    let v70 : Ref<Str> = v53 |> unbox<Ref<Str>>
    let _v54 = v70 
    #endif
    let v73 : Ref<Str> = _v54 
    let v78 : string = $"$0.chars()"
    let v79 : Mut<_> = Fable.Core.RustInterop.emitRustExpr v73 v78 
    let v80 : string = "$0"
    let v81 : _ = Fable.Core.RustInterop.emitRustExpr v79 v80 
    let v82 : string = "$0.collect::<Vec<_>>()"
    let v83 : Vec<char> = Fable.Core.RustInterop.emitRustExpr v81 v82 
    let v84 : string = "$0.chunks(15000).map(|x| x.into_iter().map(|x| x.clone()).collect::<Vec<_>>()).collect::<Vec<_>>()"
    let v85 : Vec<Vec<char>> = Fable.Core.RustInterop.emitRustExpr v83 v84 
    let v86 : string = "true; let _vec_map : Vec<_> = $0.into_iter().map(|x| { //"
    let v87 : bool = Fable.Core.RustInterop.emitRustExpr v85 v86 
    let v88 : string = "x"
    let v89 : Vec<char> = Fable.Core.RustInterop.emitRustExpr () v88 
    let v90 : string = "String::from_iter($0)"
    let v91 : std_string_String = Fable.Core.RustInterop.emitRustExpr v89 v90 
    let v92 : string = "true; $0 }).collect::<Vec<_>>()"
    let v93 : bool = Fable.Core.RustInterop.emitRustExpr v91 v92 
    let v94 : string = "_vec_map"
    let v95 : Vec<std_string_String> = Fable.Core.RustInterop.emitRustExpr () v94 
    let v96 : string = "$0.len()"
    let v97 : unativeint = Fable.Core.RustInterop.emitRustExpr v95 v96 
    let v98 : int32 = v97 |> int32 
    let v105 : string = ""
    let v106 : bool = v0 <> v105 
    let v110 : bool =
        if v106 then
            let v109 : bool = v98 <= 1
            v109
        else
            false
    if v110 then
        v20.l0 <- v53
        ()
    else
        v20.l0 <- v105
        let v111 : string = "true; $0.into_iter().for_each(|x| { //"
        let v112 : bool = Fable.Core.RustInterop.emitRustExpr v95 v111 
        let v113 : string = "x"
        let v114 : std_string_String = Fable.Core.RustInterop.emitRustExpr () v113 
        let v115 : string = $"true; near_sdk::log!(\"{{}}\", $0)"
        let v116 : bool = Fable.Core.RustInterop.emitRustExpr v114 v115 
        let v117 : string = $"true"
        let v118 : bool = Fable.Core.RustInterop.emitRustExpr () v117 
        let v119 : string = "true; }); //"
        let v120 : bool = Fable.Core.RustInterop.emitRustExpr () v119 
        ()
    let _v41 = () 
    #endif
#if FABLE_COMPILER_TYPESCRIPT
    v40 v0
    let _v41 = () 
    #endif
#if FABLE_COMPILER_PYTHON
    v40 v0
    let _v41 = () 
    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
    v40 v0
    let _v41 = () 
    #endif
#else
    v40 v0
    let _v41 = () 
    #endif
    _v41 
    let v121 : (string -> unit) = v18.l0
    v121 v0
and closure5 (v0 : int32, v1 : string) () : unit =
    let v2 : US0 = US0_0
    let v3 : bool = method6(v2)
    if v3 then
        let v4 : unit = ()
        let v5 : (unit -> unit) = closure0()
        let v6 : unit = (fun () -> v5 (); v4) ()
        let struct (v20 : Mut0, v21 : Mut1, v22 : Mut2, v23 : Mut3, v24 : Mut4, v25 : int64 option) = TraceState.trace_state.Value
        let v38 : string = method7(v20, v21, v22, v23, v24, v25)
        let v39 : string = method11()
        let v40 : string = method15(v20, v21, v22, v23, v24, v25, v38, v39, v0, v1)
        method18(v40)
and method5 (v0 : string, v1 : int32) : Async<bool> =
    let v2 : unit = ()
    
#if FABLE_COMPILER || WASM || CONTRACT
    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
    let v3 : Async<bool> = null |> unbox<Async<bool>>
    let _v2 = v3 
    #endif
#if FABLE_COMPILER_RUST && WASM
    let v6 : Async<bool> = null |> unbox<Async<bool>>
    let _v2 = v6 
    #endif
#if FABLE_COMPILER_RUST && CONTRACT
    let v9 : Async<bool> = null |> unbox<Async<bool>>
    let _v2 = v9 
    #endif
#if FABLE_COMPILER_TYPESCRIPT
    let v12 : unit = ()
    let _v12 =
        async {
            let v13 : Async<System.Threading.CancellationToken> = Async.CancellationToken
            let! v13 = v13 
            let v14 : System.Threading.CancellationToken = v13 
            let v15 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v16 : System_Net_Sockets_TcpClient = null |> unbox<System_Net_Sockets_TcpClient>
            let _v15 = v16 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v19 : System_Net_Sockets_TcpClient = null |> unbox<System_Net_Sockets_TcpClient>
            let _v15 = v19 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v22 : System_Net_Sockets_TcpClient = null |> unbox<System_Net_Sockets_TcpClient>
            let _v15 = v22 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v25 : System_Net_Sockets_TcpClient = null |> unbox<System_Net_Sockets_TcpClient>
            let _v15 = v25 
            #endif
#if FABLE_COMPILER_PYTHON
            let v28 : System_Net_Sockets_TcpClient = null |> unbox<System_Net_Sockets_TcpClient>
            let _v15 = v28 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v31 : System_Net_Sockets_TcpClient = null |> unbox<System_Net_Sockets_TcpClient>
            let _v15 = v31 
            #endif
#else
            let v34 : System_Net_Sockets_TcpClient = new System_Net_Sockets_TcpClient ()
            let _v15 = v34 
            #endif
            let v35 : System_Net_Sockets_TcpClient = _v15 
            use v35 = v35 
            let v40 : System_Net_Sockets_TcpClient = v35 
            try
            let v41 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v42 : System.Threading.Tasks.ValueTask = null |> unbox<System.Threading.Tasks.ValueTask>
            let _v41 = v42 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v45 : System.Threading.Tasks.ValueTask = null |> unbox<System.Threading.Tasks.ValueTask>
            let _v41 = v45 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v48 : System.Threading.Tasks.ValueTask = null |> unbox<System.Threading.Tasks.ValueTask>
            let _v41 = v48 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v51 : System.Threading.Tasks.ValueTask = null |> unbox<System.Threading.Tasks.ValueTask>
            let _v41 = v51 
            #endif
#if FABLE_COMPILER_PYTHON
            let v54 : System.Threading.Tasks.ValueTask = null |> unbox<System.Threading.Tasks.ValueTask>
            let _v41 = v54 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v57 : System.Threading.Tasks.ValueTask = null |> unbox<System.Threading.Tasks.ValueTask>
            let _v41 = v57 
            #endif
#else
            let v60 : System.Threading.Tasks.ValueTask = v40.ConnectAsync (v0, v1, v14)
            let _v41 = v60 
            #endif
            let v61 : System.Threading.Tasks.ValueTask = _v41 
            let v66 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v67 : System.Threading.Tasks.Task = null |> unbox<System.Threading.Tasks.Task>
            let _v66 = v67 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v70 : System.Threading.Tasks.Task = null |> unbox<System.Threading.Tasks.Task>
            let _v66 = v70 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v73 : System.Threading.Tasks.Task = null |> unbox<System.Threading.Tasks.Task>
            let _v66 = v73 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v76 : System.Threading.Tasks.Task = null |> unbox<System.Threading.Tasks.Task>
            let _v66 = v76 
            #endif
#if FABLE_COMPILER_PYTHON
            let v79 : System.Threading.Tasks.Task = null |> unbox<System.Threading.Tasks.Task>
            let _v66 = v79 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v82 : System.Threading.Tasks.Task = null |> unbox<System.Threading.Tasks.Task>
            let _v66 = v82 
            #endif
#else
            let v85 : (unit -> System.Threading.Tasks.Task) = v61.AsTask
            let v86 : System.Threading.Tasks.Task = v85 ()
            let _v66 = v86 
            #endif
            let v87 : System.Threading.Tasks.Task = _v66 
            let v92 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v93 : (System.Threading.Tasks.Task -> Async<unit>) = Async.AwaitTask
            let v94 : Async<unit> = v93 v87
            let _v92 = v94 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v95 : (System.Threading.Tasks.Task -> Async<unit>) = Async.AwaitTask
            let v96 : Async<unit> = v95 v87
            let _v92 = v96 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v97 : (System.Threading.Tasks.Task -> Async<unit>) = Async.AwaitTask
            let v98 : Async<unit> = v97 v87
            let _v92 = v98 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v99 : (System.Threading.Tasks.Task -> Async<unit>) = Async.AwaitTask
            let v100 : Async<unit> = v99 v87
            let _v92 = v100 
            #endif
#if FABLE_COMPILER_PYTHON
            let v101 : (System.Threading.Tasks.Task -> Async<unit>) = Async.AwaitTask
            let v102 : Async<unit> = v101 v87
            let _v92 = v102 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v103 : (System.Threading.Tasks.Task -> Async<unit>) = Async.AwaitTask
            let v104 : Async<unit> = v103 v87
            let _v92 = v104 
            #endif
#else
            let v105 : (System.Threading.Tasks.Task -> Async<unit>) = Async.AwaitTask
            let v106 : Async<unit> = v105 v87
            let _v92 = v106 
            #endif
            let v107 : Async<unit> = _v92 
            do! v107 
            return true 
            with ex ->
                let v112 : exn = ex
                let v113 : unit = ()
                
#if FABLE_COMPILER || WASM || CONTRACT
                
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                let v114 : string = $"%A{v112}"
                let _v113 = v114 
                #endif
#if FABLE_COMPILER_RUST && WASM
                let v117 : string = $"%A{v112}"
                let _v113 = v117 
                #endif
#if FABLE_COMPILER_RUST && CONTRACT
                let v120 : string = $"%A{v112}"
                let _v113 = v120 
                #endif
#if FABLE_COMPILER_TYPESCRIPT
                let v123 : string = $"%A{v112}"
                let _v113 = v123 
                #endif
#if FABLE_COMPILER_PYTHON
                let v126 : string = $"%A{v112}"
                let _v113 = v126 
                #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                let v129 : string = $"%A{v112}"
                let _v113 = v129 
                #endif
#else
                let v132 : string = $"{v112.GetType ()}: {v112.Message}"
                let _v113 = v132 
                #endif
                let v133 : string = _v113 
                let v138 : unit = ()
                let v139 : (unit -> unit) = closure5(v1, v133)
                let v140 : unit = (fun () -> v139 (); v138) ()
                return false 
                (*
                ()
            *)
            (*
            let v180 : bool = *)
            (*
            ()
        *)
        }
        (*
        ()
    *)
    let v181 : Async<bool> = _v12 
    let _v2 = v181 
    #endif
#if FABLE_COMPILER_PYTHON
    let v182 : unit = ()
    let _v182 =
        async {
            let v183 : Async<System.Threading.CancellationToken> = Async.CancellationToken
            let! v183 = v183 
            let v184 : System.Threading.CancellationToken = v183 
            let v185 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v186 : System_Net_Sockets_TcpClient = null |> unbox<System_Net_Sockets_TcpClient>
            let _v185 = v186 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v189 : System_Net_Sockets_TcpClient = null |> unbox<System_Net_Sockets_TcpClient>
            let _v185 = v189 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v192 : System_Net_Sockets_TcpClient = null |> unbox<System_Net_Sockets_TcpClient>
            let _v185 = v192 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v195 : System_Net_Sockets_TcpClient = null |> unbox<System_Net_Sockets_TcpClient>
            let _v185 = v195 
            #endif
#if FABLE_COMPILER_PYTHON
            let v198 : System_Net_Sockets_TcpClient = null |> unbox<System_Net_Sockets_TcpClient>
            let _v185 = v198 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v201 : System_Net_Sockets_TcpClient = null |> unbox<System_Net_Sockets_TcpClient>
            let _v185 = v201 
            #endif
#else
            let v204 : System_Net_Sockets_TcpClient = new System_Net_Sockets_TcpClient ()
            let _v185 = v204 
            #endif
            let v205 : System_Net_Sockets_TcpClient = _v185 
            use v205 = v205 
            let v210 : System_Net_Sockets_TcpClient = v205 
            try
            let v211 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v212 : System.Threading.Tasks.ValueTask = null |> unbox<System.Threading.Tasks.ValueTask>
            let _v211 = v212 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v215 : System.Threading.Tasks.ValueTask = null |> unbox<System.Threading.Tasks.ValueTask>
            let _v211 = v215 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v218 : System.Threading.Tasks.ValueTask = null |> unbox<System.Threading.Tasks.ValueTask>
            let _v211 = v218 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v221 : System.Threading.Tasks.ValueTask = null |> unbox<System.Threading.Tasks.ValueTask>
            let _v211 = v221 
            #endif
#if FABLE_COMPILER_PYTHON
            let v224 : System.Threading.Tasks.ValueTask = null |> unbox<System.Threading.Tasks.ValueTask>
            let _v211 = v224 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v227 : System.Threading.Tasks.ValueTask = null |> unbox<System.Threading.Tasks.ValueTask>
            let _v211 = v227 
            #endif
#else
            let v230 : System.Threading.Tasks.ValueTask = v210.ConnectAsync (v0, v1, v184)
            let _v211 = v230 
            #endif
            let v231 : System.Threading.Tasks.ValueTask = _v211 
            let v236 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v237 : System.Threading.Tasks.Task = null |> unbox<System.Threading.Tasks.Task>
            let _v236 = v237 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v240 : System.Threading.Tasks.Task = null |> unbox<System.Threading.Tasks.Task>
            let _v236 = v240 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v243 : System.Threading.Tasks.Task = null |> unbox<System.Threading.Tasks.Task>
            let _v236 = v243 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v246 : System.Threading.Tasks.Task = null |> unbox<System.Threading.Tasks.Task>
            let _v236 = v246 
            #endif
#if FABLE_COMPILER_PYTHON
            let v249 : System.Threading.Tasks.Task = null |> unbox<System.Threading.Tasks.Task>
            let _v236 = v249 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v252 : System.Threading.Tasks.Task = null |> unbox<System.Threading.Tasks.Task>
            let _v236 = v252 
            #endif
#else
            let v255 : (unit -> System.Threading.Tasks.Task) = v231.AsTask
            let v256 : System.Threading.Tasks.Task = v255 ()
            let _v236 = v256 
            #endif
            let v257 : System.Threading.Tasks.Task = _v236 
            let v262 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v263 : (System.Threading.Tasks.Task -> Async<unit>) = Async.AwaitTask
            let v264 : Async<unit> = v263 v257
            let _v262 = v264 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v265 : (System.Threading.Tasks.Task -> Async<unit>) = Async.AwaitTask
            let v266 : Async<unit> = v265 v257
            let _v262 = v266 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v267 : (System.Threading.Tasks.Task -> Async<unit>) = Async.AwaitTask
            let v268 : Async<unit> = v267 v257
            let _v262 = v268 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v269 : (System.Threading.Tasks.Task -> Async<unit>) = Async.AwaitTask
            let v270 : Async<unit> = v269 v257
            let _v262 = v270 
            #endif
#if FABLE_COMPILER_PYTHON
            let v271 : (System.Threading.Tasks.Task -> Async<unit>) = Async.AwaitTask
            let v272 : Async<unit> = v271 v257
            let _v262 = v272 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v273 : (System.Threading.Tasks.Task -> Async<unit>) = Async.AwaitTask
            let v274 : Async<unit> = v273 v257
            let _v262 = v274 
            #endif
#else
            let v275 : (System.Threading.Tasks.Task -> Async<unit>) = Async.AwaitTask
            let v276 : Async<unit> = v275 v257
            let _v262 = v276 
            #endif
            let v277 : Async<unit> = _v262 
            do! v277 
            return true 
            with ex ->
                let v282 : exn = ex
                let v283 : unit = ()
                
#if FABLE_COMPILER || WASM || CONTRACT
                
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                let v284 : string = $"%A{v282}"
                let _v283 = v284 
                #endif
#if FABLE_COMPILER_RUST && WASM
                let v287 : string = $"%A{v282}"
                let _v283 = v287 
                #endif
#if FABLE_COMPILER_RUST && CONTRACT
                let v290 : string = $"%A{v282}"
                let _v283 = v290 
                #endif
#if FABLE_COMPILER_TYPESCRIPT
                let v293 : string = $"%A{v282}"
                let _v283 = v293 
                #endif
#if FABLE_COMPILER_PYTHON
                let v296 : string = $"%A{v282}"
                let _v283 = v296 
                #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                let v299 : string = $"%A{v282}"
                let _v283 = v299 
                #endif
#else
                let v302 : string = $"{v282.GetType ()}: {v282.Message}"
                let _v283 = v302 
                #endif
                let v303 : string = _v283 
                let v308 : unit = ()
                let v309 : (unit -> unit) = closure5(v1, v303)
                let v310 : unit = (fun () -> v309 (); v308) ()
                return false 
                (*
                ()
            *)
            (*
            let v350 : bool = *)
            (*
            ()
        *)
        }
        (*
        ()
    *)
    let v351 : Async<bool> = _v182 
    let _v2 = v351 
    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
    let v352 : unit = ()
    let _v352 =
        async {
            let v353 : Async<System.Threading.CancellationToken> = Async.CancellationToken
            let! v353 = v353 
            let v354 : System.Threading.CancellationToken = v353 
            let v355 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v356 : System_Net_Sockets_TcpClient = null |> unbox<System_Net_Sockets_TcpClient>
            let _v355 = v356 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v359 : System_Net_Sockets_TcpClient = null |> unbox<System_Net_Sockets_TcpClient>
            let _v355 = v359 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v362 : System_Net_Sockets_TcpClient = null |> unbox<System_Net_Sockets_TcpClient>
            let _v355 = v362 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v365 : System_Net_Sockets_TcpClient = null |> unbox<System_Net_Sockets_TcpClient>
            let _v355 = v365 
            #endif
#if FABLE_COMPILER_PYTHON
            let v368 : System_Net_Sockets_TcpClient = null |> unbox<System_Net_Sockets_TcpClient>
            let _v355 = v368 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v371 : System_Net_Sockets_TcpClient = null |> unbox<System_Net_Sockets_TcpClient>
            let _v355 = v371 
            #endif
#else
            let v374 : System_Net_Sockets_TcpClient = new System_Net_Sockets_TcpClient ()
            let _v355 = v374 
            #endif
            let v375 : System_Net_Sockets_TcpClient = _v355 
            use v375 = v375 
            let v380 : System_Net_Sockets_TcpClient = v375 
            try
            let v381 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v382 : System.Threading.Tasks.ValueTask = null |> unbox<System.Threading.Tasks.ValueTask>
            let _v381 = v382 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v385 : System.Threading.Tasks.ValueTask = null |> unbox<System.Threading.Tasks.ValueTask>
            let _v381 = v385 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v388 : System.Threading.Tasks.ValueTask = null |> unbox<System.Threading.Tasks.ValueTask>
            let _v381 = v388 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v391 : System.Threading.Tasks.ValueTask = null |> unbox<System.Threading.Tasks.ValueTask>
            let _v381 = v391 
            #endif
#if FABLE_COMPILER_PYTHON
            let v394 : System.Threading.Tasks.ValueTask = null |> unbox<System.Threading.Tasks.ValueTask>
            let _v381 = v394 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v397 : System.Threading.Tasks.ValueTask = null |> unbox<System.Threading.Tasks.ValueTask>
            let _v381 = v397 
            #endif
#else
            let v400 : System.Threading.Tasks.ValueTask = v380.ConnectAsync (v0, v1, v354)
            let _v381 = v400 
            #endif
            let v401 : System.Threading.Tasks.ValueTask = _v381 
            let v406 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v407 : System.Threading.Tasks.Task = null |> unbox<System.Threading.Tasks.Task>
            let _v406 = v407 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v410 : System.Threading.Tasks.Task = null |> unbox<System.Threading.Tasks.Task>
            let _v406 = v410 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v413 : System.Threading.Tasks.Task = null |> unbox<System.Threading.Tasks.Task>
            let _v406 = v413 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v416 : System.Threading.Tasks.Task = null |> unbox<System.Threading.Tasks.Task>
            let _v406 = v416 
            #endif
#if FABLE_COMPILER_PYTHON
            let v419 : System.Threading.Tasks.Task = null |> unbox<System.Threading.Tasks.Task>
            let _v406 = v419 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v422 : System.Threading.Tasks.Task = null |> unbox<System.Threading.Tasks.Task>
            let _v406 = v422 
            #endif
#else
            let v425 : (unit -> System.Threading.Tasks.Task) = v401.AsTask
            let v426 : System.Threading.Tasks.Task = v425 ()
            let _v406 = v426 
            #endif
            let v427 : System.Threading.Tasks.Task = _v406 
            let v432 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v433 : (System.Threading.Tasks.Task -> Async<unit>) = Async.AwaitTask
            let v434 : Async<unit> = v433 v427
            let _v432 = v434 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v435 : (System.Threading.Tasks.Task -> Async<unit>) = Async.AwaitTask
            let v436 : Async<unit> = v435 v427
            let _v432 = v436 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v437 : (System.Threading.Tasks.Task -> Async<unit>) = Async.AwaitTask
            let v438 : Async<unit> = v437 v427
            let _v432 = v438 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v439 : (System.Threading.Tasks.Task -> Async<unit>) = Async.AwaitTask
            let v440 : Async<unit> = v439 v427
            let _v432 = v440 
            #endif
#if FABLE_COMPILER_PYTHON
            let v441 : (System.Threading.Tasks.Task -> Async<unit>) = Async.AwaitTask
            let v442 : Async<unit> = v441 v427
            let _v432 = v442 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v443 : (System.Threading.Tasks.Task -> Async<unit>) = Async.AwaitTask
            let v444 : Async<unit> = v443 v427
            let _v432 = v444 
            #endif
#else
            let v445 : (System.Threading.Tasks.Task -> Async<unit>) = Async.AwaitTask
            let v446 : Async<unit> = v445 v427
            let _v432 = v446 
            #endif
            let v447 : Async<unit> = _v432 
            do! v447 
            return true 
            with ex ->
                let v452 : exn = ex
                let v453 : unit = ()
                
#if FABLE_COMPILER || WASM || CONTRACT
                
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                let v454 : string = $"%A{v452}"
                let _v453 = v454 
                #endif
#if FABLE_COMPILER_RUST && WASM
                let v457 : string = $"%A{v452}"
                let _v453 = v457 
                #endif
#if FABLE_COMPILER_RUST && CONTRACT
                let v460 : string = $"%A{v452}"
                let _v453 = v460 
                #endif
#if FABLE_COMPILER_TYPESCRIPT
                let v463 : string = $"%A{v452}"
                let _v453 = v463 
                #endif
#if FABLE_COMPILER_PYTHON
                let v466 : string = $"%A{v452}"
                let _v453 = v466 
                #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                let v469 : string = $"%A{v452}"
                let _v453 = v469 
                #endif
#else
                let v472 : string = $"{v452.GetType ()}: {v452.Message}"
                let _v453 = v472 
                #endif
                let v473 : string = _v453 
                let v478 : unit = ()
                let v479 : (unit -> unit) = closure5(v1, v473)
                let v480 : unit = (fun () -> v479 (); v478) ()
                return false 
                (*
                ()
            *)
            (*
            let v520 : bool = *)
            (*
            ()
        *)
        }
        (*
        ()
    *)
    let v521 : Async<bool> = _v352 
    let _v2 = v521 
    #endif
#else
    let v522 : unit = ()
    let _v522 =
        async {
            let v523 : Async<System.Threading.CancellationToken> = Async.CancellationToken
            let! v523 = v523 
            let v524 : System.Threading.CancellationToken = v523 
            let v525 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v526 : System_Net_Sockets_TcpClient = null |> unbox<System_Net_Sockets_TcpClient>
            let _v525 = v526 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v529 : System_Net_Sockets_TcpClient = null |> unbox<System_Net_Sockets_TcpClient>
            let _v525 = v529 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v532 : System_Net_Sockets_TcpClient = null |> unbox<System_Net_Sockets_TcpClient>
            let _v525 = v532 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v535 : System_Net_Sockets_TcpClient = null |> unbox<System_Net_Sockets_TcpClient>
            let _v525 = v535 
            #endif
#if FABLE_COMPILER_PYTHON
            let v538 : System_Net_Sockets_TcpClient = null |> unbox<System_Net_Sockets_TcpClient>
            let _v525 = v538 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v541 : System_Net_Sockets_TcpClient = null |> unbox<System_Net_Sockets_TcpClient>
            let _v525 = v541 
            #endif
#else
            let v544 : System_Net_Sockets_TcpClient = new System_Net_Sockets_TcpClient ()
            let _v525 = v544 
            #endif
            let v545 : System_Net_Sockets_TcpClient = _v525 
            use v545 = v545 
            let v550 : System_Net_Sockets_TcpClient = v545 
            try
            let v551 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v552 : System.Threading.Tasks.ValueTask = null |> unbox<System.Threading.Tasks.ValueTask>
            let _v551 = v552 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v555 : System.Threading.Tasks.ValueTask = null |> unbox<System.Threading.Tasks.ValueTask>
            let _v551 = v555 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v558 : System.Threading.Tasks.ValueTask = null |> unbox<System.Threading.Tasks.ValueTask>
            let _v551 = v558 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v561 : System.Threading.Tasks.ValueTask = null |> unbox<System.Threading.Tasks.ValueTask>
            let _v551 = v561 
            #endif
#if FABLE_COMPILER_PYTHON
            let v564 : System.Threading.Tasks.ValueTask = null |> unbox<System.Threading.Tasks.ValueTask>
            let _v551 = v564 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v567 : System.Threading.Tasks.ValueTask = null |> unbox<System.Threading.Tasks.ValueTask>
            let _v551 = v567 
            #endif
#else
            let v570 : System.Threading.Tasks.ValueTask = v550.ConnectAsync (v0, v1, v524)
            let _v551 = v570 
            #endif
            let v571 : System.Threading.Tasks.ValueTask = _v551 
            let v576 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v577 : System.Threading.Tasks.Task = null |> unbox<System.Threading.Tasks.Task>
            let _v576 = v577 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v580 : System.Threading.Tasks.Task = null |> unbox<System.Threading.Tasks.Task>
            let _v576 = v580 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v583 : System.Threading.Tasks.Task = null |> unbox<System.Threading.Tasks.Task>
            let _v576 = v583 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v586 : System.Threading.Tasks.Task = null |> unbox<System.Threading.Tasks.Task>
            let _v576 = v586 
            #endif
#if FABLE_COMPILER_PYTHON
            let v589 : System.Threading.Tasks.Task = null |> unbox<System.Threading.Tasks.Task>
            let _v576 = v589 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v592 : System.Threading.Tasks.Task = null |> unbox<System.Threading.Tasks.Task>
            let _v576 = v592 
            #endif
#else
            let v595 : (unit -> System.Threading.Tasks.Task) = v571.AsTask
            let v596 : System.Threading.Tasks.Task = v595 ()
            let _v576 = v596 
            #endif
            let v597 : System.Threading.Tasks.Task = _v576 
            let v602 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v603 : (System.Threading.Tasks.Task -> Async<unit>) = Async.AwaitTask
            let v604 : Async<unit> = v603 v597
            let _v602 = v604 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v605 : (System.Threading.Tasks.Task -> Async<unit>) = Async.AwaitTask
            let v606 : Async<unit> = v605 v597
            let _v602 = v606 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v607 : (System.Threading.Tasks.Task -> Async<unit>) = Async.AwaitTask
            let v608 : Async<unit> = v607 v597
            let _v602 = v608 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v609 : (System.Threading.Tasks.Task -> Async<unit>) = Async.AwaitTask
            let v610 : Async<unit> = v609 v597
            let _v602 = v610 
            #endif
#if FABLE_COMPILER_PYTHON
            let v611 : (System.Threading.Tasks.Task -> Async<unit>) = Async.AwaitTask
            let v612 : Async<unit> = v611 v597
            let _v602 = v612 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v613 : (System.Threading.Tasks.Task -> Async<unit>) = Async.AwaitTask
            let v614 : Async<unit> = v613 v597
            let _v602 = v614 
            #endif
#else
            let v615 : (System.Threading.Tasks.Task -> Async<unit>) = Async.AwaitTask
            let v616 : Async<unit> = v615 v597
            let _v602 = v616 
            #endif
            let v617 : Async<unit> = _v602 
            do! v617 
            return true 
            with ex ->
                let v622 : exn = ex
                let v623 : unit = ()
                
#if FABLE_COMPILER || WASM || CONTRACT
                
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                let v624 : string = $"%A{v622}"
                let _v623 = v624 
                #endif
#if FABLE_COMPILER_RUST && WASM
                let v627 : string = $"%A{v622}"
                let _v623 = v627 
                #endif
#if FABLE_COMPILER_RUST && CONTRACT
                let v630 : string = $"%A{v622}"
                let _v623 = v630 
                #endif
#if FABLE_COMPILER_TYPESCRIPT
                let v633 : string = $"%A{v622}"
                let _v623 = v633 
                #endif
#if FABLE_COMPILER_PYTHON
                let v636 : string = $"%A{v622}"
                let _v623 = v636 
                #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                let v639 : string = $"%A{v622}"
                let _v623 = v639 
                #endif
#else
                let v642 : string = $"{v622.GetType ()}: {v622.Message}"
                let _v623 = v642 
                #endif
                let v643 : string = _v623 
                let v648 : unit = ()
                let v649 : (unit -> unit) = closure5(v1, v643)
                let v650 : unit = (fun () -> v649 (); v648) ()
                return false 
                (*
                ()
            *)
            (*
            let v690 : bool = *)
            (*
            ()
        *)
        }
        (*
        ()
    *)
    let v691 : Async<bool> = _v522 
    let _v2 = v691 
    #endif
    let v692 : Async<bool> = _v2 
    v692
and closure4 (v0 : string) (v1 : int32) : Async<bool> =
    method5(v0, v1)
and closure3 () (v0 : string) : (int32 -> Async<bool>) =
    closure4(v0)
and closure14 () (v0 : bool) : US7 =
    US7_0(v0)
and method21 () : (bool -> US7) =
    closure14()
and closure15 () (v0 : exn) : US7 =
    US7_1(v0)
and method22 () : (exn -> US7) =
    closure15()
and method24 (v0 : int32) : string =
    let v1 : string = method13()
    let v2 : Mut3 = {l0 = v1} : Mut3
    let v3 : string = "{ "
    let v4 : string = $"{v3}"
    let v7 : unit = ()
    let v8 : (unit -> unit) = closure7(v2, v4)
    let v9 : unit = (fun () -> v8 (); v7) ()
    let v12 : string = "timeout"
    let v13 : string = $"{v12}"
    let v16 : unit = ()
    let v17 : (unit -> unit) = closure7(v2, v13)
    let v18 : unit = (fun () -> v17 (); v16) ()
    let v21 : string = " = "
    let v22 : string = $"{v21}"
    let v25 : unit = ()
    let v26 : (unit -> unit) = closure7(v2, v22)
    let v27 : unit = (fun () -> v26 (); v25) ()
    let v30 : string = $"{v0}"
    let v33 : unit = ()
    let v34 : (unit -> unit) = closure7(v2, v30)
    let v35 : unit = (fun () -> v34 (); v33) ()
    let v38 : string = " }"
    let v39 : string = $"{v38}"
    let v42 : unit = ()
    let v43 : (unit -> unit) = closure7(v2, v39)
    let v44 : unit = (fun () -> v43 (); v42) ()
    let v47 : string = v2.l0
    v47
and method23 (v0 : Mut0, v1 : Mut1, v2 : Mut2, v3 : Mut3, v4 : Mut4, v5 : int64 option, v6 : string, v7 : string, v8 : int32) : string =
    let v9 : string = method24(v8)
    let v10 : int64 = v0.l0
    let v11 : string = "async.run_with_timeout_async"
    let v12 : string = $"{v6} {v7} #{v10} %s{v11} / {v9}"
    method17(v12)
and closure16 (v0 : int32) () : unit =
    let v1 : US0 = US0_0
    let v2 : bool = method6(v1)
    if v2 then
        let v3 : unit = ()
        let v4 : (unit -> unit) = closure0()
        let v5 : unit = (fun () -> v4 (); v3) ()
        let struct (v19 : Mut0, v20 : Mut1, v21 : Mut2, v22 : Mut3, v23 : Mut4, v24 : int64 option) = TraceState.trace_state.Value
        let v37 : string = method7(v19, v20, v21, v22, v23, v24)
        let v38 : string = method11()
        let v39 : string = method23(v19, v20, v21, v22, v23, v24, v37, v38, v0)
        method18(v39)
and method25 () : string =
    
    
    
    
    
    let v0 : string = "Critical"
    let v1 : (unit -> string) = v0.ToLower
    let v2 : string = v1 ()
    let v5 : char = v2.[int 0]
    let v6 : string = method12(v5)
    let v7 : unit = ()
    
#if FABLE_COMPILER || WASM || CONTRACT
    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
    let v8 : string = "inline_colorization::color_bright_red"
    let v9 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v8 
    let v10 : unit = ()
    
#if FABLE_COMPILER || WASM || CONTRACT
    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
    let v11 : string = "&*$0"
    let v12 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr v6 v11 
    let _v10 = v12 
    #endif
#if FABLE_COMPILER_RUST && WASM
    let v13 : string = "&*$0"
    let v14 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr v6 v13 
    let _v10 = v14 
    #endif
#if FABLE_COMPILER_RUST && CONTRACT
    let v15 : string = "&*$0"
    let v16 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr v6 v15 
    let _v10 = v16 
    #endif
#if FABLE_COMPILER_TYPESCRIPT
    let v17 : Ref<Str> = v6 |> unbox<Ref<Str>>
    let _v10 = v17 
    #endif
#if FABLE_COMPILER_PYTHON
    let v20 : Ref<Str> = v6 |> unbox<Ref<Str>>
    let _v10 = v20 
    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
    let v23 : Ref<Str> = v6 |> unbox<Ref<Str>>
    let _v10 = v23 
    #endif
#else
    let v26 : Ref<Str> = v6 |> unbox<Ref<Str>>
    let _v10 = v26 
    #endif
    let v29 : Ref<Str> = _v10 
    let v34 : string = "inline_colorization::color_reset"
    let v35 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v34 
    let v36 : string = $"format!(\"{{}}{{}}{{}}\", $0, $1, $2)"
    let v37 : std_string_String = Fable.Core.RustInterop.emitRustExpr struct (v9, v29, v35) v36 
    let v38 : string = "fable_library_rust::String_::fromString($0)"
    let v39 : string = Fable.Core.RustInterop.emitRustExpr v37 v38 
    let _v7 = v39 
    #endif
#if FABLE_COMPILER_RUST && WASM
    let v40 : string = "inline_colorization::color_bright_red"
    let v41 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v40 
    let v42 : unit = ()
    
#if FABLE_COMPILER || WASM || CONTRACT
    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
    let v43 : string = "&*$0"
    let v44 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr v6 v43 
    let _v42 = v44 
    #endif
#if FABLE_COMPILER_RUST && WASM
    let v45 : string = "&*$0"
    let v46 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr v6 v45 
    let _v42 = v46 
    #endif
#if FABLE_COMPILER_RUST && CONTRACT
    let v47 : string = "&*$0"
    let v48 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr v6 v47 
    let _v42 = v48 
    #endif
#if FABLE_COMPILER_TYPESCRIPT
    let v49 : Ref<Str> = v6 |> unbox<Ref<Str>>
    let _v42 = v49 
    #endif
#if FABLE_COMPILER_PYTHON
    let v52 : Ref<Str> = v6 |> unbox<Ref<Str>>
    let _v42 = v52 
    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
    let v55 : Ref<Str> = v6 |> unbox<Ref<Str>>
    let _v42 = v55 
    #endif
#else
    let v58 : Ref<Str> = v6 |> unbox<Ref<Str>>
    let _v42 = v58 
    #endif
    let v61 : Ref<Str> = _v42 
    let v66 : string = "inline_colorization::color_reset"
    let v67 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v66 
    let v68 : string = $"format!(\"{{}}{{}}{{}}\", $0, $1, $2)"
    let v69 : std_string_String = Fable.Core.RustInterop.emitRustExpr struct (v41, v61, v67) v68 
    let v70 : string = "fable_library_rust::String_::fromString($0)"
    let v71 : string = Fable.Core.RustInterop.emitRustExpr v69 v70 
    let _v7 = v71 
    #endif
#if FABLE_COMPILER_RUST && CONTRACT
    let v72 : string = "inline_colorization::color_bright_red"
    let v73 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v72 
    let v74 : unit = ()
    
#if FABLE_COMPILER || WASM || CONTRACT
    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
    let v75 : string = "&*$0"
    let v76 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr v6 v75 
    let _v74 = v76 
    #endif
#if FABLE_COMPILER_RUST && WASM
    let v77 : string = "&*$0"
    let v78 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr v6 v77 
    let _v74 = v78 
    #endif
#if FABLE_COMPILER_RUST && CONTRACT
    let v79 : string = "&*$0"
    let v80 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr v6 v79 
    let _v74 = v80 
    #endif
#if FABLE_COMPILER_TYPESCRIPT
    let v81 : Ref<Str> = v6 |> unbox<Ref<Str>>
    let _v74 = v81 
    #endif
#if FABLE_COMPILER_PYTHON
    let v84 : Ref<Str> = v6 |> unbox<Ref<Str>>
    let _v74 = v84 
    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
    let v87 : Ref<Str> = v6 |> unbox<Ref<Str>>
    let _v74 = v87 
    #endif
#else
    let v90 : Ref<Str> = v6 |> unbox<Ref<Str>>
    let _v74 = v90 
    #endif
    let v93 : Ref<Str> = _v74 
    let v98 : string = "inline_colorization::color_reset"
    let v99 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v98 
    let v100 : string = $"format!(\"{{}}{{}}{{}}\", $0, $1, $2)"
    let v101 : std_string_String = Fable.Core.RustInterop.emitRustExpr struct (v73, v93, v99) v100 
    let v102 : string = "fable_library_rust::String_::fromString($0)"
    let v103 : string = Fable.Core.RustInterop.emitRustExpr v101 v102 
    let _v7 = v103 
    #endif
#if FABLE_COMPILER_TYPESCRIPT
    let v104 : string = "\u001b[91m"
    let v105 : string = method14()
    let v106 : string = v104 + v6 
    let v107 : string = v106 + v105 
    let _v7 = v107 
    #endif
#if FABLE_COMPILER_PYTHON
    let v108 : string = "\u001b[91m"
    let v109 : string = method14()
    let v110 : string = v108 + v6 
    let v111 : string = v110 + v109 
    let _v7 = v111 
    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
    let v112 : string = "\u001b[91m"
    let v113 : string = method14()
    let v114 : string = v112 + v6 
    let v115 : string = v114 + v113 
    let _v7 = v115 
    #endif
#else
    let v116 : string = "\u001b[91m"
    let v117 : string = method14()
    let v118 : string = v116 + v6 
    let v119 : string = v118 + v117 
    let _v7 = v119 
    #endif
    let v120 : string = _v7 
    v120
and method27 (v0 : int32, v1 : string) : string =
    let v2 : string = method13()
    let v3 : Mut3 = {l0 = v2} : Mut3
    let v4 : string = "{ "
    let v5 : string = $"{v4}"
    let v8 : unit = ()
    let v9 : (unit -> unit) = closure7(v3, v5)
    let v10 : unit = (fun () -> v9 (); v8) ()
    let v13 : string = "timeout"
    let v14 : string = $"{v13}"
    let v17 : unit = ()
    let v18 : (unit -> unit) = closure7(v3, v14)
    let v19 : unit = (fun () -> v18 (); v17) ()
    let v22 : string = " = "
    let v23 : string = $"{v22}"
    let v26 : unit = ()
    let v27 : (unit -> unit) = closure7(v3, v23)
    let v28 : unit = (fun () -> v27 (); v26) ()
    let v31 : string = $"{v0}"
    let v34 : unit = ()
    let v35 : (unit -> unit) = closure7(v3, v31)
    let v36 : unit = (fun () -> v35 (); v34) ()
    let v39 : string = "; "
    let v40 : string = $"{v39}"
    let v43 : unit = ()
    let v44 : (unit -> unit) = closure7(v3, v40)
    let v45 : unit = (fun () -> v44 (); v43) ()
    let v48 : string = "ex"
    let v49 : string = $"{v48}"
    let v52 : unit = ()
    let v53 : (unit -> unit) = closure7(v3, v49)
    let v54 : unit = (fun () -> v53 (); v52) ()
    let v57 : string = $"{v22}"
    let v60 : unit = ()
    let v61 : (unit -> unit) = closure7(v3, v57)
    let v62 : unit = (fun () -> v61 (); v60) ()
    let v65 : string = $"{v1}"
    let v68 : unit = ()
    let v69 : (unit -> unit) = closure7(v3, v65)
    let v70 : unit = (fun () -> v69 (); v68) ()
    let v73 : string = " }"
    let v74 : string = $"{v73}"
    let v77 : unit = ()
    let v78 : (unit -> unit) = closure7(v3, v74)
    let v79 : unit = (fun () -> v78 (); v77) ()
    let v82 : string = v3.l0
    v82
and method26 (v0 : Mut0, v1 : Mut1, v2 : Mut2, v3 : Mut3, v4 : Mut4, v5 : int64 option, v6 : string, v7 : string, v8 : int32, v9 : string) : string =
    let v10 : string = method27(v8, v9)
    let v11 : int64 = v0.l0
    let v12 : string = "async.run_with_timeout_async**"
    let v13 : string = $"{v6} {v7} #{v11} %s{v12} / {v10}"
    method17(v13)
and closure17 (v0 : int32, v1 : exn) () : unit =
    let v2 : US0 = US0_4
    let v3 : bool = method6(v2)
    if v3 then
        let v4 : unit = ()
        let v5 : (unit -> unit) = closure0()
        let v6 : unit = (fun () -> v5 (); v4) ()
        let struct (v20 : Mut0, v21 : Mut1, v22 : Mut2, v23 : Mut3, v24 : Mut4, v25 : int64 option) = TraceState.trace_state.Value
        let v38 : string = method7(v20, v21, v22, v23, v24, v25)
        let v39 : string = method25()
        let v40 : unit = ()
        
#if FABLE_COMPILER || WASM || CONTRACT
        
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
        let v41 : string = $"%A{v1}"
        let _v40 = v41 
        #endif
#if FABLE_COMPILER_RUST && WASM
        let v44 : string = $"%A{v1}"
        let _v40 = v44 
        #endif
#if FABLE_COMPILER_RUST && CONTRACT
        let v47 : string = $"%A{v1}"
        let _v40 = v47 
        #endif
#if FABLE_COMPILER_TYPESCRIPT
        let v50 : string = $"%A{v1}"
        let _v40 = v50 
        #endif
#if FABLE_COMPILER_PYTHON
        let v53 : string = $"%A{v1}"
        let _v40 = v53 
        #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
        let v56 : string = $"%A{v1}"
        let _v40 = v56 
        #endif
#else
        let v59 : string = $"{v1.GetType ()}: {v1.Message}"
        let _v40 = v59 
        #endif
        let v60 : string = _v40 
        let v65 : string = method26(v20, v21, v22, v23, v24, v25, v38, v39, v0, v60)
        method18(v65)
and method20 (v0 : int32, v1 : Async<bool>) : Async<US6> =
    let v2 : unit = ()
    
#if FABLE_COMPILER || WASM || CONTRACT
    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
    let v3 : unit = ()
    
#if FABLE_COMPILER || WASM || CONTRACT
    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
    let v4 : Async<US6> = null |> unbox<Async<US6>>
    let _v3 = v4 
    #endif
#if FABLE_COMPILER_RUST && WASM
    let v7 : Async<US6> = null |> unbox<Async<US6>>
    let _v3 = v7 
    #endif
#if FABLE_COMPILER_RUST && CONTRACT
    let v10 : Async<US6> = null |> unbox<Async<US6>>
    let _v3 = v10 
    #endif
#if FABLE_COMPILER_TYPESCRIPT
    let v13 : unit = ()
    let _v13 =
        async {
            let v14 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v15 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v14 = v15 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v16 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v14 = v16 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v17 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v14 = v17 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v18 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v14 = v18 
            #endif
#if FABLE_COMPILER_PYTHON
            let v19 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v14 = v19 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v20 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v14 = v20 
            #endif
#else
            let v21 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v14 = v21 
            #endif
            let v22 : Async<Async<bool>> = _v14 
            let! v22 = v22 
            let v27 : Async<bool> = v22 
            let v28 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v29 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v30 : Async<Choice<bool, exn>> = v29 v27
            let _v28 = v30 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v31 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v32 : Async<Choice<bool, exn>> = v31 v27
            let _v28 = v32 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v33 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v34 : Async<Choice<bool, exn>> = v33 v27
            let _v28 = v34 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v35 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v36 : Async<Choice<bool, exn>> = v35 v27
            let _v28 = v36 
            #endif
#if FABLE_COMPILER_PYTHON
            let v37 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v38 : Async<Choice<bool, exn>> = v37 v27
            let _v28 = v38 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v39 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v40 : Async<Choice<bool, exn>> = v39 v27
            let _v28 = v40 
            #endif
#else
            let v41 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v42 : Async<Choice<bool, exn>> = v41 v27
            let _v28 = v42 
            #endif
            let v43 : Async<Choice<bool, exn>> = _v28 
            let v48 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v49 : Async<US7> = null |> unbox<Async<US7>>
            let _v48 = v49 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v52 : Async<US7> = null |> unbox<Async<US7>>
            let _v48 = v52 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v55 : Async<US7> = null |> unbox<Async<US7>>
            let _v48 = v55 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v58 : unit = ()
            let _v58 =
                async {
                    let! v43 = v43 
                    let v59 : Choice<bool, exn> = v43 
                    let v60 : unit = ()
                    
#if FABLE_COMPILER || WASM || CONTRACT
                    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                    let v61 : US7 = null |> unbox<US7>
                    let _v60 = v61 
                    #endif
#if FABLE_COMPILER_RUST && WASM
                    let v64 : US7 = null |> unbox<US7>
                    let _v60 = v64 
                    #endif
#if FABLE_COMPILER_RUST && CONTRACT
                    let v67 : US7 = null |> unbox<US7>
                    let _v60 = v67 
                    #endif
#if FABLE_COMPILER_TYPESCRIPT
                    let v70 : US7 = null |> unbox<US7>
                    let _v60 = v70 
                    #endif
#if FABLE_COMPILER_PYTHON
                    let v73 : US7 = null |> unbox<US7>
                    let _v60 = v73 
                    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                    let v76 : (bool -> US7) = method21()
                    let v77 : (exn -> US7) = method22()
                    let v78 : US7 = match v59 with Choice1Of2 x -> v76 x | Choice2Of2 x -> v77 x
                    let _v60 = v78 
                    #endif
#else
                    let v79 : (bool -> US7) = method21()
                    let v80 : (exn -> US7) = method22()
                    let v81 : US7 = match v59 with Choice1Of2 x -> v79 x | Choice2Of2 x -> v80 x
                    let _v60 = v81 
                    #endif
                    let v82 : US7 = _v60 
                    return v82 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v87 : Async<US7> = _v58 
            let _v48 = v87 
            #endif
#if FABLE_COMPILER_PYTHON
            let v88 : unit = ()
            let _v88 =
                async {
                    let! v43 = v43 
                    let v89 : Choice<bool, exn> = v43 
                    let v90 : unit = ()
                    
#if FABLE_COMPILER || WASM || CONTRACT
                    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                    let v91 : US7 = null |> unbox<US7>
                    let _v90 = v91 
                    #endif
#if FABLE_COMPILER_RUST && WASM
                    let v94 : US7 = null |> unbox<US7>
                    let _v90 = v94 
                    #endif
#if FABLE_COMPILER_RUST && CONTRACT
                    let v97 : US7 = null |> unbox<US7>
                    let _v90 = v97 
                    #endif
#if FABLE_COMPILER_TYPESCRIPT
                    let v100 : US7 = null |> unbox<US7>
                    let _v90 = v100 
                    #endif
#if FABLE_COMPILER_PYTHON
                    let v103 : US7 = null |> unbox<US7>
                    let _v90 = v103 
                    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                    let v106 : (bool -> US7) = method21()
                    let v107 : (exn -> US7) = method22()
                    let v108 : US7 = match v89 with Choice1Of2 x -> v106 x | Choice2Of2 x -> v107 x
                    let _v90 = v108 
                    #endif
#else
                    let v109 : (bool -> US7) = method21()
                    let v110 : (exn -> US7) = method22()
                    let v111 : US7 = match v89 with Choice1Of2 x -> v109 x | Choice2Of2 x -> v110 x
                    let _v90 = v111 
                    #endif
                    let v112 : US7 = _v90 
                    return v112 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v117 : Async<US7> = _v88 
            let _v48 = v117 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v118 : unit = ()
            let _v118 =
                async {
                    let! v43 = v43 
                    let v119 : Choice<bool, exn> = v43 
                    let v120 : unit = ()
                    
#if FABLE_COMPILER || WASM || CONTRACT
                    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                    let v121 : US7 = null |> unbox<US7>
                    let _v120 = v121 
                    #endif
#if FABLE_COMPILER_RUST && WASM
                    let v124 : US7 = null |> unbox<US7>
                    let _v120 = v124 
                    #endif
#if FABLE_COMPILER_RUST && CONTRACT
                    let v127 : US7 = null |> unbox<US7>
                    let _v120 = v127 
                    #endif
#if FABLE_COMPILER_TYPESCRIPT
                    let v130 : US7 = null |> unbox<US7>
                    let _v120 = v130 
                    #endif
#if FABLE_COMPILER_PYTHON
                    let v133 : US7 = null |> unbox<US7>
                    let _v120 = v133 
                    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                    let v136 : (bool -> US7) = method21()
                    let v137 : (exn -> US7) = method22()
                    let v138 : US7 = match v119 with Choice1Of2 x -> v136 x | Choice2Of2 x -> v137 x
                    let _v120 = v138 
                    #endif
#else
                    let v139 : (bool -> US7) = method21()
                    let v140 : (exn -> US7) = method22()
                    let v141 : US7 = match v119 with Choice1Of2 x -> v139 x | Choice2Of2 x -> v140 x
                    let _v120 = v141 
                    #endif
                    let v142 : US7 = _v120 
                    return v142 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v147 : Async<US7> = _v118 
            let _v48 = v147 
            #endif
#else
            let v148 : unit = ()
            let _v148 =
                async {
                    let! v43 = v43 
                    let v149 : Choice<bool, exn> = v43 
                    let v150 : unit = ()
                    
#if FABLE_COMPILER || WASM || CONTRACT
                    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                    let v151 : US7 = null |> unbox<US7>
                    let _v150 = v151 
                    #endif
#if FABLE_COMPILER_RUST && WASM
                    let v154 : US7 = null |> unbox<US7>
                    let _v150 = v154 
                    #endif
#if FABLE_COMPILER_RUST && CONTRACT
                    let v157 : US7 = null |> unbox<US7>
                    let _v150 = v157 
                    #endif
#if FABLE_COMPILER_TYPESCRIPT
                    let v160 : US7 = null |> unbox<US7>
                    let _v150 = v160 
                    #endif
#if FABLE_COMPILER_PYTHON
                    let v163 : US7 = null |> unbox<US7>
                    let _v150 = v163 
                    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                    let v166 : (bool -> US7) = method21()
                    let v167 : (exn -> US7) = method22()
                    let v168 : US7 = match v149 with Choice1Of2 x -> v166 x | Choice2Of2 x -> v167 x
                    let _v150 = v168 
                    #endif
#else
                    let v169 : (bool -> US7) = method21()
                    let v170 : (exn -> US7) = method22()
                    let v171 : US7 = match v149 with Choice1Of2 x -> v169 x | Choice2Of2 x -> v170 x
                    let _v150 = v171 
                    #endif
                    let v172 : US7 = _v150 
                    return v172 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v177 : Async<US7> = _v148 
            let _v48 = v177 
            #endif
            let v178 : Async<US7> = _v48 
            let v183 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v184 : Async<US8> = null |> unbox<Async<US8>>
            let _v183 = v184 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v187 : Async<US8> = null |> unbox<Async<US8>>
            let _v183 = v187 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v190 : Async<US8> = null |> unbox<Async<US8>>
            let _v183 = v190 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v193 : unit = ()
            let _v193 =
                async {
                    let! v178 = v178 
                    let v194 : US7 = v178 
                    let v200 : US8 =
                        match v194 with
                        | US7_0(v195) -> (* C1of2 *)
                            US8_0(v195)
                        | US7_1(v197) -> (* C2of2 *)
                            US8_1(v197)
                    return v200 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v201 : Async<US8> = _v193 
            let _v183 = v201 
            #endif
#if FABLE_COMPILER_PYTHON
            let v202 : unit = ()
            let _v202 =
                async {
                    let! v178 = v178 
                    let v203 : US7 = v178 
                    let v209 : US8 =
                        match v203 with
                        | US7_0(v204) -> (* C1of2 *)
                            US8_0(v204)
                        | US7_1(v206) -> (* C2of2 *)
                            US8_1(v206)
                    return v209 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v210 : Async<US8> = _v202 
            let _v183 = v210 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v211 : unit = ()
            let _v211 =
                async {
                    let! v178 = v178 
                    let v212 : US7 = v178 
                    let v218 : US8 =
                        match v212 with
                        | US7_0(v213) -> (* C1of2 *)
                            US8_0(v213)
                        | US7_1(v215) -> (* C2of2 *)
                            US8_1(v215)
                    return v218 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v219 : Async<US8> = _v211 
            let _v183 = v219 
            #endif
#else
            let v220 : unit = ()
            let _v220 =
                async {
                    let! v178 = v178 
                    let v221 : US7 = v178 
                    let v227 : US8 =
                        match v221 with
                        | US7_0(v222) -> (* C1of2 *)
                            US8_0(v222)
                        | US7_1(v224) -> (* C2of2 *)
                            US8_1(v224)
                    return v227 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v228 : Async<US8> = _v220 
            let _v183 = v228 
            #endif
            let v229 : Async<US8> = _v183 
            let v234 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v235 : Async<US6> = null |> unbox<Async<US6>>
            let _v234 = v235 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v238 : Async<US6> = null |> unbox<Async<US6>>
            let _v234 = v238 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v241 : Async<US6> = null |> unbox<Async<US6>>
            let _v234 = v241 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v244 : unit = ()
            let _v244 =
                async {
                    let! v229 = v229 
                    let v245 : US8 = v229 
                    let v369 : US6 =
                        match v245 with
                        | US8_1(v248) -> (* Error *)
                            let v249 : string = $"%A{v248}"
                            let v252 : string = "System.TimeoutException"
                            let v253 : bool = v249.Contains v252 
                            if v253 then
                                let v256 : unit = ()
                                let v257 : (unit -> unit) = closure16(v0)
                                let v258 : unit = (fun () -> v257 (); v256) ()
                                US6_1
                            else
                                let v299 : unit = ()
                                let v300 : (unit -> unit) = closure17(v0, v248)
                                let v301 : unit = (fun () -> v300 (); v299) ()
                                US6_1
                        | US8_0(v246) -> (* Ok *)
                            US6_0(v246)
                    return v369 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v370 : Async<US6> = _v244 
            let _v234 = v370 
            #endif
#if FABLE_COMPILER_PYTHON
            let v371 : unit = ()
            let _v371 =
                async {
                    let! v229 = v229 
                    let v372 : US8 = v229 
                    let v496 : US6 =
                        match v372 with
                        | US8_1(v375) -> (* Error *)
                            let v376 : string = $"%A{v375}"
                            let v379 : string = "System.TimeoutException"
                            let v380 : bool = v376.Contains v379 
                            if v380 then
                                let v383 : unit = ()
                                let v384 : (unit -> unit) = closure16(v0)
                                let v385 : unit = (fun () -> v384 (); v383) ()
                                US6_1
                            else
                                let v426 : unit = ()
                                let v427 : (unit -> unit) = closure17(v0, v375)
                                let v428 : unit = (fun () -> v427 (); v426) ()
                                US6_1
                        | US8_0(v373) -> (* Ok *)
                            US6_0(v373)
                    return v496 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v497 : Async<US6> = _v371 
            let _v234 = v497 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v498 : unit = ()
            let _v498 =
                async {
                    let! v229 = v229 
                    let v499 : US8 = v229 
                    let v623 : US6 =
                        match v499 with
                        | US8_1(v502) -> (* Error *)
                            let v503 : string = $"%A{v502}"
                            let v506 : string = "System.TimeoutException"
                            let v507 : bool = v503.Contains v506 
                            if v507 then
                                let v510 : unit = ()
                                let v511 : (unit -> unit) = closure16(v0)
                                let v512 : unit = (fun () -> v511 (); v510) ()
                                US6_1
                            else
                                let v553 : unit = ()
                                let v554 : (unit -> unit) = closure17(v0, v502)
                                let v555 : unit = (fun () -> v554 (); v553) ()
                                US6_1
                        | US8_0(v500) -> (* Ok *)
                            US6_0(v500)
                    return v623 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v624 : Async<US6> = _v498 
            let _v234 = v624 
            #endif
#else
            let v625 : unit = ()
            let _v625 =
                async {
                    let! v229 = v229 
                    let v626 : US8 = v229 
                    let v750 : US6 =
                        match v626 with
                        | US8_1(v629) -> (* Error *)
                            let v630 : string = $"%A{v629}"
                            let v633 : string = "System.TimeoutException"
                            let v634 : bool = v630.Contains v633 
                            if v634 then
                                let v637 : unit = ()
                                let v638 : (unit -> unit) = closure16(v0)
                                let v639 : unit = (fun () -> v638 (); v637) ()
                                US6_1
                            else
                                let v680 : unit = ()
                                let v681 : (unit -> unit) = closure17(v0, v629)
                                let v682 : unit = (fun () -> v681 (); v680) ()
                                US6_1
                        | US8_0(v627) -> (* Ok *)
                            US6_0(v627)
                    return v750 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v751 : Async<US6> = _v625 
            let _v234 = v751 
            #endif
            let v752 : Async<US6> = _v234 
            return! v752 
            (*
            ()
        *)
        }
        (*
        ()
    *)
    let v757 : Async<US6> = _v13 
    let _v3 = v757 
    #endif
#if FABLE_COMPILER_PYTHON
    let v758 : unit = ()
    let _v758 =
        async {
            let v759 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v760 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v759 = v760 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v761 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v759 = v761 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v762 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v759 = v762 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v763 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v759 = v763 
            #endif
#if FABLE_COMPILER_PYTHON
            let v764 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v759 = v764 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v765 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v759 = v765 
            #endif
#else
            let v766 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v759 = v766 
            #endif
            let v767 : Async<Async<bool>> = _v759 
            let! v767 = v767 
            let v772 : Async<bool> = v767 
            let v773 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v774 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v775 : Async<Choice<bool, exn>> = v774 v772
            let _v773 = v775 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v776 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v777 : Async<Choice<bool, exn>> = v776 v772
            let _v773 = v777 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v778 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v779 : Async<Choice<bool, exn>> = v778 v772
            let _v773 = v779 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v780 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v781 : Async<Choice<bool, exn>> = v780 v772
            let _v773 = v781 
            #endif
#if FABLE_COMPILER_PYTHON
            let v782 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v783 : Async<Choice<bool, exn>> = v782 v772
            let _v773 = v783 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v784 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v785 : Async<Choice<bool, exn>> = v784 v772
            let _v773 = v785 
            #endif
#else
            let v786 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v787 : Async<Choice<bool, exn>> = v786 v772
            let _v773 = v787 
            #endif
            let v788 : Async<Choice<bool, exn>> = _v773 
            let v793 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v794 : Async<US7> = null |> unbox<Async<US7>>
            let _v793 = v794 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v797 : Async<US7> = null |> unbox<Async<US7>>
            let _v793 = v797 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v800 : Async<US7> = null |> unbox<Async<US7>>
            let _v793 = v800 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v803 : unit = ()
            let _v803 =
                async {
                    let! v788 = v788 
                    let v804 : Choice<bool, exn> = v788 
                    let v805 : unit = ()
                    
#if FABLE_COMPILER || WASM || CONTRACT
                    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                    let v806 : US7 = null |> unbox<US7>
                    let _v805 = v806 
                    #endif
#if FABLE_COMPILER_RUST && WASM
                    let v809 : US7 = null |> unbox<US7>
                    let _v805 = v809 
                    #endif
#if FABLE_COMPILER_RUST && CONTRACT
                    let v812 : US7 = null |> unbox<US7>
                    let _v805 = v812 
                    #endif
#if FABLE_COMPILER_TYPESCRIPT
                    let v815 : US7 = null |> unbox<US7>
                    let _v805 = v815 
                    #endif
#if FABLE_COMPILER_PYTHON
                    let v818 : US7 = null |> unbox<US7>
                    let _v805 = v818 
                    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                    let v821 : (bool -> US7) = method21()
                    let v822 : (exn -> US7) = method22()
                    let v823 : US7 = match v804 with Choice1Of2 x -> v821 x | Choice2Of2 x -> v822 x
                    let _v805 = v823 
                    #endif
#else
                    let v824 : (bool -> US7) = method21()
                    let v825 : (exn -> US7) = method22()
                    let v826 : US7 = match v804 with Choice1Of2 x -> v824 x | Choice2Of2 x -> v825 x
                    let _v805 = v826 
                    #endif
                    let v827 : US7 = _v805 
                    return v827 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v832 : Async<US7> = _v803 
            let _v793 = v832 
            #endif
#if FABLE_COMPILER_PYTHON
            let v833 : unit = ()
            let _v833 =
                async {
                    let! v788 = v788 
                    let v834 : Choice<bool, exn> = v788 
                    let v835 : unit = ()
                    
#if FABLE_COMPILER || WASM || CONTRACT
                    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                    let v836 : US7 = null |> unbox<US7>
                    let _v835 = v836 
                    #endif
#if FABLE_COMPILER_RUST && WASM
                    let v839 : US7 = null |> unbox<US7>
                    let _v835 = v839 
                    #endif
#if FABLE_COMPILER_RUST && CONTRACT
                    let v842 : US7 = null |> unbox<US7>
                    let _v835 = v842 
                    #endif
#if FABLE_COMPILER_TYPESCRIPT
                    let v845 : US7 = null |> unbox<US7>
                    let _v835 = v845 
                    #endif
#if FABLE_COMPILER_PYTHON
                    let v848 : US7 = null |> unbox<US7>
                    let _v835 = v848 
                    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                    let v851 : (bool -> US7) = method21()
                    let v852 : (exn -> US7) = method22()
                    let v853 : US7 = match v834 with Choice1Of2 x -> v851 x | Choice2Of2 x -> v852 x
                    let _v835 = v853 
                    #endif
#else
                    let v854 : (bool -> US7) = method21()
                    let v855 : (exn -> US7) = method22()
                    let v856 : US7 = match v834 with Choice1Of2 x -> v854 x | Choice2Of2 x -> v855 x
                    let _v835 = v856 
                    #endif
                    let v857 : US7 = _v835 
                    return v857 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v862 : Async<US7> = _v833 
            let _v793 = v862 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v863 : unit = ()
            let _v863 =
                async {
                    let! v788 = v788 
                    let v864 : Choice<bool, exn> = v788 
                    let v865 : unit = ()
                    
#if FABLE_COMPILER || WASM || CONTRACT
                    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                    let v866 : US7 = null |> unbox<US7>
                    let _v865 = v866 
                    #endif
#if FABLE_COMPILER_RUST && WASM
                    let v869 : US7 = null |> unbox<US7>
                    let _v865 = v869 
                    #endif
#if FABLE_COMPILER_RUST && CONTRACT
                    let v872 : US7 = null |> unbox<US7>
                    let _v865 = v872 
                    #endif
#if FABLE_COMPILER_TYPESCRIPT
                    let v875 : US7 = null |> unbox<US7>
                    let _v865 = v875 
                    #endif
#if FABLE_COMPILER_PYTHON
                    let v878 : US7 = null |> unbox<US7>
                    let _v865 = v878 
                    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                    let v881 : (bool -> US7) = method21()
                    let v882 : (exn -> US7) = method22()
                    let v883 : US7 = match v864 with Choice1Of2 x -> v881 x | Choice2Of2 x -> v882 x
                    let _v865 = v883 
                    #endif
#else
                    let v884 : (bool -> US7) = method21()
                    let v885 : (exn -> US7) = method22()
                    let v886 : US7 = match v864 with Choice1Of2 x -> v884 x | Choice2Of2 x -> v885 x
                    let _v865 = v886 
                    #endif
                    let v887 : US7 = _v865 
                    return v887 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v892 : Async<US7> = _v863 
            let _v793 = v892 
            #endif
#else
            let v893 : unit = ()
            let _v893 =
                async {
                    let! v788 = v788 
                    let v894 : Choice<bool, exn> = v788 
                    let v895 : unit = ()
                    
#if FABLE_COMPILER || WASM || CONTRACT
                    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                    let v896 : US7 = null |> unbox<US7>
                    let _v895 = v896 
                    #endif
#if FABLE_COMPILER_RUST && WASM
                    let v899 : US7 = null |> unbox<US7>
                    let _v895 = v899 
                    #endif
#if FABLE_COMPILER_RUST && CONTRACT
                    let v902 : US7 = null |> unbox<US7>
                    let _v895 = v902 
                    #endif
#if FABLE_COMPILER_TYPESCRIPT
                    let v905 : US7 = null |> unbox<US7>
                    let _v895 = v905 
                    #endif
#if FABLE_COMPILER_PYTHON
                    let v908 : US7 = null |> unbox<US7>
                    let _v895 = v908 
                    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                    let v911 : (bool -> US7) = method21()
                    let v912 : (exn -> US7) = method22()
                    let v913 : US7 = match v894 with Choice1Of2 x -> v911 x | Choice2Of2 x -> v912 x
                    let _v895 = v913 
                    #endif
#else
                    let v914 : (bool -> US7) = method21()
                    let v915 : (exn -> US7) = method22()
                    let v916 : US7 = match v894 with Choice1Of2 x -> v914 x | Choice2Of2 x -> v915 x
                    let _v895 = v916 
                    #endif
                    let v917 : US7 = _v895 
                    return v917 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v922 : Async<US7> = _v893 
            let _v793 = v922 
            #endif
            let v923 : Async<US7> = _v793 
            let v928 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v929 : Async<US8> = null |> unbox<Async<US8>>
            let _v928 = v929 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v932 : Async<US8> = null |> unbox<Async<US8>>
            let _v928 = v932 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v935 : Async<US8> = null |> unbox<Async<US8>>
            let _v928 = v935 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v938 : unit = ()
            let _v938 =
                async {
                    let! v923 = v923 
                    let v939 : US7 = v923 
                    let v945 : US8 =
                        match v939 with
                        | US7_0(v940) -> (* C1of2 *)
                            US8_0(v940)
                        | US7_1(v942) -> (* C2of2 *)
                            US8_1(v942)
                    return v945 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v946 : Async<US8> = _v938 
            let _v928 = v946 
            #endif
#if FABLE_COMPILER_PYTHON
            let v947 : unit = ()
            let _v947 =
                async {
                    let! v923 = v923 
                    let v948 : US7 = v923 
                    let v954 : US8 =
                        match v948 with
                        | US7_0(v949) -> (* C1of2 *)
                            US8_0(v949)
                        | US7_1(v951) -> (* C2of2 *)
                            US8_1(v951)
                    return v954 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v955 : Async<US8> = _v947 
            let _v928 = v955 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v956 : unit = ()
            let _v956 =
                async {
                    let! v923 = v923 
                    let v957 : US7 = v923 
                    let v963 : US8 =
                        match v957 with
                        | US7_0(v958) -> (* C1of2 *)
                            US8_0(v958)
                        | US7_1(v960) -> (* C2of2 *)
                            US8_1(v960)
                    return v963 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v964 : Async<US8> = _v956 
            let _v928 = v964 
            #endif
#else
            let v965 : unit = ()
            let _v965 =
                async {
                    let! v923 = v923 
                    let v966 : US7 = v923 
                    let v972 : US8 =
                        match v966 with
                        | US7_0(v967) -> (* C1of2 *)
                            US8_0(v967)
                        | US7_1(v969) -> (* C2of2 *)
                            US8_1(v969)
                    return v972 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v973 : Async<US8> = _v965 
            let _v928 = v973 
            #endif
            let v974 : Async<US8> = _v928 
            let v979 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v980 : Async<US6> = null |> unbox<Async<US6>>
            let _v979 = v980 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v983 : Async<US6> = null |> unbox<Async<US6>>
            let _v979 = v983 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v986 : Async<US6> = null |> unbox<Async<US6>>
            let _v979 = v986 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v989 : unit = ()
            let _v989 =
                async {
                    let! v974 = v974 
                    let v990 : US8 = v974 
                    let v1114 : US6 =
                        match v990 with
                        | US8_1(v993) -> (* Error *)
                            let v994 : string = $"%A{v993}"
                            let v997 : string = "System.TimeoutException"
                            let v998 : bool = v994.Contains v997 
                            if v998 then
                                let v1001 : unit = ()
                                let v1002 : (unit -> unit) = closure16(v0)
                                let v1003 : unit = (fun () -> v1002 (); v1001) ()
                                US6_1
                            else
                                let v1044 : unit = ()
                                let v1045 : (unit -> unit) = closure17(v0, v993)
                                let v1046 : unit = (fun () -> v1045 (); v1044) ()
                                US6_1
                        | US8_0(v991) -> (* Ok *)
                            US6_0(v991)
                    return v1114 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v1115 : Async<US6> = _v989 
            let _v979 = v1115 
            #endif
#if FABLE_COMPILER_PYTHON
            let v1116 : unit = ()
            let _v1116 =
                async {
                    let! v974 = v974 
                    let v1117 : US8 = v974 
                    let v1241 : US6 =
                        match v1117 with
                        | US8_1(v1120) -> (* Error *)
                            let v1121 : string = $"%A{v1120}"
                            let v1124 : string = "System.TimeoutException"
                            let v1125 : bool = v1121.Contains v1124 
                            if v1125 then
                                let v1128 : unit = ()
                                let v1129 : (unit -> unit) = closure16(v0)
                                let v1130 : unit = (fun () -> v1129 (); v1128) ()
                                US6_1
                            else
                                let v1171 : unit = ()
                                let v1172 : (unit -> unit) = closure17(v0, v1120)
                                let v1173 : unit = (fun () -> v1172 (); v1171) ()
                                US6_1
                        | US8_0(v1118) -> (* Ok *)
                            US6_0(v1118)
                    return v1241 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v1242 : Async<US6> = _v1116 
            let _v979 = v1242 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v1243 : unit = ()
            let _v1243 =
                async {
                    let! v974 = v974 
                    let v1244 : US8 = v974 
                    let v1368 : US6 =
                        match v1244 with
                        | US8_1(v1247) -> (* Error *)
                            let v1248 : string = $"%A{v1247}"
                            let v1251 : string = "System.TimeoutException"
                            let v1252 : bool = v1248.Contains v1251 
                            if v1252 then
                                let v1255 : unit = ()
                                let v1256 : (unit -> unit) = closure16(v0)
                                let v1257 : unit = (fun () -> v1256 (); v1255) ()
                                US6_1
                            else
                                let v1298 : unit = ()
                                let v1299 : (unit -> unit) = closure17(v0, v1247)
                                let v1300 : unit = (fun () -> v1299 (); v1298) ()
                                US6_1
                        | US8_0(v1245) -> (* Ok *)
                            US6_0(v1245)
                    return v1368 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v1369 : Async<US6> = _v1243 
            let _v979 = v1369 
            #endif
#else
            let v1370 : unit = ()
            let _v1370 =
                async {
                    let! v974 = v974 
                    let v1371 : US8 = v974 
                    let v1495 : US6 =
                        match v1371 with
                        | US8_1(v1374) -> (* Error *)
                            let v1375 : string = $"%A{v1374}"
                            let v1378 : string = "System.TimeoutException"
                            let v1379 : bool = v1375.Contains v1378 
                            if v1379 then
                                let v1382 : unit = ()
                                let v1383 : (unit -> unit) = closure16(v0)
                                let v1384 : unit = (fun () -> v1383 (); v1382) ()
                                US6_1
                            else
                                let v1425 : unit = ()
                                let v1426 : (unit -> unit) = closure17(v0, v1374)
                                let v1427 : unit = (fun () -> v1426 (); v1425) ()
                                US6_1
                        | US8_0(v1372) -> (* Ok *)
                            US6_0(v1372)
                    return v1495 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v1496 : Async<US6> = _v1370 
            let _v979 = v1496 
            #endif
            let v1497 : Async<US6> = _v979 
            return! v1497 
            (*
            ()
        *)
        }
        (*
        ()
    *)
    let v1502 : Async<US6> = _v758 
    let _v3 = v1502 
    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
    let v1503 : unit = ()
    let _v1503 =
        async {
            let v1504 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v1505 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v1504 = v1505 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v1506 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v1504 = v1506 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v1507 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v1504 = v1507 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v1508 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v1504 = v1508 
            #endif
#if FABLE_COMPILER_PYTHON
            let v1509 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v1504 = v1509 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v1510 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v1504 = v1510 
            #endif
#else
            let v1511 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v1504 = v1511 
            #endif
            let v1512 : Async<Async<bool>> = _v1504 
            let! v1512 = v1512 
            let v1517 : Async<bool> = v1512 
            let v1518 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v1519 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v1520 : Async<Choice<bool, exn>> = v1519 v1517
            let _v1518 = v1520 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v1521 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v1522 : Async<Choice<bool, exn>> = v1521 v1517
            let _v1518 = v1522 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v1523 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v1524 : Async<Choice<bool, exn>> = v1523 v1517
            let _v1518 = v1524 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v1525 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v1526 : Async<Choice<bool, exn>> = v1525 v1517
            let _v1518 = v1526 
            #endif
#if FABLE_COMPILER_PYTHON
            let v1527 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v1528 : Async<Choice<bool, exn>> = v1527 v1517
            let _v1518 = v1528 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v1529 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v1530 : Async<Choice<bool, exn>> = v1529 v1517
            let _v1518 = v1530 
            #endif
#else
            let v1531 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v1532 : Async<Choice<bool, exn>> = v1531 v1517
            let _v1518 = v1532 
            #endif
            let v1533 : Async<Choice<bool, exn>> = _v1518 
            let v1538 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v1539 : Async<US7> = null |> unbox<Async<US7>>
            let _v1538 = v1539 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v1542 : Async<US7> = null |> unbox<Async<US7>>
            let _v1538 = v1542 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v1545 : Async<US7> = null |> unbox<Async<US7>>
            let _v1538 = v1545 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v1548 : unit = ()
            let _v1548 =
                async {
                    let! v1533 = v1533 
                    let v1549 : Choice<bool, exn> = v1533 
                    let v1550 : unit = ()
                    
#if FABLE_COMPILER || WASM || CONTRACT
                    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                    let v1551 : US7 = null |> unbox<US7>
                    let _v1550 = v1551 
                    #endif
#if FABLE_COMPILER_RUST && WASM
                    let v1554 : US7 = null |> unbox<US7>
                    let _v1550 = v1554 
                    #endif
#if FABLE_COMPILER_RUST && CONTRACT
                    let v1557 : US7 = null |> unbox<US7>
                    let _v1550 = v1557 
                    #endif
#if FABLE_COMPILER_TYPESCRIPT
                    let v1560 : US7 = null |> unbox<US7>
                    let _v1550 = v1560 
                    #endif
#if FABLE_COMPILER_PYTHON
                    let v1563 : US7 = null |> unbox<US7>
                    let _v1550 = v1563 
                    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                    let v1566 : (bool -> US7) = method21()
                    let v1567 : (exn -> US7) = method22()
                    let v1568 : US7 = match v1549 with Choice1Of2 x -> v1566 x | Choice2Of2 x -> v1567 x
                    let _v1550 = v1568 
                    #endif
#else
                    let v1569 : (bool -> US7) = method21()
                    let v1570 : (exn -> US7) = method22()
                    let v1571 : US7 = match v1549 with Choice1Of2 x -> v1569 x | Choice2Of2 x -> v1570 x
                    let _v1550 = v1571 
                    #endif
                    let v1572 : US7 = _v1550 
                    return v1572 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v1577 : Async<US7> = _v1548 
            let _v1538 = v1577 
            #endif
#if FABLE_COMPILER_PYTHON
            let v1578 : unit = ()
            let _v1578 =
                async {
                    let! v1533 = v1533 
                    let v1579 : Choice<bool, exn> = v1533 
                    let v1580 : unit = ()
                    
#if FABLE_COMPILER || WASM || CONTRACT
                    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                    let v1581 : US7 = null |> unbox<US7>
                    let _v1580 = v1581 
                    #endif
#if FABLE_COMPILER_RUST && WASM
                    let v1584 : US7 = null |> unbox<US7>
                    let _v1580 = v1584 
                    #endif
#if FABLE_COMPILER_RUST && CONTRACT
                    let v1587 : US7 = null |> unbox<US7>
                    let _v1580 = v1587 
                    #endif
#if FABLE_COMPILER_TYPESCRIPT
                    let v1590 : US7 = null |> unbox<US7>
                    let _v1580 = v1590 
                    #endif
#if FABLE_COMPILER_PYTHON
                    let v1593 : US7 = null |> unbox<US7>
                    let _v1580 = v1593 
                    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                    let v1596 : (bool -> US7) = method21()
                    let v1597 : (exn -> US7) = method22()
                    let v1598 : US7 = match v1579 with Choice1Of2 x -> v1596 x | Choice2Of2 x -> v1597 x
                    let _v1580 = v1598 
                    #endif
#else
                    let v1599 : (bool -> US7) = method21()
                    let v1600 : (exn -> US7) = method22()
                    let v1601 : US7 = match v1579 with Choice1Of2 x -> v1599 x | Choice2Of2 x -> v1600 x
                    let _v1580 = v1601 
                    #endif
                    let v1602 : US7 = _v1580 
                    return v1602 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v1607 : Async<US7> = _v1578 
            let _v1538 = v1607 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v1608 : unit = ()
            let _v1608 =
                async {
                    let! v1533 = v1533 
                    let v1609 : Choice<bool, exn> = v1533 
                    let v1610 : unit = ()
                    
#if FABLE_COMPILER || WASM || CONTRACT
                    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                    let v1611 : US7 = null |> unbox<US7>
                    let _v1610 = v1611 
                    #endif
#if FABLE_COMPILER_RUST && WASM
                    let v1614 : US7 = null |> unbox<US7>
                    let _v1610 = v1614 
                    #endif
#if FABLE_COMPILER_RUST && CONTRACT
                    let v1617 : US7 = null |> unbox<US7>
                    let _v1610 = v1617 
                    #endif
#if FABLE_COMPILER_TYPESCRIPT
                    let v1620 : US7 = null |> unbox<US7>
                    let _v1610 = v1620 
                    #endif
#if FABLE_COMPILER_PYTHON
                    let v1623 : US7 = null |> unbox<US7>
                    let _v1610 = v1623 
                    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                    let v1626 : (bool -> US7) = method21()
                    let v1627 : (exn -> US7) = method22()
                    let v1628 : US7 = match v1609 with Choice1Of2 x -> v1626 x | Choice2Of2 x -> v1627 x
                    let _v1610 = v1628 
                    #endif
#else
                    let v1629 : (bool -> US7) = method21()
                    let v1630 : (exn -> US7) = method22()
                    let v1631 : US7 = match v1609 with Choice1Of2 x -> v1629 x | Choice2Of2 x -> v1630 x
                    let _v1610 = v1631 
                    #endif
                    let v1632 : US7 = _v1610 
                    return v1632 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v1637 : Async<US7> = _v1608 
            let _v1538 = v1637 
            #endif
#else
            let v1638 : unit = ()
            let _v1638 =
                async {
                    let! v1533 = v1533 
                    let v1639 : Choice<bool, exn> = v1533 
                    let v1640 : unit = ()
                    
#if FABLE_COMPILER || WASM || CONTRACT
                    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                    let v1641 : US7 = null |> unbox<US7>
                    let _v1640 = v1641 
                    #endif
#if FABLE_COMPILER_RUST && WASM
                    let v1644 : US7 = null |> unbox<US7>
                    let _v1640 = v1644 
                    #endif
#if FABLE_COMPILER_RUST && CONTRACT
                    let v1647 : US7 = null |> unbox<US7>
                    let _v1640 = v1647 
                    #endif
#if FABLE_COMPILER_TYPESCRIPT
                    let v1650 : US7 = null |> unbox<US7>
                    let _v1640 = v1650 
                    #endif
#if FABLE_COMPILER_PYTHON
                    let v1653 : US7 = null |> unbox<US7>
                    let _v1640 = v1653 
                    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                    let v1656 : (bool -> US7) = method21()
                    let v1657 : (exn -> US7) = method22()
                    let v1658 : US7 = match v1639 with Choice1Of2 x -> v1656 x | Choice2Of2 x -> v1657 x
                    let _v1640 = v1658 
                    #endif
#else
                    let v1659 : (bool -> US7) = method21()
                    let v1660 : (exn -> US7) = method22()
                    let v1661 : US7 = match v1639 with Choice1Of2 x -> v1659 x | Choice2Of2 x -> v1660 x
                    let _v1640 = v1661 
                    #endif
                    let v1662 : US7 = _v1640 
                    return v1662 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v1667 : Async<US7> = _v1638 
            let _v1538 = v1667 
            #endif
            let v1668 : Async<US7> = _v1538 
            let v1673 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v1674 : Async<US8> = null |> unbox<Async<US8>>
            let _v1673 = v1674 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v1677 : Async<US8> = null |> unbox<Async<US8>>
            let _v1673 = v1677 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v1680 : Async<US8> = null |> unbox<Async<US8>>
            let _v1673 = v1680 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v1683 : unit = ()
            let _v1683 =
                async {
                    let! v1668 = v1668 
                    let v1684 : US7 = v1668 
                    let v1690 : US8 =
                        match v1684 with
                        | US7_0(v1685) -> (* C1of2 *)
                            US8_0(v1685)
                        | US7_1(v1687) -> (* C2of2 *)
                            US8_1(v1687)
                    return v1690 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v1691 : Async<US8> = _v1683 
            let _v1673 = v1691 
            #endif
#if FABLE_COMPILER_PYTHON
            let v1692 : unit = ()
            let _v1692 =
                async {
                    let! v1668 = v1668 
                    let v1693 : US7 = v1668 
                    let v1699 : US8 =
                        match v1693 with
                        | US7_0(v1694) -> (* C1of2 *)
                            US8_0(v1694)
                        | US7_1(v1696) -> (* C2of2 *)
                            US8_1(v1696)
                    return v1699 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v1700 : Async<US8> = _v1692 
            let _v1673 = v1700 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v1701 : unit = ()
            let _v1701 =
                async {
                    let! v1668 = v1668 
                    let v1702 : US7 = v1668 
                    let v1708 : US8 =
                        match v1702 with
                        | US7_0(v1703) -> (* C1of2 *)
                            US8_0(v1703)
                        | US7_1(v1705) -> (* C2of2 *)
                            US8_1(v1705)
                    return v1708 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v1709 : Async<US8> = _v1701 
            let _v1673 = v1709 
            #endif
#else
            let v1710 : unit = ()
            let _v1710 =
                async {
                    let! v1668 = v1668 
                    let v1711 : US7 = v1668 
                    let v1717 : US8 =
                        match v1711 with
                        | US7_0(v1712) -> (* C1of2 *)
                            US8_0(v1712)
                        | US7_1(v1714) -> (* C2of2 *)
                            US8_1(v1714)
                    return v1717 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v1718 : Async<US8> = _v1710 
            let _v1673 = v1718 
            #endif
            let v1719 : Async<US8> = _v1673 
            let v1724 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v1725 : Async<US6> = null |> unbox<Async<US6>>
            let _v1724 = v1725 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v1728 : Async<US6> = null |> unbox<Async<US6>>
            let _v1724 = v1728 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v1731 : Async<US6> = null |> unbox<Async<US6>>
            let _v1724 = v1731 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v1734 : unit = ()
            let _v1734 =
                async {
                    let! v1719 = v1719 
                    let v1735 : US8 = v1719 
                    let v1859 : US6 =
                        match v1735 with
                        | US8_1(v1738) -> (* Error *)
                            let v1739 : string = $"%A{v1738}"
                            let v1742 : string = "System.TimeoutException"
                            let v1743 : bool = v1739.Contains v1742 
                            if v1743 then
                                let v1746 : unit = ()
                                let v1747 : (unit -> unit) = closure16(v0)
                                let v1748 : unit = (fun () -> v1747 (); v1746) ()
                                US6_1
                            else
                                let v1789 : unit = ()
                                let v1790 : (unit -> unit) = closure17(v0, v1738)
                                let v1791 : unit = (fun () -> v1790 (); v1789) ()
                                US6_1
                        | US8_0(v1736) -> (* Ok *)
                            US6_0(v1736)
                    return v1859 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v1860 : Async<US6> = _v1734 
            let _v1724 = v1860 
            #endif
#if FABLE_COMPILER_PYTHON
            let v1861 : unit = ()
            let _v1861 =
                async {
                    let! v1719 = v1719 
                    let v1862 : US8 = v1719 
                    let v1986 : US6 =
                        match v1862 with
                        | US8_1(v1865) -> (* Error *)
                            let v1866 : string = $"%A{v1865}"
                            let v1869 : string = "System.TimeoutException"
                            let v1870 : bool = v1866.Contains v1869 
                            if v1870 then
                                let v1873 : unit = ()
                                let v1874 : (unit -> unit) = closure16(v0)
                                let v1875 : unit = (fun () -> v1874 (); v1873) ()
                                US6_1
                            else
                                let v1916 : unit = ()
                                let v1917 : (unit -> unit) = closure17(v0, v1865)
                                let v1918 : unit = (fun () -> v1917 (); v1916) ()
                                US6_1
                        | US8_0(v1863) -> (* Ok *)
                            US6_0(v1863)
                    return v1986 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v1987 : Async<US6> = _v1861 
            let _v1724 = v1987 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v1988 : unit = ()
            let _v1988 =
                async {
                    let! v1719 = v1719 
                    let v1989 : US8 = v1719 
                    let v2113 : US6 =
                        match v1989 with
                        | US8_1(v1992) -> (* Error *)
                            let v1993 : string = $"%A{v1992}"
                            let v1996 : string = "System.TimeoutException"
                            let v1997 : bool = v1993.Contains v1996 
                            if v1997 then
                                let v2000 : unit = ()
                                let v2001 : (unit -> unit) = closure16(v0)
                                let v2002 : unit = (fun () -> v2001 (); v2000) ()
                                US6_1
                            else
                                let v2043 : unit = ()
                                let v2044 : (unit -> unit) = closure17(v0, v1992)
                                let v2045 : unit = (fun () -> v2044 (); v2043) ()
                                US6_1
                        | US8_0(v1990) -> (* Ok *)
                            US6_0(v1990)
                    return v2113 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v2114 : Async<US6> = _v1988 
            let _v1724 = v2114 
            #endif
#else
            let v2115 : unit = ()
            let _v2115 =
                async {
                    let! v1719 = v1719 
                    let v2116 : US8 = v1719 
                    let v2240 : US6 =
                        match v2116 with
                        | US8_1(v2119) -> (* Error *)
                            let v2120 : string = $"%A{v2119}"
                            let v2123 : string = "System.TimeoutException"
                            let v2124 : bool = v2120.Contains v2123 
                            if v2124 then
                                let v2127 : unit = ()
                                let v2128 : (unit -> unit) = closure16(v0)
                                let v2129 : unit = (fun () -> v2128 (); v2127) ()
                                US6_1
                            else
                                let v2170 : unit = ()
                                let v2171 : (unit -> unit) = closure17(v0, v2119)
                                let v2172 : unit = (fun () -> v2171 (); v2170) ()
                                US6_1
                        | US8_0(v2117) -> (* Ok *)
                            US6_0(v2117)
                    return v2240 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v2241 : Async<US6> = _v2115 
            let _v1724 = v2241 
            #endif
            let v2242 : Async<US6> = _v1724 
            return! v2242 
            (*
            ()
        *)
        }
        (*
        ()
    *)
    let v2247 : Async<US6> = _v1503 
    let _v3 = v2247 
    #endif
#else
    let v2248 : unit = ()
    let _v2248 =
        async {
            let v2249 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v2250 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v2249 = v2250 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v2251 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v2249 = v2251 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v2252 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v2249 = v2252 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v2253 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v2249 = v2253 
            #endif
#if FABLE_COMPILER_PYTHON
            let v2254 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v2249 = v2254 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v2255 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v2249 = v2255 
            #endif
#else
            let v2256 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v2249 = v2256 
            #endif
            let v2257 : Async<Async<bool>> = _v2249 
            let! v2257 = v2257 
            let v2262 : Async<bool> = v2257 
            let v2263 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v2264 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v2265 : Async<Choice<bool, exn>> = v2264 v2262
            let _v2263 = v2265 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v2266 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v2267 : Async<Choice<bool, exn>> = v2266 v2262
            let _v2263 = v2267 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v2268 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v2269 : Async<Choice<bool, exn>> = v2268 v2262
            let _v2263 = v2269 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v2270 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v2271 : Async<Choice<bool, exn>> = v2270 v2262
            let _v2263 = v2271 
            #endif
#if FABLE_COMPILER_PYTHON
            let v2272 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v2273 : Async<Choice<bool, exn>> = v2272 v2262
            let _v2263 = v2273 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v2274 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v2275 : Async<Choice<bool, exn>> = v2274 v2262
            let _v2263 = v2275 
            #endif
#else
            let v2276 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v2277 : Async<Choice<bool, exn>> = v2276 v2262
            let _v2263 = v2277 
            #endif
            let v2278 : Async<Choice<bool, exn>> = _v2263 
            let v2283 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v2284 : Async<US7> = null |> unbox<Async<US7>>
            let _v2283 = v2284 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v2287 : Async<US7> = null |> unbox<Async<US7>>
            let _v2283 = v2287 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v2290 : Async<US7> = null |> unbox<Async<US7>>
            let _v2283 = v2290 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v2293 : unit = ()
            let _v2293 =
                async {
                    let! v2278 = v2278 
                    let v2294 : Choice<bool, exn> = v2278 
                    let v2295 : unit = ()
                    
#if FABLE_COMPILER || WASM || CONTRACT
                    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                    let v2296 : US7 = null |> unbox<US7>
                    let _v2295 = v2296 
                    #endif
#if FABLE_COMPILER_RUST && WASM
                    let v2299 : US7 = null |> unbox<US7>
                    let _v2295 = v2299 
                    #endif
#if FABLE_COMPILER_RUST && CONTRACT
                    let v2302 : US7 = null |> unbox<US7>
                    let _v2295 = v2302 
                    #endif
#if FABLE_COMPILER_TYPESCRIPT
                    let v2305 : US7 = null |> unbox<US7>
                    let _v2295 = v2305 
                    #endif
#if FABLE_COMPILER_PYTHON
                    let v2308 : US7 = null |> unbox<US7>
                    let _v2295 = v2308 
                    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                    let v2311 : (bool -> US7) = method21()
                    let v2312 : (exn -> US7) = method22()
                    let v2313 : US7 = match v2294 with Choice1Of2 x -> v2311 x | Choice2Of2 x -> v2312 x
                    let _v2295 = v2313 
                    #endif
#else
                    let v2314 : (bool -> US7) = method21()
                    let v2315 : (exn -> US7) = method22()
                    let v2316 : US7 = match v2294 with Choice1Of2 x -> v2314 x | Choice2Of2 x -> v2315 x
                    let _v2295 = v2316 
                    #endif
                    let v2317 : US7 = _v2295 
                    return v2317 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v2322 : Async<US7> = _v2293 
            let _v2283 = v2322 
            #endif
#if FABLE_COMPILER_PYTHON
            let v2323 : unit = ()
            let _v2323 =
                async {
                    let! v2278 = v2278 
                    let v2324 : Choice<bool, exn> = v2278 
                    let v2325 : unit = ()
                    
#if FABLE_COMPILER || WASM || CONTRACT
                    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                    let v2326 : US7 = null |> unbox<US7>
                    let _v2325 = v2326 
                    #endif
#if FABLE_COMPILER_RUST && WASM
                    let v2329 : US7 = null |> unbox<US7>
                    let _v2325 = v2329 
                    #endif
#if FABLE_COMPILER_RUST && CONTRACT
                    let v2332 : US7 = null |> unbox<US7>
                    let _v2325 = v2332 
                    #endif
#if FABLE_COMPILER_TYPESCRIPT
                    let v2335 : US7 = null |> unbox<US7>
                    let _v2325 = v2335 
                    #endif
#if FABLE_COMPILER_PYTHON
                    let v2338 : US7 = null |> unbox<US7>
                    let _v2325 = v2338 
                    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                    let v2341 : (bool -> US7) = method21()
                    let v2342 : (exn -> US7) = method22()
                    let v2343 : US7 = match v2324 with Choice1Of2 x -> v2341 x | Choice2Of2 x -> v2342 x
                    let _v2325 = v2343 
                    #endif
#else
                    let v2344 : (bool -> US7) = method21()
                    let v2345 : (exn -> US7) = method22()
                    let v2346 : US7 = match v2324 with Choice1Of2 x -> v2344 x | Choice2Of2 x -> v2345 x
                    let _v2325 = v2346 
                    #endif
                    let v2347 : US7 = _v2325 
                    return v2347 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v2352 : Async<US7> = _v2323 
            let _v2283 = v2352 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v2353 : unit = ()
            let _v2353 =
                async {
                    let! v2278 = v2278 
                    let v2354 : Choice<bool, exn> = v2278 
                    let v2355 : unit = ()
                    
#if FABLE_COMPILER || WASM || CONTRACT
                    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                    let v2356 : US7 = null |> unbox<US7>
                    let _v2355 = v2356 
                    #endif
#if FABLE_COMPILER_RUST && WASM
                    let v2359 : US7 = null |> unbox<US7>
                    let _v2355 = v2359 
                    #endif
#if FABLE_COMPILER_RUST && CONTRACT
                    let v2362 : US7 = null |> unbox<US7>
                    let _v2355 = v2362 
                    #endif
#if FABLE_COMPILER_TYPESCRIPT
                    let v2365 : US7 = null |> unbox<US7>
                    let _v2355 = v2365 
                    #endif
#if FABLE_COMPILER_PYTHON
                    let v2368 : US7 = null |> unbox<US7>
                    let _v2355 = v2368 
                    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                    let v2371 : (bool -> US7) = method21()
                    let v2372 : (exn -> US7) = method22()
                    let v2373 : US7 = match v2354 with Choice1Of2 x -> v2371 x | Choice2Of2 x -> v2372 x
                    let _v2355 = v2373 
                    #endif
#else
                    let v2374 : (bool -> US7) = method21()
                    let v2375 : (exn -> US7) = method22()
                    let v2376 : US7 = match v2354 with Choice1Of2 x -> v2374 x | Choice2Of2 x -> v2375 x
                    let _v2355 = v2376 
                    #endif
                    let v2377 : US7 = _v2355 
                    return v2377 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v2382 : Async<US7> = _v2353 
            let _v2283 = v2382 
            #endif
#else
            let v2383 : unit = ()
            let _v2383 =
                async {
                    let! v2278 = v2278 
                    let v2384 : Choice<bool, exn> = v2278 
                    let v2385 : unit = ()
                    
#if FABLE_COMPILER || WASM || CONTRACT
                    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                    let v2386 : US7 = null |> unbox<US7>
                    let _v2385 = v2386 
                    #endif
#if FABLE_COMPILER_RUST && WASM
                    let v2389 : US7 = null |> unbox<US7>
                    let _v2385 = v2389 
                    #endif
#if FABLE_COMPILER_RUST && CONTRACT
                    let v2392 : US7 = null |> unbox<US7>
                    let _v2385 = v2392 
                    #endif
#if FABLE_COMPILER_TYPESCRIPT
                    let v2395 : US7 = null |> unbox<US7>
                    let _v2385 = v2395 
                    #endif
#if FABLE_COMPILER_PYTHON
                    let v2398 : US7 = null |> unbox<US7>
                    let _v2385 = v2398 
                    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                    let v2401 : (bool -> US7) = method21()
                    let v2402 : (exn -> US7) = method22()
                    let v2403 : US7 = match v2384 with Choice1Of2 x -> v2401 x | Choice2Of2 x -> v2402 x
                    let _v2385 = v2403 
                    #endif
#else
                    let v2404 : (bool -> US7) = method21()
                    let v2405 : (exn -> US7) = method22()
                    let v2406 : US7 = match v2384 with Choice1Of2 x -> v2404 x | Choice2Of2 x -> v2405 x
                    let _v2385 = v2406 
                    #endif
                    let v2407 : US7 = _v2385 
                    return v2407 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v2412 : Async<US7> = _v2383 
            let _v2283 = v2412 
            #endif
            let v2413 : Async<US7> = _v2283 
            let v2418 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v2419 : Async<US8> = null |> unbox<Async<US8>>
            let _v2418 = v2419 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v2422 : Async<US8> = null |> unbox<Async<US8>>
            let _v2418 = v2422 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v2425 : Async<US8> = null |> unbox<Async<US8>>
            let _v2418 = v2425 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v2428 : unit = ()
            let _v2428 =
                async {
                    let! v2413 = v2413 
                    let v2429 : US7 = v2413 
                    let v2435 : US8 =
                        match v2429 with
                        | US7_0(v2430) -> (* C1of2 *)
                            US8_0(v2430)
                        | US7_1(v2432) -> (* C2of2 *)
                            US8_1(v2432)
                    return v2435 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v2436 : Async<US8> = _v2428 
            let _v2418 = v2436 
            #endif
#if FABLE_COMPILER_PYTHON
            let v2437 : unit = ()
            let _v2437 =
                async {
                    let! v2413 = v2413 
                    let v2438 : US7 = v2413 
                    let v2444 : US8 =
                        match v2438 with
                        | US7_0(v2439) -> (* C1of2 *)
                            US8_0(v2439)
                        | US7_1(v2441) -> (* C2of2 *)
                            US8_1(v2441)
                    return v2444 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v2445 : Async<US8> = _v2437 
            let _v2418 = v2445 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v2446 : unit = ()
            let _v2446 =
                async {
                    let! v2413 = v2413 
                    let v2447 : US7 = v2413 
                    let v2453 : US8 =
                        match v2447 with
                        | US7_0(v2448) -> (* C1of2 *)
                            US8_0(v2448)
                        | US7_1(v2450) -> (* C2of2 *)
                            US8_1(v2450)
                    return v2453 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v2454 : Async<US8> = _v2446 
            let _v2418 = v2454 
            #endif
#else
            let v2455 : unit = ()
            let _v2455 =
                async {
                    let! v2413 = v2413 
                    let v2456 : US7 = v2413 
                    let v2462 : US8 =
                        match v2456 with
                        | US7_0(v2457) -> (* C1of2 *)
                            US8_0(v2457)
                        | US7_1(v2459) -> (* C2of2 *)
                            US8_1(v2459)
                    return v2462 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v2463 : Async<US8> = _v2455 
            let _v2418 = v2463 
            #endif
            let v2464 : Async<US8> = _v2418 
            let v2469 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v2470 : Async<US6> = null |> unbox<Async<US6>>
            let _v2469 = v2470 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v2473 : Async<US6> = null |> unbox<Async<US6>>
            let _v2469 = v2473 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v2476 : Async<US6> = null |> unbox<Async<US6>>
            let _v2469 = v2476 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v2479 : unit = ()
            let _v2479 =
                async {
                    let! v2464 = v2464 
                    let v2480 : US8 = v2464 
                    let v2604 : US6 =
                        match v2480 with
                        | US8_1(v2483) -> (* Error *)
                            let v2484 : string = $"%A{v2483}"
                            let v2487 : string = "System.TimeoutException"
                            let v2488 : bool = v2484.Contains v2487 
                            if v2488 then
                                let v2491 : unit = ()
                                let v2492 : (unit -> unit) = closure16(v0)
                                let v2493 : unit = (fun () -> v2492 (); v2491) ()
                                US6_1
                            else
                                let v2534 : unit = ()
                                let v2535 : (unit -> unit) = closure17(v0, v2483)
                                let v2536 : unit = (fun () -> v2535 (); v2534) ()
                                US6_1
                        | US8_0(v2481) -> (* Ok *)
                            US6_0(v2481)
                    return v2604 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v2605 : Async<US6> = _v2479 
            let _v2469 = v2605 
            #endif
#if FABLE_COMPILER_PYTHON
            let v2606 : unit = ()
            let _v2606 =
                async {
                    let! v2464 = v2464 
                    let v2607 : US8 = v2464 
                    let v2731 : US6 =
                        match v2607 with
                        | US8_1(v2610) -> (* Error *)
                            let v2611 : string = $"%A{v2610}"
                            let v2614 : string = "System.TimeoutException"
                            let v2615 : bool = v2611.Contains v2614 
                            if v2615 then
                                let v2618 : unit = ()
                                let v2619 : (unit -> unit) = closure16(v0)
                                let v2620 : unit = (fun () -> v2619 (); v2618) ()
                                US6_1
                            else
                                let v2661 : unit = ()
                                let v2662 : (unit -> unit) = closure17(v0, v2610)
                                let v2663 : unit = (fun () -> v2662 (); v2661) ()
                                US6_1
                        | US8_0(v2608) -> (* Ok *)
                            US6_0(v2608)
                    return v2731 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v2732 : Async<US6> = _v2606 
            let _v2469 = v2732 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v2733 : unit = ()
            let _v2733 =
                async {
                    let! v2464 = v2464 
                    let v2734 : US8 = v2464 
                    let v2858 : US6 =
                        match v2734 with
                        | US8_1(v2737) -> (* Error *)
                            let v2738 : string = $"%A{v2737}"
                            let v2741 : string = "System.TimeoutException"
                            let v2742 : bool = v2738.Contains v2741 
                            if v2742 then
                                let v2745 : unit = ()
                                let v2746 : (unit -> unit) = closure16(v0)
                                let v2747 : unit = (fun () -> v2746 (); v2745) ()
                                US6_1
                            else
                                let v2788 : unit = ()
                                let v2789 : (unit -> unit) = closure17(v0, v2737)
                                let v2790 : unit = (fun () -> v2789 (); v2788) ()
                                US6_1
                        | US8_0(v2735) -> (* Ok *)
                            US6_0(v2735)
                    return v2858 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v2859 : Async<US6> = _v2733 
            let _v2469 = v2859 
            #endif
#else
            let v2860 : unit = ()
            let _v2860 =
                async {
                    let! v2464 = v2464 
                    let v2861 : US8 = v2464 
                    let v2985 : US6 =
                        match v2861 with
                        | US8_1(v2864) -> (* Error *)
                            let v2865 : string = $"%A{v2864}"
                            let v2868 : string = "System.TimeoutException"
                            let v2869 : bool = v2865.Contains v2868 
                            if v2869 then
                                let v2872 : unit = ()
                                let v2873 : (unit -> unit) = closure16(v0)
                                let v2874 : unit = (fun () -> v2873 (); v2872) ()
                                US6_1
                            else
                                let v2915 : unit = ()
                                let v2916 : (unit -> unit) = closure17(v0, v2864)
                                let v2917 : unit = (fun () -> v2916 (); v2915) ()
                                US6_1
                        | US8_0(v2862) -> (* Ok *)
                            US6_0(v2862)
                    return v2985 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v2986 : Async<US6> = _v2860 
            let _v2469 = v2986 
            #endif
            let v2987 : Async<US6> = _v2469 
            return! v2987 
            (*
            ()
        *)
        }
        (*
        ()
    *)
    let v2992 : Async<US6> = _v2248 
    let _v3 = v2992 
    #endif
    let v2993 : Async<US6> = _v3 
    let _v2 = v2993 
    #endif
#if FABLE_COMPILER_RUST && WASM
    let v2998 : unit = ()
    
#if FABLE_COMPILER || WASM || CONTRACT
    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
    let v2999 : Async<US6> = null |> unbox<Async<US6>>
    let _v2998 = v2999 
    #endif
#if FABLE_COMPILER_RUST && WASM
    let v3002 : Async<US6> = null |> unbox<Async<US6>>
    let _v2998 = v3002 
    #endif
#if FABLE_COMPILER_RUST && CONTRACT
    let v3005 : Async<US6> = null |> unbox<Async<US6>>
    let _v2998 = v3005 
    #endif
#if FABLE_COMPILER_TYPESCRIPT
    let v3008 : unit = ()
    let _v3008 =
        async {
            let v3009 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v3010 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v3009 = v3010 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v3011 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v3009 = v3011 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v3012 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v3009 = v3012 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v3013 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v3009 = v3013 
            #endif
#if FABLE_COMPILER_PYTHON
            let v3014 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v3009 = v3014 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v3015 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v3009 = v3015 
            #endif
#else
            let v3016 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v3009 = v3016 
            #endif
            let v3017 : Async<Async<bool>> = _v3009 
            let! v3017 = v3017 
            let v3022 : Async<bool> = v3017 
            let v3023 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v3024 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v3025 : Async<Choice<bool, exn>> = v3024 v3022
            let _v3023 = v3025 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v3026 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v3027 : Async<Choice<bool, exn>> = v3026 v3022
            let _v3023 = v3027 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v3028 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v3029 : Async<Choice<bool, exn>> = v3028 v3022
            let _v3023 = v3029 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v3030 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v3031 : Async<Choice<bool, exn>> = v3030 v3022
            let _v3023 = v3031 
            #endif
#if FABLE_COMPILER_PYTHON
            let v3032 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v3033 : Async<Choice<bool, exn>> = v3032 v3022
            let _v3023 = v3033 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v3034 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v3035 : Async<Choice<bool, exn>> = v3034 v3022
            let _v3023 = v3035 
            #endif
#else
            let v3036 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v3037 : Async<Choice<bool, exn>> = v3036 v3022
            let _v3023 = v3037 
            #endif
            let v3038 : Async<Choice<bool, exn>> = _v3023 
            let v3043 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v3044 : Async<US7> = null |> unbox<Async<US7>>
            let _v3043 = v3044 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v3047 : Async<US7> = null |> unbox<Async<US7>>
            let _v3043 = v3047 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v3050 : Async<US7> = null |> unbox<Async<US7>>
            let _v3043 = v3050 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v3053 : unit = ()
            let _v3053 =
                async {
                    let! v3038 = v3038 
                    let v3054 : Choice<bool, exn> = v3038 
                    let v3055 : unit = ()
                    
#if FABLE_COMPILER || WASM || CONTRACT
                    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                    let v3056 : US7 = null |> unbox<US7>
                    let _v3055 = v3056 
                    #endif
#if FABLE_COMPILER_RUST && WASM
                    let v3059 : US7 = null |> unbox<US7>
                    let _v3055 = v3059 
                    #endif
#if FABLE_COMPILER_RUST && CONTRACT
                    let v3062 : US7 = null |> unbox<US7>
                    let _v3055 = v3062 
                    #endif
#if FABLE_COMPILER_TYPESCRIPT
                    let v3065 : US7 = null |> unbox<US7>
                    let _v3055 = v3065 
                    #endif
#if FABLE_COMPILER_PYTHON
                    let v3068 : US7 = null |> unbox<US7>
                    let _v3055 = v3068 
                    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                    let v3071 : (bool -> US7) = method21()
                    let v3072 : (exn -> US7) = method22()
                    let v3073 : US7 = match v3054 with Choice1Of2 x -> v3071 x | Choice2Of2 x -> v3072 x
                    let _v3055 = v3073 
                    #endif
#else
                    let v3074 : (bool -> US7) = method21()
                    let v3075 : (exn -> US7) = method22()
                    let v3076 : US7 = match v3054 with Choice1Of2 x -> v3074 x | Choice2Of2 x -> v3075 x
                    let _v3055 = v3076 
                    #endif
                    let v3077 : US7 = _v3055 
                    return v3077 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v3082 : Async<US7> = _v3053 
            let _v3043 = v3082 
            #endif
#if FABLE_COMPILER_PYTHON
            let v3083 : unit = ()
            let _v3083 =
                async {
                    let! v3038 = v3038 
                    let v3084 : Choice<bool, exn> = v3038 
                    let v3085 : unit = ()
                    
#if FABLE_COMPILER || WASM || CONTRACT
                    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                    let v3086 : US7 = null |> unbox<US7>
                    let _v3085 = v3086 
                    #endif
#if FABLE_COMPILER_RUST && WASM
                    let v3089 : US7 = null |> unbox<US7>
                    let _v3085 = v3089 
                    #endif
#if FABLE_COMPILER_RUST && CONTRACT
                    let v3092 : US7 = null |> unbox<US7>
                    let _v3085 = v3092 
                    #endif
#if FABLE_COMPILER_TYPESCRIPT
                    let v3095 : US7 = null |> unbox<US7>
                    let _v3085 = v3095 
                    #endif
#if FABLE_COMPILER_PYTHON
                    let v3098 : US7 = null |> unbox<US7>
                    let _v3085 = v3098 
                    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                    let v3101 : (bool -> US7) = method21()
                    let v3102 : (exn -> US7) = method22()
                    let v3103 : US7 = match v3084 with Choice1Of2 x -> v3101 x | Choice2Of2 x -> v3102 x
                    let _v3085 = v3103 
                    #endif
#else
                    let v3104 : (bool -> US7) = method21()
                    let v3105 : (exn -> US7) = method22()
                    let v3106 : US7 = match v3084 with Choice1Of2 x -> v3104 x | Choice2Of2 x -> v3105 x
                    let _v3085 = v3106 
                    #endif
                    let v3107 : US7 = _v3085 
                    return v3107 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v3112 : Async<US7> = _v3083 
            let _v3043 = v3112 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v3113 : unit = ()
            let _v3113 =
                async {
                    let! v3038 = v3038 
                    let v3114 : Choice<bool, exn> = v3038 
                    let v3115 : unit = ()
                    
#if FABLE_COMPILER || WASM || CONTRACT
                    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                    let v3116 : US7 = null |> unbox<US7>
                    let _v3115 = v3116 
                    #endif
#if FABLE_COMPILER_RUST && WASM
                    let v3119 : US7 = null |> unbox<US7>
                    let _v3115 = v3119 
                    #endif
#if FABLE_COMPILER_RUST && CONTRACT
                    let v3122 : US7 = null |> unbox<US7>
                    let _v3115 = v3122 
                    #endif
#if FABLE_COMPILER_TYPESCRIPT
                    let v3125 : US7 = null |> unbox<US7>
                    let _v3115 = v3125 
                    #endif
#if FABLE_COMPILER_PYTHON
                    let v3128 : US7 = null |> unbox<US7>
                    let _v3115 = v3128 
                    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                    let v3131 : (bool -> US7) = method21()
                    let v3132 : (exn -> US7) = method22()
                    let v3133 : US7 = match v3114 with Choice1Of2 x -> v3131 x | Choice2Of2 x -> v3132 x
                    let _v3115 = v3133 
                    #endif
#else
                    let v3134 : (bool -> US7) = method21()
                    let v3135 : (exn -> US7) = method22()
                    let v3136 : US7 = match v3114 with Choice1Of2 x -> v3134 x | Choice2Of2 x -> v3135 x
                    let _v3115 = v3136 
                    #endif
                    let v3137 : US7 = _v3115 
                    return v3137 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v3142 : Async<US7> = _v3113 
            let _v3043 = v3142 
            #endif
#else
            let v3143 : unit = ()
            let _v3143 =
                async {
                    let! v3038 = v3038 
                    let v3144 : Choice<bool, exn> = v3038 
                    let v3145 : unit = ()
                    
#if FABLE_COMPILER || WASM || CONTRACT
                    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                    let v3146 : US7 = null |> unbox<US7>
                    let _v3145 = v3146 
                    #endif
#if FABLE_COMPILER_RUST && WASM
                    let v3149 : US7 = null |> unbox<US7>
                    let _v3145 = v3149 
                    #endif
#if FABLE_COMPILER_RUST && CONTRACT
                    let v3152 : US7 = null |> unbox<US7>
                    let _v3145 = v3152 
                    #endif
#if FABLE_COMPILER_TYPESCRIPT
                    let v3155 : US7 = null |> unbox<US7>
                    let _v3145 = v3155 
                    #endif
#if FABLE_COMPILER_PYTHON
                    let v3158 : US7 = null |> unbox<US7>
                    let _v3145 = v3158 
                    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                    let v3161 : (bool -> US7) = method21()
                    let v3162 : (exn -> US7) = method22()
                    let v3163 : US7 = match v3144 with Choice1Of2 x -> v3161 x | Choice2Of2 x -> v3162 x
                    let _v3145 = v3163 
                    #endif
#else
                    let v3164 : (bool -> US7) = method21()
                    let v3165 : (exn -> US7) = method22()
                    let v3166 : US7 = match v3144 with Choice1Of2 x -> v3164 x | Choice2Of2 x -> v3165 x
                    let _v3145 = v3166 
                    #endif
                    let v3167 : US7 = _v3145 
                    return v3167 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v3172 : Async<US7> = _v3143 
            let _v3043 = v3172 
            #endif
            let v3173 : Async<US7> = _v3043 
            let v3178 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v3179 : Async<US8> = null |> unbox<Async<US8>>
            let _v3178 = v3179 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v3182 : Async<US8> = null |> unbox<Async<US8>>
            let _v3178 = v3182 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v3185 : Async<US8> = null |> unbox<Async<US8>>
            let _v3178 = v3185 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v3188 : unit = ()
            let _v3188 =
                async {
                    let! v3173 = v3173 
                    let v3189 : US7 = v3173 
                    let v3195 : US8 =
                        match v3189 with
                        | US7_0(v3190) -> (* C1of2 *)
                            US8_0(v3190)
                        | US7_1(v3192) -> (* C2of2 *)
                            US8_1(v3192)
                    return v3195 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v3196 : Async<US8> = _v3188 
            let _v3178 = v3196 
            #endif
#if FABLE_COMPILER_PYTHON
            let v3197 : unit = ()
            let _v3197 =
                async {
                    let! v3173 = v3173 
                    let v3198 : US7 = v3173 
                    let v3204 : US8 =
                        match v3198 with
                        | US7_0(v3199) -> (* C1of2 *)
                            US8_0(v3199)
                        | US7_1(v3201) -> (* C2of2 *)
                            US8_1(v3201)
                    return v3204 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v3205 : Async<US8> = _v3197 
            let _v3178 = v3205 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v3206 : unit = ()
            let _v3206 =
                async {
                    let! v3173 = v3173 
                    let v3207 : US7 = v3173 
                    let v3213 : US8 =
                        match v3207 with
                        | US7_0(v3208) -> (* C1of2 *)
                            US8_0(v3208)
                        | US7_1(v3210) -> (* C2of2 *)
                            US8_1(v3210)
                    return v3213 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v3214 : Async<US8> = _v3206 
            let _v3178 = v3214 
            #endif
#else
            let v3215 : unit = ()
            let _v3215 =
                async {
                    let! v3173 = v3173 
                    let v3216 : US7 = v3173 
                    let v3222 : US8 =
                        match v3216 with
                        | US7_0(v3217) -> (* C1of2 *)
                            US8_0(v3217)
                        | US7_1(v3219) -> (* C2of2 *)
                            US8_1(v3219)
                    return v3222 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v3223 : Async<US8> = _v3215 
            let _v3178 = v3223 
            #endif
            let v3224 : Async<US8> = _v3178 
            let v3229 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v3230 : Async<US6> = null |> unbox<Async<US6>>
            let _v3229 = v3230 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v3233 : Async<US6> = null |> unbox<Async<US6>>
            let _v3229 = v3233 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v3236 : Async<US6> = null |> unbox<Async<US6>>
            let _v3229 = v3236 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v3239 : unit = ()
            let _v3239 =
                async {
                    let! v3224 = v3224 
                    let v3240 : US8 = v3224 
                    let v3364 : US6 =
                        match v3240 with
                        | US8_1(v3243) -> (* Error *)
                            let v3244 : string = $"%A{v3243}"
                            let v3247 : string = "System.TimeoutException"
                            let v3248 : bool = v3244.Contains v3247 
                            if v3248 then
                                let v3251 : unit = ()
                                let v3252 : (unit -> unit) = closure16(v0)
                                let v3253 : unit = (fun () -> v3252 (); v3251) ()
                                US6_1
                            else
                                let v3294 : unit = ()
                                let v3295 : (unit -> unit) = closure17(v0, v3243)
                                let v3296 : unit = (fun () -> v3295 (); v3294) ()
                                US6_1
                        | US8_0(v3241) -> (* Ok *)
                            US6_0(v3241)
                    return v3364 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v3365 : Async<US6> = _v3239 
            let _v3229 = v3365 
            #endif
#if FABLE_COMPILER_PYTHON
            let v3366 : unit = ()
            let _v3366 =
                async {
                    let! v3224 = v3224 
                    let v3367 : US8 = v3224 
                    let v3491 : US6 =
                        match v3367 with
                        | US8_1(v3370) -> (* Error *)
                            let v3371 : string = $"%A{v3370}"
                            let v3374 : string = "System.TimeoutException"
                            let v3375 : bool = v3371.Contains v3374 
                            if v3375 then
                                let v3378 : unit = ()
                                let v3379 : (unit -> unit) = closure16(v0)
                                let v3380 : unit = (fun () -> v3379 (); v3378) ()
                                US6_1
                            else
                                let v3421 : unit = ()
                                let v3422 : (unit -> unit) = closure17(v0, v3370)
                                let v3423 : unit = (fun () -> v3422 (); v3421) ()
                                US6_1
                        | US8_0(v3368) -> (* Ok *)
                            US6_0(v3368)
                    return v3491 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v3492 : Async<US6> = _v3366 
            let _v3229 = v3492 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v3493 : unit = ()
            let _v3493 =
                async {
                    let! v3224 = v3224 
                    let v3494 : US8 = v3224 
                    let v3618 : US6 =
                        match v3494 with
                        | US8_1(v3497) -> (* Error *)
                            let v3498 : string = $"%A{v3497}"
                            let v3501 : string = "System.TimeoutException"
                            let v3502 : bool = v3498.Contains v3501 
                            if v3502 then
                                let v3505 : unit = ()
                                let v3506 : (unit -> unit) = closure16(v0)
                                let v3507 : unit = (fun () -> v3506 (); v3505) ()
                                US6_1
                            else
                                let v3548 : unit = ()
                                let v3549 : (unit -> unit) = closure17(v0, v3497)
                                let v3550 : unit = (fun () -> v3549 (); v3548) ()
                                US6_1
                        | US8_0(v3495) -> (* Ok *)
                            US6_0(v3495)
                    return v3618 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v3619 : Async<US6> = _v3493 
            let _v3229 = v3619 
            #endif
#else
            let v3620 : unit = ()
            let _v3620 =
                async {
                    let! v3224 = v3224 
                    let v3621 : US8 = v3224 
                    let v3745 : US6 =
                        match v3621 with
                        | US8_1(v3624) -> (* Error *)
                            let v3625 : string = $"%A{v3624}"
                            let v3628 : string = "System.TimeoutException"
                            let v3629 : bool = v3625.Contains v3628 
                            if v3629 then
                                let v3632 : unit = ()
                                let v3633 : (unit -> unit) = closure16(v0)
                                let v3634 : unit = (fun () -> v3633 (); v3632) ()
                                US6_1
                            else
                                let v3675 : unit = ()
                                let v3676 : (unit -> unit) = closure17(v0, v3624)
                                let v3677 : unit = (fun () -> v3676 (); v3675) ()
                                US6_1
                        | US8_0(v3622) -> (* Ok *)
                            US6_0(v3622)
                    return v3745 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v3746 : Async<US6> = _v3620 
            let _v3229 = v3746 
            #endif
            let v3747 : Async<US6> = _v3229 
            return! v3747 
            (*
            ()
        *)
        }
        (*
        ()
    *)
    let v3752 : Async<US6> = _v3008 
    let _v2998 = v3752 
    #endif
#if FABLE_COMPILER_PYTHON
    let v3753 : unit = ()
    let _v3753 =
        async {
            let v3754 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v3755 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v3754 = v3755 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v3756 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v3754 = v3756 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v3757 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v3754 = v3757 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v3758 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v3754 = v3758 
            #endif
#if FABLE_COMPILER_PYTHON
            let v3759 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v3754 = v3759 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v3760 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v3754 = v3760 
            #endif
#else
            let v3761 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v3754 = v3761 
            #endif
            let v3762 : Async<Async<bool>> = _v3754 
            let! v3762 = v3762 
            let v3767 : Async<bool> = v3762 
            let v3768 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v3769 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v3770 : Async<Choice<bool, exn>> = v3769 v3767
            let _v3768 = v3770 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v3771 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v3772 : Async<Choice<bool, exn>> = v3771 v3767
            let _v3768 = v3772 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v3773 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v3774 : Async<Choice<bool, exn>> = v3773 v3767
            let _v3768 = v3774 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v3775 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v3776 : Async<Choice<bool, exn>> = v3775 v3767
            let _v3768 = v3776 
            #endif
#if FABLE_COMPILER_PYTHON
            let v3777 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v3778 : Async<Choice<bool, exn>> = v3777 v3767
            let _v3768 = v3778 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v3779 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v3780 : Async<Choice<bool, exn>> = v3779 v3767
            let _v3768 = v3780 
            #endif
#else
            let v3781 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v3782 : Async<Choice<bool, exn>> = v3781 v3767
            let _v3768 = v3782 
            #endif
            let v3783 : Async<Choice<bool, exn>> = _v3768 
            let v3788 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v3789 : Async<US7> = null |> unbox<Async<US7>>
            let _v3788 = v3789 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v3792 : Async<US7> = null |> unbox<Async<US7>>
            let _v3788 = v3792 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v3795 : Async<US7> = null |> unbox<Async<US7>>
            let _v3788 = v3795 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v3798 : unit = ()
            let _v3798 =
                async {
                    let! v3783 = v3783 
                    let v3799 : Choice<bool, exn> = v3783 
                    let v3800 : unit = ()
                    
#if FABLE_COMPILER || WASM || CONTRACT
                    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                    let v3801 : US7 = null |> unbox<US7>
                    let _v3800 = v3801 
                    #endif
#if FABLE_COMPILER_RUST && WASM
                    let v3804 : US7 = null |> unbox<US7>
                    let _v3800 = v3804 
                    #endif
#if FABLE_COMPILER_RUST && CONTRACT
                    let v3807 : US7 = null |> unbox<US7>
                    let _v3800 = v3807 
                    #endif
#if FABLE_COMPILER_TYPESCRIPT
                    let v3810 : US7 = null |> unbox<US7>
                    let _v3800 = v3810 
                    #endif
#if FABLE_COMPILER_PYTHON
                    let v3813 : US7 = null |> unbox<US7>
                    let _v3800 = v3813 
                    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                    let v3816 : (bool -> US7) = method21()
                    let v3817 : (exn -> US7) = method22()
                    let v3818 : US7 = match v3799 with Choice1Of2 x -> v3816 x | Choice2Of2 x -> v3817 x
                    let _v3800 = v3818 
                    #endif
#else
                    let v3819 : (bool -> US7) = method21()
                    let v3820 : (exn -> US7) = method22()
                    let v3821 : US7 = match v3799 with Choice1Of2 x -> v3819 x | Choice2Of2 x -> v3820 x
                    let _v3800 = v3821 
                    #endif
                    let v3822 : US7 = _v3800 
                    return v3822 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v3827 : Async<US7> = _v3798 
            let _v3788 = v3827 
            #endif
#if FABLE_COMPILER_PYTHON
            let v3828 : unit = ()
            let _v3828 =
                async {
                    let! v3783 = v3783 
                    let v3829 : Choice<bool, exn> = v3783 
                    let v3830 : unit = ()
                    
#if FABLE_COMPILER || WASM || CONTRACT
                    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                    let v3831 : US7 = null |> unbox<US7>
                    let _v3830 = v3831 
                    #endif
#if FABLE_COMPILER_RUST && WASM
                    let v3834 : US7 = null |> unbox<US7>
                    let _v3830 = v3834 
                    #endif
#if FABLE_COMPILER_RUST && CONTRACT
                    let v3837 : US7 = null |> unbox<US7>
                    let _v3830 = v3837 
                    #endif
#if FABLE_COMPILER_TYPESCRIPT
                    let v3840 : US7 = null |> unbox<US7>
                    let _v3830 = v3840 
                    #endif
#if FABLE_COMPILER_PYTHON
                    let v3843 : US7 = null |> unbox<US7>
                    let _v3830 = v3843 
                    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                    let v3846 : (bool -> US7) = method21()
                    let v3847 : (exn -> US7) = method22()
                    let v3848 : US7 = match v3829 with Choice1Of2 x -> v3846 x | Choice2Of2 x -> v3847 x
                    let _v3830 = v3848 
                    #endif
#else
                    let v3849 : (bool -> US7) = method21()
                    let v3850 : (exn -> US7) = method22()
                    let v3851 : US7 = match v3829 with Choice1Of2 x -> v3849 x | Choice2Of2 x -> v3850 x
                    let _v3830 = v3851 
                    #endif
                    let v3852 : US7 = _v3830 
                    return v3852 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v3857 : Async<US7> = _v3828 
            let _v3788 = v3857 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v3858 : unit = ()
            let _v3858 =
                async {
                    let! v3783 = v3783 
                    let v3859 : Choice<bool, exn> = v3783 
                    let v3860 : unit = ()
                    
#if FABLE_COMPILER || WASM || CONTRACT
                    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                    let v3861 : US7 = null |> unbox<US7>
                    let _v3860 = v3861 
                    #endif
#if FABLE_COMPILER_RUST && WASM
                    let v3864 : US7 = null |> unbox<US7>
                    let _v3860 = v3864 
                    #endif
#if FABLE_COMPILER_RUST && CONTRACT
                    let v3867 : US7 = null |> unbox<US7>
                    let _v3860 = v3867 
                    #endif
#if FABLE_COMPILER_TYPESCRIPT
                    let v3870 : US7 = null |> unbox<US7>
                    let _v3860 = v3870 
                    #endif
#if FABLE_COMPILER_PYTHON
                    let v3873 : US7 = null |> unbox<US7>
                    let _v3860 = v3873 
                    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                    let v3876 : (bool -> US7) = method21()
                    let v3877 : (exn -> US7) = method22()
                    let v3878 : US7 = match v3859 with Choice1Of2 x -> v3876 x | Choice2Of2 x -> v3877 x
                    let _v3860 = v3878 
                    #endif
#else
                    let v3879 : (bool -> US7) = method21()
                    let v3880 : (exn -> US7) = method22()
                    let v3881 : US7 = match v3859 with Choice1Of2 x -> v3879 x | Choice2Of2 x -> v3880 x
                    let _v3860 = v3881 
                    #endif
                    let v3882 : US7 = _v3860 
                    return v3882 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v3887 : Async<US7> = _v3858 
            let _v3788 = v3887 
            #endif
#else
            let v3888 : unit = ()
            let _v3888 =
                async {
                    let! v3783 = v3783 
                    let v3889 : Choice<bool, exn> = v3783 
                    let v3890 : unit = ()
                    
#if FABLE_COMPILER || WASM || CONTRACT
                    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                    let v3891 : US7 = null |> unbox<US7>
                    let _v3890 = v3891 
                    #endif
#if FABLE_COMPILER_RUST && WASM
                    let v3894 : US7 = null |> unbox<US7>
                    let _v3890 = v3894 
                    #endif
#if FABLE_COMPILER_RUST && CONTRACT
                    let v3897 : US7 = null |> unbox<US7>
                    let _v3890 = v3897 
                    #endif
#if FABLE_COMPILER_TYPESCRIPT
                    let v3900 : US7 = null |> unbox<US7>
                    let _v3890 = v3900 
                    #endif
#if FABLE_COMPILER_PYTHON
                    let v3903 : US7 = null |> unbox<US7>
                    let _v3890 = v3903 
                    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                    let v3906 : (bool -> US7) = method21()
                    let v3907 : (exn -> US7) = method22()
                    let v3908 : US7 = match v3889 with Choice1Of2 x -> v3906 x | Choice2Of2 x -> v3907 x
                    let _v3890 = v3908 
                    #endif
#else
                    let v3909 : (bool -> US7) = method21()
                    let v3910 : (exn -> US7) = method22()
                    let v3911 : US7 = match v3889 with Choice1Of2 x -> v3909 x | Choice2Of2 x -> v3910 x
                    let _v3890 = v3911 
                    #endif
                    let v3912 : US7 = _v3890 
                    return v3912 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v3917 : Async<US7> = _v3888 
            let _v3788 = v3917 
            #endif
            let v3918 : Async<US7> = _v3788 
            let v3923 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v3924 : Async<US8> = null |> unbox<Async<US8>>
            let _v3923 = v3924 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v3927 : Async<US8> = null |> unbox<Async<US8>>
            let _v3923 = v3927 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v3930 : Async<US8> = null |> unbox<Async<US8>>
            let _v3923 = v3930 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v3933 : unit = ()
            let _v3933 =
                async {
                    let! v3918 = v3918 
                    let v3934 : US7 = v3918 
                    let v3940 : US8 =
                        match v3934 with
                        | US7_0(v3935) -> (* C1of2 *)
                            US8_0(v3935)
                        | US7_1(v3937) -> (* C2of2 *)
                            US8_1(v3937)
                    return v3940 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v3941 : Async<US8> = _v3933 
            let _v3923 = v3941 
            #endif
#if FABLE_COMPILER_PYTHON
            let v3942 : unit = ()
            let _v3942 =
                async {
                    let! v3918 = v3918 
                    let v3943 : US7 = v3918 
                    let v3949 : US8 =
                        match v3943 with
                        | US7_0(v3944) -> (* C1of2 *)
                            US8_0(v3944)
                        | US7_1(v3946) -> (* C2of2 *)
                            US8_1(v3946)
                    return v3949 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v3950 : Async<US8> = _v3942 
            let _v3923 = v3950 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v3951 : unit = ()
            let _v3951 =
                async {
                    let! v3918 = v3918 
                    let v3952 : US7 = v3918 
                    let v3958 : US8 =
                        match v3952 with
                        | US7_0(v3953) -> (* C1of2 *)
                            US8_0(v3953)
                        | US7_1(v3955) -> (* C2of2 *)
                            US8_1(v3955)
                    return v3958 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v3959 : Async<US8> = _v3951 
            let _v3923 = v3959 
            #endif
#else
            let v3960 : unit = ()
            let _v3960 =
                async {
                    let! v3918 = v3918 
                    let v3961 : US7 = v3918 
                    let v3967 : US8 =
                        match v3961 with
                        | US7_0(v3962) -> (* C1of2 *)
                            US8_0(v3962)
                        | US7_1(v3964) -> (* C2of2 *)
                            US8_1(v3964)
                    return v3967 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v3968 : Async<US8> = _v3960 
            let _v3923 = v3968 
            #endif
            let v3969 : Async<US8> = _v3923 
            let v3974 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v3975 : Async<US6> = null |> unbox<Async<US6>>
            let _v3974 = v3975 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v3978 : Async<US6> = null |> unbox<Async<US6>>
            let _v3974 = v3978 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v3981 : Async<US6> = null |> unbox<Async<US6>>
            let _v3974 = v3981 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v3984 : unit = ()
            let _v3984 =
                async {
                    let! v3969 = v3969 
                    let v3985 : US8 = v3969 
                    let v4109 : US6 =
                        match v3985 with
                        | US8_1(v3988) -> (* Error *)
                            let v3989 : string = $"%A{v3988}"
                            let v3992 : string = "System.TimeoutException"
                            let v3993 : bool = v3989.Contains v3992 
                            if v3993 then
                                let v3996 : unit = ()
                                let v3997 : (unit -> unit) = closure16(v0)
                                let v3998 : unit = (fun () -> v3997 (); v3996) ()
                                US6_1
                            else
                                let v4039 : unit = ()
                                let v4040 : (unit -> unit) = closure17(v0, v3988)
                                let v4041 : unit = (fun () -> v4040 (); v4039) ()
                                US6_1
                        | US8_0(v3986) -> (* Ok *)
                            US6_0(v3986)
                    return v4109 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v4110 : Async<US6> = _v3984 
            let _v3974 = v4110 
            #endif
#if FABLE_COMPILER_PYTHON
            let v4111 : unit = ()
            let _v4111 =
                async {
                    let! v3969 = v3969 
                    let v4112 : US8 = v3969 
                    let v4236 : US6 =
                        match v4112 with
                        | US8_1(v4115) -> (* Error *)
                            let v4116 : string = $"%A{v4115}"
                            let v4119 : string = "System.TimeoutException"
                            let v4120 : bool = v4116.Contains v4119 
                            if v4120 then
                                let v4123 : unit = ()
                                let v4124 : (unit -> unit) = closure16(v0)
                                let v4125 : unit = (fun () -> v4124 (); v4123) ()
                                US6_1
                            else
                                let v4166 : unit = ()
                                let v4167 : (unit -> unit) = closure17(v0, v4115)
                                let v4168 : unit = (fun () -> v4167 (); v4166) ()
                                US6_1
                        | US8_0(v4113) -> (* Ok *)
                            US6_0(v4113)
                    return v4236 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v4237 : Async<US6> = _v4111 
            let _v3974 = v4237 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v4238 : unit = ()
            let _v4238 =
                async {
                    let! v3969 = v3969 
                    let v4239 : US8 = v3969 
                    let v4363 : US6 =
                        match v4239 with
                        | US8_1(v4242) -> (* Error *)
                            let v4243 : string = $"%A{v4242}"
                            let v4246 : string = "System.TimeoutException"
                            let v4247 : bool = v4243.Contains v4246 
                            if v4247 then
                                let v4250 : unit = ()
                                let v4251 : (unit -> unit) = closure16(v0)
                                let v4252 : unit = (fun () -> v4251 (); v4250) ()
                                US6_1
                            else
                                let v4293 : unit = ()
                                let v4294 : (unit -> unit) = closure17(v0, v4242)
                                let v4295 : unit = (fun () -> v4294 (); v4293) ()
                                US6_1
                        | US8_0(v4240) -> (* Ok *)
                            US6_0(v4240)
                    return v4363 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v4364 : Async<US6> = _v4238 
            let _v3974 = v4364 
            #endif
#else
            let v4365 : unit = ()
            let _v4365 =
                async {
                    let! v3969 = v3969 
                    let v4366 : US8 = v3969 
                    let v4490 : US6 =
                        match v4366 with
                        | US8_1(v4369) -> (* Error *)
                            let v4370 : string = $"%A{v4369}"
                            let v4373 : string = "System.TimeoutException"
                            let v4374 : bool = v4370.Contains v4373 
                            if v4374 then
                                let v4377 : unit = ()
                                let v4378 : (unit -> unit) = closure16(v0)
                                let v4379 : unit = (fun () -> v4378 (); v4377) ()
                                US6_1
                            else
                                let v4420 : unit = ()
                                let v4421 : (unit -> unit) = closure17(v0, v4369)
                                let v4422 : unit = (fun () -> v4421 (); v4420) ()
                                US6_1
                        | US8_0(v4367) -> (* Ok *)
                            US6_0(v4367)
                    return v4490 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v4491 : Async<US6> = _v4365 
            let _v3974 = v4491 
            #endif
            let v4492 : Async<US6> = _v3974 
            return! v4492 
            (*
            ()
        *)
        }
        (*
        ()
    *)
    let v4497 : Async<US6> = _v3753 
    let _v2998 = v4497 
    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
    let v4498 : unit = ()
    let _v4498 =
        async {
            let v4499 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v4500 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v4499 = v4500 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v4501 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v4499 = v4501 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v4502 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v4499 = v4502 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v4503 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v4499 = v4503 
            #endif
#if FABLE_COMPILER_PYTHON
            let v4504 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v4499 = v4504 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v4505 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v4499 = v4505 
            #endif
#else
            let v4506 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v4499 = v4506 
            #endif
            let v4507 : Async<Async<bool>> = _v4499 
            let! v4507 = v4507 
            let v4512 : Async<bool> = v4507 
            let v4513 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v4514 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v4515 : Async<Choice<bool, exn>> = v4514 v4512
            let _v4513 = v4515 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v4516 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v4517 : Async<Choice<bool, exn>> = v4516 v4512
            let _v4513 = v4517 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v4518 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v4519 : Async<Choice<bool, exn>> = v4518 v4512
            let _v4513 = v4519 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v4520 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v4521 : Async<Choice<bool, exn>> = v4520 v4512
            let _v4513 = v4521 
            #endif
#if FABLE_COMPILER_PYTHON
            let v4522 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v4523 : Async<Choice<bool, exn>> = v4522 v4512
            let _v4513 = v4523 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v4524 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v4525 : Async<Choice<bool, exn>> = v4524 v4512
            let _v4513 = v4525 
            #endif
#else
            let v4526 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v4527 : Async<Choice<bool, exn>> = v4526 v4512
            let _v4513 = v4527 
            #endif
            let v4528 : Async<Choice<bool, exn>> = _v4513 
            let v4533 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v4534 : Async<US7> = null |> unbox<Async<US7>>
            let _v4533 = v4534 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v4537 : Async<US7> = null |> unbox<Async<US7>>
            let _v4533 = v4537 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v4540 : Async<US7> = null |> unbox<Async<US7>>
            let _v4533 = v4540 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v4543 : unit = ()
            let _v4543 =
                async {
                    let! v4528 = v4528 
                    let v4544 : Choice<bool, exn> = v4528 
                    let v4545 : unit = ()
                    
#if FABLE_COMPILER || WASM || CONTRACT
                    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                    let v4546 : US7 = null |> unbox<US7>
                    let _v4545 = v4546 
                    #endif
#if FABLE_COMPILER_RUST && WASM
                    let v4549 : US7 = null |> unbox<US7>
                    let _v4545 = v4549 
                    #endif
#if FABLE_COMPILER_RUST && CONTRACT
                    let v4552 : US7 = null |> unbox<US7>
                    let _v4545 = v4552 
                    #endif
#if FABLE_COMPILER_TYPESCRIPT
                    let v4555 : US7 = null |> unbox<US7>
                    let _v4545 = v4555 
                    #endif
#if FABLE_COMPILER_PYTHON
                    let v4558 : US7 = null |> unbox<US7>
                    let _v4545 = v4558 
                    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                    let v4561 : (bool -> US7) = method21()
                    let v4562 : (exn -> US7) = method22()
                    let v4563 : US7 = match v4544 with Choice1Of2 x -> v4561 x | Choice2Of2 x -> v4562 x
                    let _v4545 = v4563 
                    #endif
#else
                    let v4564 : (bool -> US7) = method21()
                    let v4565 : (exn -> US7) = method22()
                    let v4566 : US7 = match v4544 with Choice1Of2 x -> v4564 x | Choice2Of2 x -> v4565 x
                    let _v4545 = v4566 
                    #endif
                    let v4567 : US7 = _v4545 
                    return v4567 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v4572 : Async<US7> = _v4543 
            let _v4533 = v4572 
            #endif
#if FABLE_COMPILER_PYTHON
            let v4573 : unit = ()
            let _v4573 =
                async {
                    let! v4528 = v4528 
                    let v4574 : Choice<bool, exn> = v4528 
                    let v4575 : unit = ()
                    
#if FABLE_COMPILER || WASM || CONTRACT
                    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                    let v4576 : US7 = null |> unbox<US7>
                    let _v4575 = v4576 
                    #endif
#if FABLE_COMPILER_RUST && WASM
                    let v4579 : US7 = null |> unbox<US7>
                    let _v4575 = v4579 
                    #endif
#if FABLE_COMPILER_RUST && CONTRACT
                    let v4582 : US7 = null |> unbox<US7>
                    let _v4575 = v4582 
                    #endif
#if FABLE_COMPILER_TYPESCRIPT
                    let v4585 : US7 = null |> unbox<US7>
                    let _v4575 = v4585 
                    #endif
#if FABLE_COMPILER_PYTHON
                    let v4588 : US7 = null |> unbox<US7>
                    let _v4575 = v4588 
                    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                    let v4591 : (bool -> US7) = method21()
                    let v4592 : (exn -> US7) = method22()
                    let v4593 : US7 = match v4574 with Choice1Of2 x -> v4591 x | Choice2Of2 x -> v4592 x
                    let _v4575 = v4593 
                    #endif
#else
                    let v4594 : (bool -> US7) = method21()
                    let v4595 : (exn -> US7) = method22()
                    let v4596 : US7 = match v4574 with Choice1Of2 x -> v4594 x | Choice2Of2 x -> v4595 x
                    let _v4575 = v4596 
                    #endif
                    let v4597 : US7 = _v4575 
                    return v4597 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v4602 : Async<US7> = _v4573 
            let _v4533 = v4602 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v4603 : unit = ()
            let _v4603 =
                async {
                    let! v4528 = v4528 
                    let v4604 : Choice<bool, exn> = v4528 
                    let v4605 : unit = ()
                    
#if FABLE_COMPILER || WASM || CONTRACT
                    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                    let v4606 : US7 = null |> unbox<US7>
                    let _v4605 = v4606 
                    #endif
#if FABLE_COMPILER_RUST && WASM
                    let v4609 : US7 = null |> unbox<US7>
                    let _v4605 = v4609 
                    #endif
#if FABLE_COMPILER_RUST && CONTRACT
                    let v4612 : US7 = null |> unbox<US7>
                    let _v4605 = v4612 
                    #endif
#if FABLE_COMPILER_TYPESCRIPT
                    let v4615 : US7 = null |> unbox<US7>
                    let _v4605 = v4615 
                    #endif
#if FABLE_COMPILER_PYTHON
                    let v4618 : US7 = null |> unbox<US7>
                    let _v4605 = v4618 
                    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                    let v4621 : (bool -> US7) = method21()
                    let v4622 : (exn -> US7) = method22()
                    let v4623 : US7 = match v4604 with Choice1Of2 x -> v4621 x | Choice2Of2 x -> v4622 x
                    let _v4605 = v4623 
                    #endif
#else
                    let v4624 : (bool -> US7) = method21()
                    let v4625 : (exn -> US7) = method22()
                    let v4626 : US7 = match v4604 with Choice1Of2 x -> v4624 x | Choice2Of2 x -> v4625 x
                    let _v4605 = v4626 
                    #endif
                    let v4627 : US7 = _v4605 
                    return v4627 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v4632 : Async<US7> = _v4603 
            let _v4533 = v4632 
            #endif
#else
            let v4633 : unit = ()
            let _v4633 =
                async {
                    let! v4528 = v4528 
                    let v4634 : Choice<bool, exn> = v4528 
                    let v4635 : unit = ()
                    
#if FABLE_COMPILER || WASM || CONTRACT
                    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                    let v4636 : US7 = null |> unbox<US7>
                    let _v4635 = v4636 
                    #endif
#if FABLE_COMPILER_RUST && WASM
                    let v4639 : US7 = null |> unbox<US7>
                    let _v4635 = v4639 
                    #endif
#if FABLE_COMPILER_RUST && CONTRACT
                    let v4642 : US7 = null |> unbox<US7>
                    let _v4635 = v4642 
                    #endif
#if FABLE_COMPILER_TYPESCRIPT
                    let v4645 : US7 = null |> unbox<US7>
                    let _v4635 = v4645 
                    #endif
#if FABLE_COMPILER_PYTHON
                    let v4648 : US7 = null |> unbox<US7>
                    let _v4635 = v4648 
                    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                    let v4651 : (bool -> US7) = method21()
                    let v4652 : (exn -> US7) = method22()
                    let v4653 : US7 = match v4634 with Choice1Of2 x -> v4651 x | Choice2Of2 x -> v4652 x
                    let _v4635 = v4653 
                    #endif
#else
                    let v4654 : (bool -> US7) = method21()
                    let v4655 : (exn -> US7) = method22()
                    let v4656 : US7 = match v4634 with Choice1Of2 x -> v4654 x | Choice2Of2 x -> v4655 x
                    let _v4635 = v4656 
                    #endif
                    let v4657 : US7 = _v4635 
                    return v4657 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v4662 : Async<US7> = _v4633 
            let _v4533 = v4662 
            #endif
            let v4663 : Async<US7> = _v4533 
            let v4668 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v4669 : Async<US8> = null |> unbox<Async<US8>>
            let _v4668 = v4669 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v4672 : Async<US8> = null |> unbox<Async<US8>>
            let _v4668 = v4672 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v4675 : Async<US8> = null |> unbox<Async<US8>>
            let _v4668 = v4675 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v4678 : unit = ()
            let _v4678 =
                async {
                    let! v4663 = v4663 
                    let v4679 : US7 = v4663 
                    let v4685 : US8 =
                        match v4679 with
                        | US7_0(v4680) -> (* C1of2 *)
                            US8_0(v4680)
                        | US7_1(v4682) -> (* C2of2 *)
                            US8_1(v4682)
                    return v4685 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v4686 : Async<US8> = _v4678 
            let _v4668 = v4686 
            #endif
#if FABLE_COMPILER_PYTHON
            let v4687 : unit = ()
            let _v4687 =
                async {
                    let! v4663 = v4663 
                    let v4688 : US7 = v4663 
                    let v4694 : US8 =
                        match v4688 with
                        | US7_0(v4689) -> (* C1of2 *)
                            US8_0(v4689)
                        | US7_1(v4691) -> (* C2of2 *)
                            US8_1(v4691)
                    return v4694 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v4695 : Async<US8> = _v4687 
            let _v4668 = v4695 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v4696 : unit = ()
            let _v4696 =
                async {
                    let! v4663 = v4663 
                    let v4697 : US7 = v4663 
                    let v4703 : US8 =
                        match v4697 with
                        | US7_0(v4698) -> (* C1of2 *)
                            US8_0(v4698)
                        | US7_1(v4700) -> (* C2of2 *)
                            US8_1(v4700)
                    return v4703 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v4704 : Async<US8> = _v4696 
            let _v4668 = v4704 
            #endif
#else
            let v4705 : unit = ()
            let _v4705 =
                async {
                    let! v4663 = v4663 
                    let v4706 : US7 = v4663 
                    let v4712 : US8 =
                        match v4706 with
                        | US7_0(v4707) -> (* C1of2 *)
                            US8_0(v4707)
                        | US7_1(v4709) -> (* C2of2 *)
                            US8_1(v4709)
                    return v4712 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v4713 : Async<US8> = _v4705 
            let _v4668 = v4713 
            #endif
            let v4714 : Async<US8> = _v4668 
            let v4719 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v4720 : Async<US6> = null |> unbox<Async<US6>>
            let _v4719 = v4720 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v4723 : Async<US6> = null |> unbox<Async<US6>>
            let _v4719 = v4723 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v4726 : Async<US6> = null |> unbox<Async<US6>>
            let _v4719 = v4726 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v4729 : unit = ()
            let _v4729 =
                async {
                    let! v4714 = v4714 
                    let v4730 : US8 = v4714 
                    let v4854 : US6 =
                        match v4730 with
                        | US8_1(v4733) -> (* Error *)
                            let v4734 : string = $"%A{v4733}"
                            let v4737 : string = "System.TimeoutException"
                            let v4738 : bool = v4734.Contains v4737 
                            if v4738 then
                                let v4741 : unit = ()
                                let v4742 : (unit -> unit) = closure16(v0)
                                let v4743 : unit = (fun () -> v4742 (); v4741) ()
                                US6_1
                            else
                                let v4784 : unit = ()
                                let v4785 : (unit -> unit) = closure17(v0, v4733)
                                let v4786 : unit = (fun () -> v4785 (); v4784) ()
                                US6_1
                        | US8_0(v4731) -> (* Ok *)
                            US6_0(v4731)
                    return v4854 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v4855 : Async<US6> = _v4729 
            let _v4719 = v4855 
            #endif
#if FABLE_COMPILER_PYTHON
            let v4856 : unit = ()
            let _v4856 =
                async {
                    let! v4714 = v4714 
                    let v4857 : US8 = v4714 
                    let v4981 : US6 =
                        match v4857 with
                        | US8_1(v4860) -> (* Error *)
                            let v4861 : string = $"%A{v4860}"
                            let v4864 : string = "System.TimeoutException"
                            let v4865 : bool = v4861.Contains v4864 
                            if v4865 then
                                let v4868 : unit = ()
                                let v4869 : (unit -> unit) = closure16(v0)
                                let v4870 : unit = (fun () -> v4869 (); v4868) ()
                                US6_1
                            else
                                let v4911 : unit = ()
                                let v4912 : (unit -> unit) = closure17(v0, v4860)
                                let v4913 : unit = (fun () -> v4912 (); v4911) ()
                                US6_1
                        | US8_0(v4858) -> (* Ok *)
                            US6_0(v4858)
                    return v4981 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v4982 : Async<US6> = _v4856 
            let _v4719 = v4982 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v4983 : unit = ()
            let _v4983 =
                async {
                    let! v4714 = v4714 
                    let v4984 : US8 = v4714 
                    let v5108 : US6 =
                        match v4984 with
                        | US8_1(v4987) -> (* Error *)
                            let v4988 : string = $"%A{v4987}"
                            let v4991 : string = "System.TimeoutException"
                            let v4992 : bool = v4988.Contains v4991 
                            if v4992 then
                                let v4995 : unit = ()
                                let v4996 : (unit -> unit) = closure16(v0)
                                let v4997 : unit = (fun () -> v4996 (); v4995) ()
                                US6_1
                            else
                                let v5038 : unit = ()
                                let v5039 : (unit -> unit) = closure17(v0, v4987)
                                let v5040 : unit = (fun () -> v5039 (); v5038) ()
                                US6_1
                        | US8_0(v4985) -> (* Ok *)
                            US6_0(v4985)
                    return v5108 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v5109 : Async<US6> = _v4983 
            let _v4719 = v5109 
            #endif
#else
            let v5110 : unit = ()
            let _v5110 =
                async {
                    let! v4714 = v4714 
                    let v5111 : US8 = v4714 
                    let v5235 : US6 =
                        match v5111 with
                        | US8_1(v5114) -> (* Error *)
                            let v5115 : string = $"%A{v5114}"
                            let v5118 : string = "System.TimeoutException"
                            let v5119 : bool = v5115.Contains v5118 
                            if v5119 then
                                let v5122 : unit = ()
                                let v5123 : (unit -> unit) = closure16(v0)
                                let v5124 : unit = (fun () -> v5123 (); v5122) ()
                                US6_1
                            else
                                let v5165 : unit = ()
                                let v5166 : (unit -> unit) = closure17(v0, v5114)
                                let v5167 : unit = (fun () -> v5166 (); v5165) ()
                                US6_1
                        | US8_0(v5112) -> (* Ok *)
                            US6_0(v5112)
                    return v5235 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v5236 : Async<US6> = _v5110 
            let _v4719 = v5236 
            #endif
            let v5237 : Async<US6> = _v4719 
            return! v5237 
            (*
            ()
        *)
        }
        (*
        ()
    *)
    let v5242 : Async<US6> = _v4498 
    let _v2998 = v5242 
    #endif
#else
    let v5243 : unit = ()
    let _v5243 =
        async {
            let v5244 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v5245 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v5244 = v5245 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v5246 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v5244 = v5246 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v5247 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v5244 = v5247 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v5248 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v5244 = v5248 
            #endif
#if FABLE_COMPILER_PYTHON
            let v5249 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v5244 = v5249 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v5250 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v5244 = v5250 
            #endif
#else
            let v5251 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v5244 = v5251 
            #endif
            let v5252 : Async<Async<bool>> = _v5244 
            let! v5252 = v5252 
            let v5257 : Async<bool> = v5252 
            let v5258 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v5259 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v5260 : Async<Choice<bool, exn>> = v5259 v5257
            let _v5258 = v5260 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v5261 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v5262 : Async<Choice<bool, exn>> = v5261 v5257
            let _v5258 = v5262 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v5263 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v5264 : Async<Choice<bool, exn>> = v5263 v5257
            let _v5258 = v5264 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v5265 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v5266 : Async<Choice<bool, exn>> = v5265 v5257
            let _v5258 = v5266 
            #endif
#if FABLE_COMPILER_PYTHON
            let v5267 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v5268 : Async<Choice<bool, exn>> = v5267 v5257
            let _v5258 = v5268 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v5269 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v5270 : Async<Choice<bool, exn>> = v5269 v5257
            let _v5258 = v5270 
            #endif
#else
            let v5271 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v5272 : Async<Choice<bool, exn>> = v5271 v5257
            let _v5258 = v5272 
            #endif
            let v5273 : Async<Choice<bool, exn>> = _v5258 
            let v5278 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v5279 : Async<US7> = null |> unbox<Async<US7>>
            let _v5278 = v5279 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v5282 : Async<US7> = null |> unbox<Async<US7>>
            let _v5278 = v5282 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v5285 : Async<US7> = null |> unbox<Async<US7>>
            let _v5278 = v5285 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v5288 : unit = ()
            let _v5288 =
                async {
                    let! v5273 = v5273 
                    let v5289 : Choice<bool, exn> = v5273 
                    let v5290 : unit = ()
                    
#if FABLE_COMPILER || WASM || CONTRACT
                    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                    let v5291 : US7 = null |> unbox<US7>
                    let _v5290 = v5291 
                    #endif
#if FABLE_COMPILER_RUST && WASM
                    let v5294 : US7 = null |> unbox<US7>
                    let _v5290 = v5294 
                    #endif
#if FABLE_COMPILER_RUST && CONTRACT
                    let v5297 : US7 = null |> unbox<US7>
                    let _v5290 = v5297 
                    #endif
#if FABLE_COMPILER_TYPESCRIPT
                    let v5300 : US7 = null |> unbox<US7>
                    let _v5290 = v5300 
                    #endif
#if FABLE_COMPILER_PYTHON
                    let v5303 : US7 = null |> unbox<US7>
                    let _v5290 = v5303 
                    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                    let v5306 : (bool -> US7) = method21()
                    let v5307 : (exn -> US7) = method22()
                    let v5308 : US7 = match v5289 with Choice1Of2 x -> v5306 x | Choice2Of2 x -> v5307 x
                    let _v5290 = v5308 
                    #endif
#else
                    let v5309 : (bool -> US7) = method21()
                    let v5310 : (exn -> US7) = method22()
                    let v5311 : US7 = match v5289 with Choice1Of2 x -> v5309 x | Choice2Of2 x -> v5310 x
                    let _v5290 = v5311 
                    #endif
                    let v5312 : US7 = _v5290 
                    return v5312 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v5317 : Async<US7> = _v5288 
            let _v5278 = v5317 
            #endif
#if FABLE_COMPILER_PYTHON
            let v5318 : unit = ()
            let _v5318 =
                async {
                    let! v5273 = v5273 
                    let v5319 : Choice<bool, exn> = v5273 
                    let v5320 : unit = ()
                    
#if FABLE_COMPILER || WASM || CONTRACT
                    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                    let v5321 : US7 = null |> unbox<US7>
                    let _v5320 = v5321 
                    #endif
#if FABLE_COMPILER_RUST && WASM
                    let v5324 : US7 = null |> unbox<US7>
                    let _v5320 = v5324 
                    #endif
#if FABLE_COMPILER_RUST && CONTRACT
                    let v5327 : US7 = null |> unbox<US7>
                    let _v5320 = v5327 
                    #endif
#if FABLE_COMPILER_TYPESCRIPT
                    let v5330 : US7 = null |> unbox<US7>
                    let _v5320 = v5330 
                    #endif
#if FABLE_COMPILER_PYTHON
                    let v5333 : US7 = null |> unbox<US7>
                    let _v5320 = v5333 
                    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                    let v5336 : (bool -> US7) = method21()
                    let v5337 : (exn -> US7) = method22()
                    let v5338 : US7 = match v5319 with Choice1Of2 x -> v5336 x | Choice2Of2 x -> v5337 x
                    let _v5320 = v5338 
                    #endif
#else
                    let v5339 : (bool -> US7) = method21()
                    let v5340 : (exn -> US7) = method22()
                    let v5341 : US7 = match v5319 with Choice1Of2 x -> v5339 x | Choice2Of2 x -> v5340 x
                    let _v5320 = v5341 
                    #endif
                    let v5342 : US7 = _v5320 
                    return v5342 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v5347 : Async<US7> = _v5318 
            let _v5278 = v5347 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v5348 : unit = ()
            let _v5348 =
                async {
                    let! v5273 = v5273 
                    let v5349 : Choice<bool, exn> = v5273 
                    let v5350 : unit = ()
                    
#if FABLE_COMPILER || WASM || CONTRACT
                    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                    let v5351 : US7 = null |> unbox<US7>
                    let _v5350 = v5351 
                    #endif
#if FABLE_COMPILER_RUST && WASM
                    let v5354 : US7 = null |> unbox<US7>
                    let _v5350 = v5354 
                    #endif
#if FABLE_COMPILER_RUST && CONTRACT
                    let v5357 : US7 = null |> unbox<US7>
                    let _v5350 = v5357 
                    #endif
#if FABLE_COMPILER_TYPESCRIPT
                    let v5360 : US7 = null |> unbox<US7>
                    let _v5350 = v5360 
                    #endif
#if FABLE_COMPILER_PYTHON
                    let v5363 : US7 = null |> unbox<US7>
                    let _v5350 = v5363 
                    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                    let v5366 : (bool -> US7) = method21()
                    let v5367 : (exn -> US7) = method22()
                    let v5368 : US7 = match v5349 with Choice1Of2 x -> v5366 x | Choice2Of2 x -> v5367 x
                    let _v5350 = v5368 
                    #endif
#else
                    let v5369 : (bool -> US7) = method21()
                    let v5370 : (exn -> US7) = method22()
                    let v5371 : US7 = match v5349 with Choice1Of2 x -> v5369 x | Choice2Of2 x -> v5370 x
                    let _v5350 = v5371 
                    #endif
                    let v5372 : US7 = _v5350 
                    return v5372 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v5377 : Async<US7> = _v5348 
            let _v5278 = v5377 
            #endif
#else
            let v5378 : unit = ()
            let _v5378 =
                async {
                    let! v5273 = v5273 
                    let v5379 : Choice<bool, exn> = v5273 
                    let v5380 : unit = ()
                    
#if FABLE_COMPILER || WASM || CONTRACT
                    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                    let v5381 : US7 = null |> unbox<US7>
                    let _v5380 = v5381 
                    #endif
#if FABLE_COMPILER_RUST && WASM
                    let v5384 : US7 = null |> unbox<US7>
                    let _v5380 = v5384 
                    #endif
#if FABLE_COMPILER_RUST && CONTRACT
                    let v5387 : US7 = null |> unbox<US7>
                    let _v5380 = v5387 
                    #endif
#if FABLE_COMPILER_TYPESCRIPT
                    let v5390 : US7 = null |> unbox<US7>
                    let _v5380 = v5390 
                    #endif
#if FABLE_COMPILER_PYTHON
                    let v5393 : US7 = null |> unbox<US7>
                    let _v5380 = v5393 
                    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                    let v5396 : (bool -> US7) = method21()
                    let v5397 : (exn -> US7) = method22()
                    let v5398 : US7 = match v5379 with Choice1Of2 x -> v5396 x | Choice2Of2 x -> v5397 x
                    let _v5380 = v5398 
                    #endif
#else
                    let v5399 : (bool -> US7) = method21()
                    let v5400 : (exn -> US7) = method22()
                    let v5401 : US7 = match v5379 with Choice1Of2 x -> v5399 x | Choice2Of2 x -> v5400 x
                    let _v5380 = v5401 
                    #endif
                    let v5402 : US7 = _v5380 
                    return v5402 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v5407 : Async<US7> = _v5378 
            let _v5278 = v5407 
            #endif
            let v5408 : Async<US7> = _v5278 
            let v5413 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v5414 : Async<US8> = null |> unbox<Async<US8>>
            let _v5413 = v5414 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v5417 : Async<US8> = null |> unbox<Async<US8>>
            let _v5413 = v5417 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v5420 : Async<US8> = null |> unbox<Async<US8>>
            let _v5413 = v5420 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v5423 : unit = ()
            let _v5423 =
                async {
                    let! v5408 = v5408 
                    let v5424 : US7 = v5408 
                    let v5430 : US8 =
                        match v5424 with
                        | US7_0(v5425) -> (* C1of2 *)
                            US8_0(v5425)
                        | US7_1(v5427) -> (* C2of2 *)
                            US8_1(v5427)
                    return v5430 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v5431 : Async<US8> = _v5423 
            let _v5413 = v5431 
            #endif
#if FABLE_COMPILER_PYTHON
            let v5432 : unit = ()
            let _v5432 =
                async {
                    let! v5408 = v5408 
                    let v5433 : US7 = v5408 
                    let v5439 : US8 =
                        match v5433 with
                        | US7_0(v5434) -> (* C1of2 *)
                            US8_0(v5434)
                        | US7_1(v5436) -> (* C2of2 *)
                            US8_1(v5436)
                    return v5439 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v5440 : Async<US8> = _v5432 
            let _v5413 = v5440 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v5441 : unit = ()
            let _v5441 =
                async {
                    let! v5408 = v5408 
                    let v5442 : US7 = v5408 
                    let v5448 : US8 =
                        match v5442 with
                        | US7_0(v5443) -> (* C1of2 *)
                            US8_0(v5443)
                        | US7_1(v5445) -> (* C2of2 *)
                            US8_1(v5445)
                    return v5448 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v5449 : Async<US8> = _v5441 
            let _v5413 = v5449 
            #endif
#else
            let v5450 : unit = ()
            let _v5450 =
                async {
                    let! v5408 = v5408 
                    let v5451 : US7 = v5408 
                    let v5457 : US8 =
                        match v5451 with
                        | US7_0(v5452) -> (* C1of2 *)
                            US8_0(v5452)
                        | US7_1(v5454) -> (* C2of2 *)
                            US8_1(v5454)
                    return v5457 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v5458 : Async<US8> = _v5450 
            let _v5413 = v5458 
            #endif
            let v5459 : Async<US8> = _v5413 
            let v5464 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v5465 : Async<US6> = null |> unbox<Async<US6>>
            let _v5464 = v5465 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v5468 : Async<US6> = null |> unbox<Async<US6>>
            let _v5464 = v5468 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v5471 : Async<US6> = null |> unbox<Async<US6>>
            let _v5464 = v5471 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v5474 : unit = ()
            let _v5474 =
                async {
                    let! v5459 = v5459 
                    let v5475 : US8 = v5459 
                    let v5599 : US6 =
                        match v5475 with
                        | US8_1(v5478) -> (* Error *)
                            let v5479 : string = $"%A{v5478}"
                            let v5482 : string = "System.TimeoutException"
                            let v5483 : bool = v5479.Contains v5482 
                            if v5483 then
                                let v5486 : unit = ()
                                let v5487 : (unit -> unit) = closure16(v0)
                                let v5488 : unit = (fun () -> v5487 (); v5486) ()
                                US6_1
                            else
                                let v5529 : unit = ()
                                let v5530 : (unit -> unit) = closure17(v0, v5478)
                                let v5531 : unit = (fun () -> v5530 (); v5529) ()
                                US6_1
                        | US8_0(v5476) -> (* Ok *)
                            US6_0(v5476)
                    return v5599 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v5600 : Async<US6> = _v5474 
            let _v5464 = v5600 
            #endif
#if FABLE_COMPILER_PYTHON
            let v5601 : unit = ()
            let _v5601 =
                async {
                    let! v5459 = v5459 
                    let v5602 : US8 = v5459 
                    let v5726 : US6 =
                        match v5602 with
                        | US8_1(v5605) -> (* Error *)
                            let v5606 : string = $"%A{v5605}"
                            let v5609 : string = "System.TimeoutException"
                            let v5610 : bool = v5606.Contains v5609 
                            if v5610 then
                                let v5613 : unit = ()
                                let v5614 : (unit -> unit) = closure16(v0)
                                let v5615 : unit = (fun () -> v5614 (); v5613) ()
                                US6_1
                            else
                                let v5656 : unit = ()
                                let v5657 : (unit -> unit) = closure17(v0, v5605)
                                let v5658 : unit = (fun () -> v5657 (); v5656) ()
                                US6_1
                        | US8_0(v5603) -> (* Ok *)
                            US6_0(v5603)
                    return v5726 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v5727 : Async<US6> = _v5601 
            let _v5464 = v5727 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v5728 : unit = ()
            let _v5728 =
                async {
                    let! v5459 = v5459 
                    let v5729 : US8 = v5459 
                    let v5853 : US6 =
                        match v5729 with
                        | US8_1(v5732) -> (* Error *)
                            let v5733 : string = $"%A{v5732}"
                            let v5736 : string = "System.TimeoutException"
                            let v5737 : bool = v5733.Contains v5736 
                            if v5737 then
                                let v5740 : unit = ()
                                let v5741 : (unit -> unit) = closure16(v0)
                                let v5742 : unit = (fun () -> v5741 (); v5740) ()
                                US6_1
                            else
                                let v5783 : unit = ()
                                let v5784 : (unit -> unit) = closure17(v0, v5732)
                                let v5785 : unit = (fun () -> v5784 (); v5783) ()
                                US6_1
                        | US8_0(v5730) -> (* Ok *)
                            US6_0(v5730)
                    return v5853 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v5854 : Async<US6> = _v5728 
            let _v5464 = v5854 
            #endif
#else
            let v5855 : unit = ()
            let _v5855 =
                async {
                    let! v5459 = v5459 
                    let v5856 : US8 = v5459 
                    let v5980 : US6 =
                        match v5856 with
                        | US8_1(v5859) -> (* Error *)
                            let v5860 : string = $"%A{v5859}"
                            let v5863 : string = "System.TimeoutException"
                            let v5864 : bool = v5860.Contains v5863 
                            if v5864 then
                                let v5867 : unit = ()
                                let v5868 : (unit -> unit) = closure16(v0)
                                let v5869 : unit = (fun () -> v5868 (); v5867) ()
                                US6_1
                            else
                                let v5910 : unit = ()
                                let v5911 : (unit -> unit) = closure17(v0, v5859)
                                let v5912 : unit = (fun () -> v5911 (); v5910) ()
                                US6_1
                        | US8_0(v5857) -> (* Ok *)
                            US6_0(v5857)
                    return v5980 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v5981 : Async<US6> = _v5855 
            let _v5464 = v5981 
            #endif
            let v5982 : Async<US6> = _v5464 
            return! v5982 
            (*
            ()
        *)
        }
        (*
        ()
    *)
    let v5987 : Async<US6> = _v5243 
    let _v2998 = v5987 
    #endif
    let v5988 : Async<US6> = _v2998 
    let _v2 = v5988 
    #endif
#if FABLE_COMPILER_RUST && CONTRACT
    let v5993 : unit = ()
    
#if FABLE_COMPILER || WASM || CONTRACT
    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
    let v5994 : Async<US6> = null |> unbox<Async<US6>>
    let _v5993 = v5994 
    #endif
#if FABLE_COMPILER_RUST && WASM
    let v5997 : Async<US6> = null |> unbox<Async<US6>>
    let _v5993 = v5997 
    #endif
#if FABLE_COMPILER_RUST && CONTRACT
    let v6000 : Async<US6> = null |> unbox<Async<US6>>
    let _v5993 = v6000 
    #endif
#if FABLE_COMPILER_TYPESCRIPT
    let v6003 : unit = ()
    let _v6003 =
        async {
            let v6004 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v6005 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v6004 = v6005 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v6006 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v6004 = v6006 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v6007 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v6004 = v6007 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v6008 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v6004 = v6008 
            #endif
#if FABLE_COMPILER_PYTHON
            let v6009 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v6004 = v6009 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v6010 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v6004 = v6010 
            #endif
#else
            let v6011 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v6004 = v6011 
            #endif
            let v6012 : Async<Async<bool>> = _v6004 
            let! v6012 = v6012 
            let v6017 : Async<bool> = v6012 
            let v6018 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v6019 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v6020 : Async<Choice<bool, exn>> = v6019 v6017
            let _v6018 = v6020 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v6021 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v6022 : Async<Choice<bool, exn>> = v6021 v6017
            let _v6018 = v6022 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v6023 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v6024 : Async<Choice<bool, exn>> = v6023 v6017
            let _v6018 = v6024 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v6025 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v6026 : Async<Choice<bool, exn>> = v6025 v6017
            let _v6018 = v6026 
            #endif
#if FABLE_COMPILER_PYTHON
            let v6027 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v6028 : Async<Choice<bool, exn>> = v6027 v6017
            let _v6018 = v6028 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v6029 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v6030 : Async<Choice<bool, exn>> = v6029 v6017
            let _v6018 = v6030 
            #endif
#else
            let v6031 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v6032 : Async<Choice<bool, exn>> = v6031 v6017
            let _v6018 = v6032 
            #endif
            let v6033 : Async<Choice<bool, exn>> = _v6018 
            let v6038 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v6039 : Async<US7> = null |> unbox<Async<US7>>
            let _v6038 = v6039 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v6042 : Async<US7> = null |> unbox<Async<US7>>
            let _v6038 = v6042 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v6045 : Async<US7> = null |> unbox<Async<US7>>
            let _v6038 = v6045 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v6048 : unit = ()
            let _v6048 =
                async {
                    let! v6033 = v6033 
                    let v6049 : Choice<bool, exn> = v6033 
                    let v6050 : unit = ()
                    
#if FABLE_COMPILER || WASM || CONTRACT
                    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                    let v6051 : US7 = null |> unbox<US7>
                    let _v6050 = v6051 
                    #endif
#if FABLE_COMPILER_RUST && WASM
                    let v6054 : US7 = null |> unbox<US7>
                    let _v6050 = v6054 
                    #endif
#if FABLE_COMPILER_RUST && CONTRACT
                    let v6057 : US7 = null |> unbox<US7>
                    let _v6050 = v6057 
                    #endif
#if FABLE_COMPILER_TYPESCRIPT
                    let v6060 : US7 = null |> unbox<US7>
                    let _v6050 = v6060 
                    #endif
#if FABLE_COMPILER_PYTHON
                    let v6063 : US7 = null |> unbox<US7>
                    let _v6050 = v6063 
                    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                    let v6066 : (bool -> US7) = method21()
                    let v6067 : (exn -> US7) = method22()
                    let v6068 : US7 = match v6049 with Choice1Of2 x -> v6066 x | Choice2Of2 x -> v6067 x
                    let _v6050 = v6068 
                    #endif
#else
                    let v6069 : (bool -> US7) = method21()
                    let v6070 : (exn -> US7) = method22()
                    let v6071 : US7 = match v6049 with Choice1Of2 x -> v6069 x | Choice2Of2 x -> v6070 x
                    let _v6050 = v6071 
                    #endif
                    let v6072 : US7 = _v6050 
                    return v6072 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v6077 : Async<US7> = _v6048 
            let _v6038 = v6077 
            #endif
#if FABLE_COMPILER_PYTHON
            let v6078 : unit = ()
            let _v6078 =
                async {
                    let! v6033 = v6033 
                    let v6079 : Choice<bool, exn> = v6033 
                    let v6080 : unit = ()
                    
#if FABLE_COMPILER || WASM || CONTRACT
                    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                    let v6081 : US7 = null |> unbox<US7>
                    let _v6080 = v6081 
                    #endif
#if FABLE_COMPILER_RUST && WASM
                    let v6084 : US7 = null |> unbox<US7>
                    let _v6080 = v6084 
                    #endif
#if FABLE_COMPILER_RUST && CONTRACT
                    let v6087 : US7 = null |> unbox<US7>
                    let _v6080 = v6087 
                    #endif
#if FABLE_COMPILER_TYPESCRIPT
                    let v6090 : US7 = null |> unbox<US7>
                    let _v6080 = v6090 
                    #endif
#if FABLE_COMPILER_PYTHON
                    let v6093 : US7 = null |> unbox<US7>
                    let _v6080 = v6093 
                    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                    let v6096 : (bool -> US7) = method21()
                    let v6097 : (exn -> US7) = method22()
                    let v6098 : US7 = match v6079 with Choice1Of2 x -> v6096 x | Choice2Of2 x -> v6097 x
                    let _v6080 = v6098 
                    #endif
#else
                    let v6099 : (bool -> US7) = method21()
                    let v6100 : (exn -> US7) = method22()
                    let v6101 : US7 = match v6079 with Choice1Of2 x -> v6099 x | Choice2Of2 x -> v6100 x
                    let _v6080 = v6101 
                    #endif
                    let v6102 : US7 = _v6080 
                    return v6102 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v6107 : Async<US7> = _v6078 
            let _v6038 = v6107 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v6108 : unit = ()
            let _v6108 =
                async {
                    let! v6033 = v6033 
                    let v6109 : Choice<bool, exn> = v6033 
                    let v6110 : unit = ()
                    
#if FABLE_COMPILER || WASM || CONTRACT
                    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                    let v6111 : US7 = null |> unbox<US7>
                    let _v6110 = v6111 
                    #endif
#if FABLE_COMPILER_RUST && WASM
                    let v6114 : US7 = null |> unbox<US7>
                    let _v6110 = v6114 
                    #endif
#if FABLE_COMPILER_RUST && CONTRACT
                    let v6117 : US7 = null |> unbox<US7>
                    let _v6110 = v6117 
                    #endif
#if FABLE_COMPILER_TYPESCRIPT
                    let v6120 : US7 = null |> unbox<US7>
                    let _v6110 = v6120 
                    #endif
#if FABLE_COMPILER_PYTHON
                    let v6123 : US7 = null |> unbox<US7>
                    let _v6110 = v6123 
                    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                    let v6126 : (bool -> US7) = method21()
                    let v6127 : (exn -> US7) = method22()
                    let v6128 : US7 = match v6109 with Choice1Of2 x -> v6126 x | Choice2Of2 x -> v6127 x
                    let _v6110 = v6128 
                    #endif
#else
                    let v6129 : (bool -> US7) = method21()
                    let v6130 : (exn -> US7) = method22()
                    let v6131 : US7 = match v6109 with Choice1Of2 x -> v6129 x | Choice2Of2 x -> v6130 x
                    let _v6110 = v6131 
                    #endif
                    let v6132 : US7 = _v6110 
                    return v6132 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v6137 : Async<US7> = _v6108 
            let _v6038 = v6137 
            #endif
#else
            let v6138 : unit = ()
            let _v6138 =
                async {
                    let! v6033 = v6033 
                    let v6139 : Choice<bool, exn> = v6033 
                    let v6140 : unit = ()
                    
#if FABLE_COMPILER || WASM || CONTRACT
                    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                    let v6141 : US7 = null |> unbox<US7>
                    let _v6140 = v6141 
                    #endif
#if FABLE_COMPILER_RUST && WASM
                    let v6144 : US7 = null |> unbox<US7>
                    let _v6140 = v6144 
                    #endif
#if FABLE_COMPILER_RUST && CONTRACT
                    let v6147 : US7 = null |> unbox<US7>
                    let _v6140 = v6147 
                    #endif
#if FABLE_COMPILER_TYPESCRIPT
                    let v6150 : US7 = null |> unbox<US7>
                    let _v6140 = v6150 
                    #endif
#if FABLE_COMPILER_PYTHON
                    let v6153 : US7 = null |> unbox<US7>
                    let _v6140 = v6153 
                    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                    let v6156 : (bool -> US7) = method21()
                    let v6157 : (exn -> US7) = method22()
                    let v6158 : US7 = match v6139 with Choice1Of2 x -> v6156 x | Choice2Of2 x -> v6157 x
                    let _v6140 = v6158 
                    #endif
#else
                    let v6159 : (bool -> US7) = method21()
                    let v6160 : (exn -> US7) = method22()
                    let v6161 : US7 = match v6139 with Choice1Of2 x -> v6159 x | Choice2Of2 x -> v6160 x
                    let _v6140 = v6161 
                    #endif
                    let v6162 : US7 = _v6140 
                    return v6162 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v6167 : Async<US7> = _v6138 
            let _v6038 = v6167 
            #endif
            let v6168 : Async<US7> = _v6038 
            let v6173 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v6174 : Async<US8> = null |> unbox<Async<US8>>
            let _v6173 = v6174 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v6177 : Async<US8> = null |> unbox<Async<US8>>
            let _v6173 = v6177 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v6180 : Async<US8> = null |> unbox<Async<US8>>
            let _v6173 = v6180 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v6183 : unit = ()
            let _v6183 =
                async {
                    let! v6168 = v6168 
                    let v6184 : US7 = v6168 
                    let v6190 : US8 =
                        match v6184 with
                        | US7_0(v6185) -> (* C1of2 *)
                            US8_0(v6185)
                        | US7_1(v6187) -> (* C2of2 *)
                            US8_1(v6187)
                    return v6190 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v6191 : Async<US8> = _v6183 
            let _v6173 = v6191 
            #endif
#if FABLE_COMPILER_PYTHON
            let v6192 : unit = ()
            let _v6192 =
                async {
                    let! v6168 = v6168 
                    let v6193 : US7 = v6168 
                    let v6199 : US8 =
                        match v6193 with
                        | US7_0(v6194) -> (* C1of2 *)
                            US8_0(v6194)
                        | US7_1(v6196) -> (* C2of2 *)
                            US8_1(v6196)
                    return v6199 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v6200 : Async<US8> = _v6192 
            let _v6173 = v6200 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v6201 : unit = ()
            let _v6201 =
                async {
                    let! v6168 = v6168 
                    let v6202 : US7 = v6168 
                    let v6208 : US8 =
                        match v6202 with
                        | US7_0(v6203) -> (* C1of2 *)
                            US8_0(v6203)
                        | US7_1(v6205) -> (* C2of2 *)
                            US8_1(v6205)
                    return v6208 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v6209 : Async<US8> = _v6201 
            let _v6173 = v6209 
            #endif
#else
            let v6210 : unit = ()
            let _v6210 =
                async {
                    let! v6168 = v6168 
                    let v6211 : US7 = v6168 
                    let v6217 : US8 =
                        match v6211 with
                        | US7_0(v6212) -> (* C1of2 *)
                            US8_0(v6212)
                        | US7_1(v6214) -> (* C2of2 *)
                            US8_1(v6214)
                    return v6217 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v6218 : Async<US8> = _v6210 
            let _v6173 = v6218 
            #endif
            let v6219 : Async<US8> = _v6173 
            let v6224 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v6225 : Async<US6> = null |> unbox<Async<US6>>
            let _v6224 = v6225 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v6228 : Async<US6> = null |> unbox<Async<US6>>
            let _v6224 = v6228 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v6231 : Async<US6> = null |> unbox<Async<US6>>
            let _v6224 = v6231 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v6234 : unit = ()
            let _v6234 =
                async {
                    let! v6219 = v6219 
                    let v6235 : US8 = v6219 
                    let v6359 : US6 =
                        match v6235 with
                        | US8_1(v6238) -> (* Error *)
                            let v6239 : string = $"%A{v6238}"
                            let v6242 : string = "System.TimeoutException"
                            let v6243 : bool = v6239.Contains v6242 
                            if v6243 then
                                let v6246 : unit = ()
                                let v6247 : (unit -> unit) = closure16(v0)
                                let v6248 : unit = (fun () -> v6247 (); v6246) ()
                                US6_1
                            else
                                let v6289 : unit = ()
                                let v6290 : (unit -> unit) = closure17(v0, v6238)
                                let v6291 : unit = (fun () -> v6290 (); v6289) ()
                                US6_1
                        | US8_0(v6236) -> (* Ok *)
                            US6_0(v6236)
                    return v6359 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v6360 : Async<US6> = _v6234 
            let _v6224 = v6360 
            #endif
#if FABLE_COMPILER_PYTHON
            let v6361 : unit = ()
            let _v6361 =
                async {
                    let! v6219 = v6219 
                    let v6362 : US8 = v6219 
                    let v6486 : US6 =
                        match v6362 with
                        | US8_1(v6365) -> (* Error *)
                            let v6366 : string = $"%A{v6365}"
                            let v6369 : string = "System.TimeoutException"
                            let v6370 : bool = v6366.Contains v6369 
                            if v6370 then
                                let v6373 : unit = ()
                                let v6374 : (unit -> unit) = closure16(v0)
                                let v6375 : unit = (fun () -> v6374 (); v6373) ()
                                US6_1
                            else
                                let v6416 : unit = ()
                                let v6417 : (unit -> unit) = closure17(v0, v6365)
                                let v6418 : unit = (fun () -> v6417 (); v6416) ()
                                US6_1
                        | US8_0(v6363) -> (* Ok *)
                            US6_0(v6363)
                    return v6486 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v6487 : Async<US6> = _v6361 
            let _v6224 = v6487 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v6488 : unit = ()
            let _v6488 =
                async {
                    let! v6219 = v6219 
                    let v6489 : US8 = v6219 
                    let v6613 : US6 =
                        match v6489 with
                        | US8_1(v6492) -> (* Error *)
                            let v6493 : string = $"%A{v6492}"
                            let v6496 : string = "System.TimeoutException"
                            let v6497 : bool = v6493.Contains v6496 
                            if v6497 then
                                let v6500 : unit = ()
                                let v6501 : (unit -> unit) = closure16(v0)
                                let v6502 : unit = (fun () -> v6501 (); v6500) ()
                                US6_1
                            else
                                let v6543 : unit = ()
                                let v6544 : (unit -> unit) = closure17(v0, v6492)
                                let v6545 : unit = (fun () -> v6544 (); v6543) ()
                                US6_1
                        | US8_0(v6490) -> (* Ok *)
                            US6_0(v6490)
                    return v6613 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v6614 : Async<US6> = _v6488 
            let _v6224 = v6614 
            #endif
#else
            let v6615 : unit = ()
            let _v6615 =
                async {
                    let! v6219 = v6219 
                    let v6616 : US8 = v6219 
                    let v6740 : US6 =
                        match v6616 with
                        | US8_1(v6619) -> (* Error *)
                            let v6620 : string = $"%A{v6619}"
                            let v6623 : string = "System.TimeoutException"
                            let v6624 : bool = v6620.Contains v6623 
                            if v6624 then
                                let v6627 : unit = ()
                                let v6628 : (unit -> unit) = closure16(v0)
                                let v6629 : unit = (fun () -> v6628 (); v6627) ()
                                US6_1
                            else
                                let v6670 : unit = ()
                                let v6671 : (unit -> unit) = closure17(v0, v6619)
                                let v6672 : unit = (fun () -> v6671 (); v6670) ()
                                US6_1
                        | US8_0(v6617) -> (* Ok *)
                            US6_0(v6617)
                    return v6740 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v6741 : Async<US6> = _v6615 
            let _v6224 = v6741 
            #endif
            let v6742 : Async<US6> = _v6224 
            return! v6742 
            (*
            ()
        *)
        }
        (*
        ()
    *)
    let v6747 : Async<US6> = _v6003 
    let _v5993 = v6747 
    #endif
#if FABLE_COMPILER_PYTHON
    let v6748 : unit = ()
    let _v6748 =
        async {
            let v6749 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v6750 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v6749 = v6750 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v6751 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v6749 = v6751 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v6752 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v6749 = v6752 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v6753 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v6749 = v6753 
            #endif
#if FABLE_COMPILER_PYTHON
            let v6754 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v6749 = v6754 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v6755 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v6749 = v6755 
            #endif
#else
            let v6756 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v6749 = v6756 
            #endif
            let v6757 : Async<Async<bool>> = _v6749 
            let! v6757 = v6757 
            let v6762 : Async<bool> = v6757 
            let v6763 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v6764 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v6765 : Async<Choice<bool, exn>> = v6764 v6762
            let _v6763 = v6765 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v6766 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v6767 : Async<Choice<bool, exn>> = v6766 v6762
            let _v6763 = v6767 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v6768 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v6769 : Async<Choice<bool, exn>> = v6768 v6762
            let _v6763 = v6769 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v6770 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v6771 : Async<Choice<bool, exn>> = v6770 v6762
            let _v6763 = v6771 
            #endif
#if FABLE_COMPILER_PYTHON
            let v6772 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v6773 : Async<Choice<bool, exn>> = v6772 v6762
            let _v6763 = v6773 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v6774 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v6775 : Async<Choice<bool, exn>> = v6774 v6762
            let _v6763 = v6775 
            #endif
#else
            let v6776 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v6777 : Async<Choice<bool, exn>> = v6776 v6762
            let _v6763 = v6777 
            #endif
            let v6778 : Async<Choice<bool, exn>> = _v6763 
            let v6783 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v6784 : Async<US7> = null |> unbox<Async<US7>>
            let _v6783 = v6784 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v6787 : Async<US7> = null |> unbox<Async<US7>>
            let _v6783 = v6787 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v6790 : Async<US7> = null |> unbox<Async<US7>>
            let _v6783 = v6790 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v6793 : unit = ()
            let _v6793 =
                async {
                    let! v6778 = v6778 
                    let v6794 : Choice<bool, exn> = v6778 
                    let v6795 : unit = ()
                    
#if FABLE_COMPILER || WASM || CONTRACT
                    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                    let v6796 : US7 = null |> unbox<US7>
                    let _v6795 = v6796 
                    #endif
#if FABLE_COMPILER_RUST && WASM
                    let v6799 : US7 = null |> unbox<US7>
                    let _v6795 = v6799 
                    #endif
#if FABLE_COMPILER_RUST && CONTRACT
                    let v6802 : US7 = null |> unbox<US7>
                    let _v6795 = v6802 
                    #endif
#if FABLE_COMPILER_TYPESCRIPT
                    let v6805 : US7 = null |> unbox<US7>
                    let _v6795 = v6805 
                    #endif
#if FABLE_COMPILER_PYTHON
                    let v6808 : US7 = null |> unbox<US7>
                    let _v6795 = v6808 
                    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                    let v6811 : (bool -> US7) = method21()
                    let v6812 : (exn -> US7) = method22()
                    let v6813 : US7 = match v6794 with Choice1Of2 x -> v6811 x | Choice2Of2 x -> v6812 x
                    let _v6795 = v6813 
                    #endif
#else
                    let v6814 : (bool -> US7) = method21()
                    let v6815 : (exn -> US7) = method22()
                    let v6816 : US7 = match v6794 with Choice1Of2 x -> v6814 x | Choice2Of2 x -> v6815 x
                    let _v6795 = v6816 
                    #endif
                    let v6817 : US7 = _v6795 
                    return v6817 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v6822 : Async<US7> = _v6793 
            let _v6783 = v6822 
            #endif
#if FABLE_COMPILER_PYTHON
            let v6823 : unit = ()
            let _v6823 =
                async {
                    let! v6778 = v6778 
                    let v6824 : Choice<bool, exn> = v6778 
                    let v6825 : unit = ()
                    
#if FABLE_COMPILER || WASM || CONTRACT
                    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                    let v6826 : US7 = null |> unbox<US7>
                    let _v6825 = v6826 
                    #endif
#if FABLE_COMPILER_RUST && WASM
                    let v6829 : US7 = null |> unbox<US7>
                    let _v6825 = v6829 
                    #endif
#if FABLE_COMPILER_RUST && CONTRACT
                    let v6832 : US7 = null |> unbox<US7>
                    let _v6825 = v6832 
                    #endif
#if FABLE_COMPILER_TYPESCRIPT
                    let v6835 : US7 = null |> unbox<US7>
                    let _v6825 = v6835 
                    #endif
#if FABLE_COMPILER_PYTHON
                    let v6838 : US7 = null |> unbox<US7>
                    let _v6825 = v6838 
                    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                    let v6841 : (bool -> US7) = method21()
                    let v6842 : (exn -> US7) = method22()
                    let v6843 : US7 = match v6824 with Choice1Of2 x -> v6841 x | Choice2Of2 x -> v6842 x
                    let _v6825 = v6843 
                    #endif
#else
                    let v6844 : (bool -> US7) = method21()
                    let v6845 : (exn -> US7) = method22()
                    let v6846 : US7 = match v6824 with Choice1Of2 x -> v6844 x | Choice2Of2 x -> v6845 x
                    let _v6825 = v6846 
                    #endif
                    let v6847 : US7 = _v6825 
                    return v6847 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v6852 : Async<US7> = _v6823 
            let _v6783 = v6852 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v6853 : unit = ()
            let _v6853 =
                async {
                    let! v6778 = v6778 
                    let v6854 : Choice<bool, exn> = v6778 
                    let v6855 : unit = ()
                    
#if FABLE_COMPILER || WASM || CONTRACT
                    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                    let v6856 : US7 = null |> unbox<US7>
                    let _v6855 = v6856 
                    #endif
#if FABLE_COMPILER_RUST && WASM
                    let v6859 : US7 = null |> unbox<US7>
                    let _v6855 = v6859 
                    #endif
#if FABLE_COMPILER_RUST && CONTRACT
                    let v6862 : US7 = null |> unbox<US7>
                    let _v6855 = v6862 
                    #endif
#if FABLE_COMPILER_TYPESCRIPT
                    let v6865 : US7 = null |> unbox<US7>
                    let _v6855 = v6865 
                    #endif
#if FABLE_COMPILER_PYTHON
                    let v6868 : US7 = null |> unbox<US7>
                    let _v6855 = v6868 
                    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                    let v6871 : (bool -> US7) = method21()
                    let v6872 : (exn -> US7) = method22()
                    let v6873 : US7 = match v6854 with Choice1Of2 x -> v6871 x | Choice2Of2 x -> v6872 x
                    let _v6855 = v6873 
                    #endif
#else
                    let v6874 : (bool -> US7) = method21()
                    let v6875 : (exn -> US7) = method22()
                    let v6876 : US7 = match v6854 with Choice1Of2 x -> v6874 x | Choice2Of2 x -> v6875 x
                    let _v6855 = v6876 
                    #endif
                    let v6877 : US7 = _v6855 
                    return v6877 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v6882 : Async<US7> = _v6853 
            let _v6783 = v6882 
            #endif
#else
            let v6883 : unit = ()
            let _v6883 =
                async {
                    let! v6778 = v6778 
                    let v6884 : Choice<bool, exn> = v6778 
                    let v6885 : unit = ()
                    
#if FABLE_COMPILER || WASM || CONTRACT
                    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                    let v6886 : US7 = null |> unbox<US7>
                    let _v6885 = v6886 
                    #endif
#if FABLE_COMPILER_RUST && WASM
                    let v6889 : US7 = null |> unbox<US7>
                    let _v6885 = v6889 
                    #endif
#if FABLE_COMPILER_RUST && CONTRACT
                    let v6892 : US7 = null |> unbox<US7>
                    let _v6885 = v6892 
                    #endif
#if FABLE_COMPILER_TYPESCRIPT
                    let v6895 : US7 = null |> unbox<US7>
                    let _v6885 = v6895 
                    #endif
#if FABLE_COMPILER_PYTHON
                    let v6898 : US7 = null |> unbox<US7>
                    let _v6885 = v6898 
                    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                    let v6901 : (bool -> US7) = method21()
                    let v6902 : (exn -> US7) = method22()
                    let v6903 : US7 = match v6884 with Choice1Of2 x -> v6901 x | Choice2Of2 x -> v6902 x
                    let _v6885 = v6903 
                    #endif
#else
                    let v6904 : (bool -> US7) = method21()
                    let v6905 : (exn -> US7) = method22()
                    let v6906 : US7 = match v6884 with Choice1Of2 x -> v6904 x | Choice2Of2 x -> v6905 x
                    let _v6885 = v6906 
                    #endif
                    let v6907 : US7 = _v6885 
                    return v6907 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v6912 : Async<US7> = _v6883 
            let _v6783 = v6912 
            #endif
            let v6913 : Async<US7> = _v6783 
            let v6918 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v6919 : Async<US8> = null |> unbox<Async<US8>>
            let _v6918 = v6919 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v6922 : Async<US8> = null |> unbox<Async<US8>>
            let _v6918 = v6922 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v6925 : Async<US8> = null |> unbox<Async<US8>>
            let _v6918 = v6925 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v6928 : unit = ()
            let _v6928 =
                async {
                    let! v6913 = v6913 
                    let v6929 : US7 = v6913 
                    let v6935 : US8 =
                        match v6929 with
                        | US7_0(v6930) -> (* C1of2 *)
                            US8_0(v6930)
                        | US7_1(v6932) -> (* C2of2 *)
                            US8_1(v6932)
                    return v6935 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v6936 : Async<US8> = _v6928 
            let _v6918 = v6936 
            #endif
#if FABLE_COMPILER_PYTHON
            let v6937 : unit = ()
            let _v6937 =
                async {
                    let! v6913 = v6913 
                    let v6938 : US7 = v6913 
                    let v6944 : US8 =
                        match v6938 with
                        | US7_0(v6939) -> (* C1of2 *)
                            US8_0(v6939)
                        | US7_1(v6941) -> (* C2of2 *)
                            US8_1(v6941)
                    return v6944 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v6945 : Async<US8> = _v6937 
            let _v6918 = v6945 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v6946 : unit = ()
            let _v6946 =
                async {
                    let! v6913 = v6913 
                    let v6947 : US7 = v6913 
                    let v6953 : US8 =
                        match v6947 with
                        | US7_0(v6948) -> (* C1of2 *)
                            US8_0(v6948)
                        | US7_1(v6950) -> (* C2of2 *)
                            US8_1(v6950)
                    return v6953 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v6954 : Async<US8> = _v6946 
            let _v6918 = v6954 
            #endif
#else
            let v6955 : unit = ()
            let _v6955 =
                async {
                    let! v6913 = v6913 
                    let v6956 : US7 = v6913 
                    let v6962 : US8 =
                        match v6956 with
                        | US7_0(v6957) -> (* C1of2 *)
                            US8_0(v6957)
                        | US7_1(v6959) -> (* C2of2 *)
                            US8_1(v6959)
                    return v6962 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v6963 : Async<US8> = _v6955 
            let _v6918 = v6963 
            #endif
            let v6964 : Async<US8> = _v6918 
            let v6969 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v6970 : Async<US6> = null |> unbox<Async<US6>>
            let _v6969 = v6970 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v6973 : Async<US6> = null |> unbox<Async<US6>>
            let _v6969 = v6973 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v6976 : Async<US6> = null |> unbox<Async<US6>>
            let _v6969 = v6976 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v6979 : unit = ()
            let _v6979 =
                async {
                    let! v6964 = v6964 
                    let v6980 : US8 = v6964 
                    let v7104 : US6 =
                        match v6980 with
                        | US8_1(v6983) -> (* Error *)
                            let v6984 : string = $"%A{v6983}"
                            let v6987 : string = "System.TimeoutException"
                            let v6988 : bool = v6984.Contains v6987 
                            if v6988 then
                                let v6991 : unit = ()
                                let v6992 : (unit -> unit) = closure16(v0)
                                let v6993 : unit = (fun () -> v6992 (); v6991) ()
                                US6_1
                            else
                                let v7034 : unit = ()
                                let v7035 : (unit -> unit) = closure17(v0, v6983)
                                let v7036 : unit = (fun () -> v7035 (); v7034) ()
                                US6_1
                        | US8_0(v6981) -> (* Ok *)
                            US6_0(v6981)
                    return v7104 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v7105 : Async<US6> = _v6979 
            let _v6969 = v7105 
            #endif
#if FABLE_COMPILER_PYTHON
            let v7106 : unit = ()
            let _v7106 =
                async {
                    let! v6964 = v6964 
                    let v7107 : US8 = v6964 
                    let v7231 : US6 =
                        match v7107 with
                        | US8_1(v7110) -> (* Error *)
                            let v7111 : string = $"%A{v7110}"
                            let v7114 : string = "System.TimeoutException"
                            let v7115 : bool = v7111.Contains v7114 
                            if v7115 then
                                let v7118 : unit = ()
                                let v7119 : (unit -> unit) = closure16(v0)
                                let v7120 : unit = (fun () -> v7119 (); v7118) ()
                                US6_1
                            else
                                let v7161 : unit = ()
                                let v7162 : (unit -> unit) = closure17(v0, v7110)
                                let v7163 : unit = (fun () -> v7162 (); v7161) ()
                                US6_1
                        | US8_0(v7108) -> (* Ok *)
                            US6_0(v7108)
                    return v7231 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v7232 : Async<US6> = _v7106 
            let _v6969 = v7232 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v7233 : unit = ()
            let _v7233 =
                async {
                    let! v6964 = v6964 
                    let v7234 : US8 = v6964 
                    let v7358 : US6 =
                        match v7234 with
                        | US8_1(v7237) -> (* Error *)
                            let v7238 : string = $"%A{v7237}"
                            let v7241 : string = "System.TimeoutException"
                            let v7242 : bool = v7238.Contains v7241 
                            if v7242 then
                                let v7245 : unit = ()
                                let v7246 : (unit -> unit) = closure16(v0)
                                let v7247 : unit = (fun () -> v7246 (); v7245) ()
                                US6_1
                            else
                                let v7288 : unit = ()
                                let v7289 : (unit -> unit) = closure17(v0, v7237)
                                let v7290 : unit = (fun () -> v7289 (); v7288) ()
                                US6_1
                        | US8_0(v7235) -> (* Ok *)
                            US6_0(v7235)
                    return v7358 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v7359 : Async<US6> = _v7233 
            let _v6969 = v7359 
            #endif
#else
            let v7360 : unit = ()
            let _v7360 =
                async {
                    let! v6964 = v6964 
                    let v7361 : US8 = v6964 
                    let v7485 : US6 =
                        match v7361 with
                        | US8_1(v7364) -> (* Error *)
                            let v7365 : string = $"%A{v7364}"
                            let v7368 : string = "System.TimeoutException"
                            let v7369 : bool = v7365.Contains v7368 
                            if v7369 then
                                let v7372 : unit = ()
                                let v7373 : (unit -> unit) = closure16(v0)
                                let v7374 : unit = (fun () -> v7373 (); v7372) ()
                                US6_1
                            else
                                let v7415 : unit = ()
                                let v7416 : (unit -> unit) = closure17(v0, v7364)
                                let v7417 : unit = (fun () -> v7416 (); v7415) ()
                                US6_1
                        | US8_0(v7362) -> (* Ok *)
                            US6_0(v7362)
                    return v7485 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v7486 : Async<US6> = _v7360 
            let _v6969 = v7486 
            #endif
            let v7487 : Async<US6> = _v6969 
            return! v7487 
            (*
            ()
        *)
        }
        (*
        ()
    *)
    let v7492 : Async<US6> = _v6748 
    let _v5993 = v7492 
    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
    let v7493 : unit = ()
    let _v7493 =
        async {
            let v7494 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v7495 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v7494 = v7495 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v7496 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v7494 = v7496 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v7497 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v7494 = v7497 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v7498 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v7494 = v7498 
            #endif
#if FABLE_COMPILER_PYTHON
            let v7499 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v7494 = v7499 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v7500 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v7494 = v7500 
            #endif
#else
            let v7501 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v7494 = v7501 
            #endif
            let v7502 : Async<Async<bool>> = _v7494 
            let! v7502 = v7502 
            let v7507 : Async<bool> = v7502 
            let v7508 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v7509 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v7510 : Async<Choice<bool, exn>> = v7509 v7507
            let _v7508 = v7510 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v7511 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v7512 : Async<Choice<bool, exn>> = v7511 v7507
            let _v7508 = v7512 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v7513 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v7514 : Async<Choice<bool, exn>> = v7513 v7507
            let _v7508 = v7514 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v7515 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v7516 : Async<Choice<bool, exn>> = v7515 v7507
            let _v7508 = v7516 
            #endif
#if FABLE_COMPILER_PYTHON
            let v7517 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v7518 : Async<Choice<bool, exn>> = v7517 v7507
            let _v7508 = v7518 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v7519 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v7520 : Async<Choice<bool, exn>> = v7519 v7507
            let _v7508 = v7520 
            #endif
#else
            let v7521 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v7522 : Async<Choice<bool, exn>> = v7521 v7507
            let _v7508 = v7522 
            #endif
            let v7523 : Async<Choice<bool, exn>> = _v7508 
            let v7528 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v7529 : Async<US7> = null |> unbox<Async<US7>>
            let _v7528 = v7529 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v7532 : Async<US7> = null |> unbox<Async<US7>>
            let _v7528 = v7532 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v7535 : Async<US7> = null |> unbox<Async<US7>>
            let _v7528 = v7535 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v7538 : unit = ()
            let _v7538 =
                async {
                    let! v7523 = v7523 
                    let v7539 : Choice<bool, exn> = v7523 
                    let v7540 : unit = ()
                    
#if FABLE_COMPILER || WASM || CONTRACT
                    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                    let v7541 : US7 = null |> unbox<US7>
                    let _v7540 = v7541 
                    #endif
#if FABLE_COMPILER_RUST && WASM
                    let v7544 : US7 = null |> unbox<US7>
                    let _v7540 = v7544 
                    #endif
#if FABLE_COMPILER_RUST && CONTRACT
                    let v7547 : US7 = null |> unbox<US7>
                    let _v7540 = v7547 
                    #endif
#if FABLE_COMPILER_TYPESCRIPT
                    let v7550 : US7 = null |> unbox<US7>
                    let _v7540 = v7550 
                    #endif
#if FABLE_COMPILER_PYTHON
                    let v7553 : US7 = null |> unbox<US7>
                    let _v7540 = v7553 
                    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                    let v7556 : (bool -> US7) = method21()
                    let v7557 : (exn -> US7) = method22()
                    let v7558 : US7 = match v7539 with Choice1Of2 x -> v7556 x | Choice2Of2 x -> v7557 x
                    let _v7540 = v7558 
                    #endif
#else
                    let v7559 : (bool -> US7) = method21()
                    let v7560 : (exn -> US7) = method22()
                    let v7561 : US7 = match v7539 with Choice1Of2 x -> v7559 x | Choice2Of2 x -> v7560 x
                    let _v7540 = v7561 
                    #endif
                    let v7562 : US7 = _v7540 
                    return v7562 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v7567 : Async<US7> = _v7538 
            let _v7528 = v7567 
            #endif
#if FABLE_COMPILER_PYTHON
            let v7568 : unit = ()
            let _v7568 =
                async {
                    let! v7523 = v7523 
                    let v7569 : Choice<bool, exn> = v7523 
                    let v7570 : unit = ()
                    
#if FABLE_COMPILER || WASM || CONTRACT
                    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                    let v7571 : US7 = null |> unbox<US7>
                    let _v7570 = v7571 
                    #endif
#if FABLE_COMPILER_RUST && WASM
                    let v7574 : US7 = null |> unbox<US7>
                    let _v7570 = v7574 
                    #endif
#if FABLE_COMPILER_RUST && CONTRACT
                    let v7577 : US7 = null |> unbox<US7>
                    let _v7570 = v7577 
                    #endif
#if FABLE_COMPILER_TYPESCRIPT
                    let v7580 : US7 = null |> unbox<US7>
                    let _v7570 = v7580 
                    #endif
#if FABLE_COMPILER_PYTHON
                    let v7583 : US7 = null |> unbox<US7>
                    let _v7570 = v7583 
                    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                    let v7586 : (bool -> US7) = method21()
                    let v7587 : (exn -> US7) = method22()
                    let v7588 : US7 = match v7569 with Choice1Of2 x -> v7586 x | Choice2Of2 x -> v7587 x
                    let _v7570 = v7588 
                    #endif
#else
                    let v7589 : (bool -> US7) = method21()
                    let v7590 : (exn -> US7) = method22()
                    let v7591 : US7 = match v7569 with Choice1Of2 x -> v7589 x | Choice2Of2 x -> v7590 x
                    let _v7570 = v7591 
                    #endif
                    let v7592 : US7 = _v7570 
                    return v7592 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v7597 : Async<US7> = _v7568 
            let _v7528 = v7597 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v7598 : unit = ()
            let _v7598 =
                async {
                    let! v7523 = v7523 
                    let v7599 : Choice<bool, exn> = v7523 
                    let v7600 : unit = ()
                    
#if FABLE_COMPILER || WASM || CONTRACT
                    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                    let v7601 : US7 = null |> unbox<US7>
                    let _v7600 = v7601 
                    #endif
#if FABLE_COMPILER_RUST && WASM
                    let v7604 : US7 = null |> unbox<US7>
                    let _v7600 = v7604 
                    #endif
#if FABLE_COMPILER_RUST && CONTRACT
                    let v7607 : US7 = null |> unbox<US7>
                    let _v7600 = v7607 
                    #endif
#if FABLE_COMPILER_TYPESCRIPT
                    let v7610 : US7 = null |> unbox<US7>
                    let _v7600 = v7610 
                    #endif
#if FABLE_COMPILER_PYTHON
                    let v7613 : US7 = null |> unbox<US7>
                    let _v7600 = v7613 
                    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                    let v7616 : (bool -> US7) = method21()
                    let v7617 : (exn -> US7) = method22()
                    let v7618 : US7 = match v7599 with Choice1Of2 x -> v7616 x | Choice2Of2 x -> v7617 x
                    let _v7600 = v7618 
                    #endif
#else
                    let v7619 : (bool -> US7) = method21()
                    let v7620 : (exn -> US7) = method22()
                    let v7621 : US7 = match v7599 with Choice1Of2 x -> v7619 x | Choice2Of2 x -> v7620 x
                    let _v7600 = v7621 
                    #endif
                    let v7622 : US7 = _v7600 
                    return v7622 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v7627 : Async<US7> = _v7598 
            let _v7528 = v7627 
            #endif
#else
            let v7628 : unit = ()
            let _v7628 =
                async {
                    let! v7523 = v7523 
                    let v7629 : Choice<bool, exn> = v7523 
                    let v7630 : unit = ()
                    
#if FABLE_COMPILER || WASM || CONTRACT
                    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                    let v7631 : US7 = null |> unbox<US7>
                    let _v7630 = v7631 
                    #endif
#if FABLE_COMPILER_RUST && WASM
                    let v7634 : US7 = null |> unbox<US7>
                    let _v7630 = v7634 
                    #endif
#if FABLE_COMPILER_RUST && CONTRACT
                    let v7637 : US7 = null |> unbox<US7>
                    let _v7630 = v7637 
                    #endif
#if FABLE_COMPILER_TYPESCRIPT
                    let v7640 : US7 = null |> unbox<US7>
                    let _v7630 = v7640 
                    #endif
#if FABLE_COMPILER_PYTHON
                    let v7643 : US7 = null |> unbox<US7>
                    let _v7630 = v7643 
                    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                    let v7646 : (bool -> US7) = method21()
                    let v7647 : (exn -> US7) = method22()
                    let v7648 : US7 = match v7629 with Choice1Of2 x -> v7646 x | Choice2Of2 x -> v7647 x
                    let _v7630 = v7648 
                    #endif
#else
                    let v7649 : (bool -> US7) = method21()
                    let v7650 : (exn -> US7) = method22()
                    let v7651 : US7 = match v7629 with Choice1Of2 x -> v7649 x | Choice2Of2 x -> v7650 x
                    let _v7630 = v7651 
                    #endif
                    let v7652 : US7 = _v7630 
                    return v7652 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v7657 : Async<US7> = _v7628 
            let _v7528 = v7657 
            #endif
            let v7658 : Async<US7> = _v7528 
            let v7663 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v7664 : Async<US8> = null |> unbox<Async<US8>>
            let _v7663 = v7664 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v7667 : Async<US8> = null |> unbox<Async<US8>>
            let _v7663 = v7667 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v7670 : Async<US8> = null |> unbox<Async<US8>>
            let _v7663 = v7670 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v7673 : unit = ()
            let _v7673 =
                async {
                    let! v7658 = v7658 
                    let v7674 : US7 = v7658 
                    let v7680 : US8 =
                        match v7674 with
                        | US7_0(v7675) -> (* C1of2 *)
                            US8_0(v7675)
                        | US7_1(v7677) -> (* C2of2 *)
                            US8_1(v7677)
                    return v7680 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v7681 : Async<US8> = _v7673 
            let _v7663 = v7681 
            #endif
#if FABLE_COMPILER_PYTHON
            let v7682 : unit = ()
            let _v7682 =
                async {
                    let! v7658 = v7658 
                    let v7683 : US7 = v7658 
                    let v7689 : US8 =
                        match v7683 with
                        | US7_0(v7684) -> (* C1of2 *)
                            US8_0(v7684)
                        | US7_1(v7686) -> (* C2of2 *)
                            US8_1(v7686)
                    return v7689 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v7690 : Async<US8> = _v7682 
            let _v7663 = v7690 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v7691 : unit = ()
            let _v7691 =
                async {
                    let! v7658 = v7658 
                    let v7692 : US7 = v7658 
                    let v7698 : US8 =
                        match v7692 with
                        | US7_0(v7693) -> (* C1of2 *)
                            US8_0(v7693)
                        | US7_1(v7695) -> (* C2of2 *)
                            US8_1(v7695)
                    return v7698 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v7699 : Async<US8> = _v7691 
            let _v7663 = v7699 
            #endif
#else
            let v7700 : unit = ()
            let _v7700 =
                async {
                    let! v7658 = v7658 
                    let v7701 : US7 = v7658 
                    let v7707 : US8 =
                        match v7701 with
                        | US7_0(v7702) -> (* C1of2 *)
                            US8_0(v7702)
                        | US7_1(v7704) -> (* C2of2 *)
                            US8_1(v7704)
                    return v7707 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v7708 : Async<US8> = _v7700 
            let _v7663 = v7708 
            #endif
            let v7709 : Async<US8> = _v7663 
            let v7714 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v7715 : Async<US6> = null |> unbox<Async<US6>>
            let _v7714 = v7715 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v7718 : Async<US6> = null |> unbox<Async<US6>>
            let _v7714 = v7718 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v7721 : Async<US6> = null |> unbox<Async<US6>>
            let _v7714 = v7721 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v7724 : unit = ()
            let _v7724 =
                async {
                    let! v7709 = v7709 
                    let v7725 : US8 = v7709 
                    let v7849 : US6 =
                        match v7725 with
                        | US8_1(v7728) -> (* Error *)
                            let v7729 : string = $"%A{v7728}"
                            let v7732 : string = "System.TimeoutException"
                            let v7733 : bool = v7729.Contains v7732 
                            if v7733 then
                                let v7736 : unit = ()
                                let v7737 : (unit -> unit) = closure16(v0)
                                let v7738 : unit = (fun () -> v7737 (); v7736) ()
                                US6_1
                            else
                                let v7779 : unit = ()
                                let v7780 : (unit -> unit) = closure17(v0, v7728)
                                let v7781 : unit = (fun () -> v7780 (); v7779) ()
                                US6_1
                        | US8_0(v7726) -> (* Ok *)
                            US6_0(v7726)
                    return v7849 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v7850 : Async<US6> = _v7724 
            let _v7714 = v7850 
            #endif
#if FABLE_COMPILER_PYTHON
            let v7851 : unit = ()
            let _v7851 =
                async {
                    let! v7709 = v7709 
                    let v7852 : US8 = v7709 
                    let v7976 : US6 =
                        match v7852 with
                        | US8_1(v7855) -> (* Error *)
                            let v7856 : string = $"%A{v7855}"
                            let v7859 : string = "System.TimeoutException"
                            let v7860 : bool = v7856.Contains v7859 
                            if v7860 then
                                let v7863 : unit = ()
                                let v7864 : (unit -> unit) = closure16(v0)
                                let v7865 : unit = (fun () -> v7864 (); v7863) ()
                                US6_1
                            else
                                let v7906 : unit = ()
                                let v7907 : (unit -> unit) = closure17(v0, v7855)
                                let v7908 : unit = (fun () -> v7907 (); v7906) ()
                                US6_1
                        | US8_0(v7853) -> (* Ok *)
                            US6_0(v7853)
                    return v7976 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v7977 : Async<US6> = _v7851 
            let _v7714 = v7977 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v7978 : unit = ()
            let _v7978 =
                async {
                    let! v7709 = v7709 
                    let v7979 : US8 = v7709 
                    let v8103 : US6 =
                        match v7979 with
                        | US8_1(v7982) -> (* Error *)
                            let v7983 : string = $"%A{v7982}"
                            let v7986 : string = "System.TimeoutException"
                            let v7987 : bool = v7983.Contains v7986 
                            if v7987 then
                                let v7990 : unit = ()
                                let v7991 : (unit -> unit) = closure16(v0)
                                let v7992 : unit = (fun () -> v7991 (); v7990) ()
                                US6_1
                            else
                                let v8033 : unit = ()
                                let v8034 : (unit -> unit) = closure17(v0, v7982)
                                let v8035 : unit = (fun () -> v8034 (); v8033) ()
                                US6_1
                        | US8_0(v7980) -> (* Ok *)
                            US6_0(v7980)
                    return v8103 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v8104 : Async<US6> = _v7978 
            let _v7714 = v8104 
            #endif
#else
            let v8105 : unit = ()
            let _v8105 =
                async {
                    let! v7709 = v7709 
                    let v8106 : US8 = v7709 
                    let v8230 : US6 =
                        match v8106 with
                        | US8_1(v8109) -> (* Error *)
                            let v8110 : string = $"%A{v8109}"
                            let v8113 : string = "System.TimeoutException"
                            let v8114 : bool = v8110.Contains v8113 
                            if v8114 then
                                let v8117 : unit = ()
                                let v8118 : (unit -> unit) = closure16(v0)
                                let v8119 : unit = (fun () -> v8118 (); v8117) ()
                                US6_1
                            else
                                let v8160 : unit = ()
                                let v8161 : (unit -> unit) = closure17(v0, v8109)
                                let v8162 : unit = (fun () -> v8161 (); v8160) ()
                                US6_1
                        | US8_0(v8107) -> (* Ok *)
                            US6_0(v8107)
                    return v8230 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v8231 : Async<US6> = _v8105 
            let _v7714 = v8231 
            #endif
            let v8232 : Async<US6> = _v7714 
            return! v8232 
            (*
            ()
        *)
        }
        (*
        ()
    *)
    let v8237 : Async<US6> = _v7493 
    let _v5993 = v8237 
    #endif
#else
    let v8238 : unit = ()
    let _v8238 =
        async {
            let v8239 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v8240 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v8239 = v8240 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v8241 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v8239 = v8241 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v8242 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v8239 = v8242 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v8243 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v8239 = v8243 
            #endif
#if FABLE_COMPILER_PYTHON
            let v8244 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v8239 = v8244 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v8245 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v8239 = v8245 
            #endif
#else
            let v8246 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v8239 = v8246 
            #endif
            let v8247 : Async<Async<bool>> = _v8239 
            let! v8247 = v8247 
            let v8252 : Async<bool> = v8247 
            let v8253 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v8254 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v8255 : Async<Choice<bool, exn>> = v8254 v8252
            let _v8253 = v8255 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v8256 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v8257 : Async<Choice<bool, exn>> = v8256 v8252
            let _v8253 = v8257 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v8258 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v8259 : Async<Choice<bool, exn>> = v8258 v8252
            let _v8253 = v8259 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v8260 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v8261 : Async<Choice<bool, exn>> = v8260 v8252
            let _v8253 = v8261 
            #endif
#if FABLE_COMPILER_PYTHON
            let v8262 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v8263 : Async<Choice<bool, exn>> = v8262 v8252
            let _v8253 = v8263 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v8264 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v8265 : Async<Choice<bool, exn>> = v8264 v8252
            let _v8253 = v8265 
            #endif
#else
            let v8266 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v8267 : Async<Choice<bool, exn>> = v8266 v8252
            let _v8253 = v8267 
            #endif
            let v8268 : Async<Choice<bool, exn>> = _v8253 
            let v8273 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v8274 : Async<US7> = null |> unbox<Async<US7>>
            let _v8273 = v8274 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v8277 : Async<US7> = null |> unbox<Async<US7>>
            let _v8273 = v8277 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v8280 : Async<US7> = null |> unbox<Async<US7>>
            let _v8273 = v8280 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v8283 : unit = ()
            let _v8283 =
                async {
                    let! v8268 = v8268 
                    let v8284 : Choice<bool, exn> = v8268 
                    let v8285 : unit = ()
                    
#if FABLE_COMPILER || WASM || CONTRACT
                    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                    let v8286 : US7 = null |> unbox<US7>
                    let _v8285 = v8286 
                    #endif
#if FABLE_COMPILER_RUST && WASM
                    let v8289 : US7 = null |> unbox<US7>
                    let _v8285 = v8289 
                    #endif
#if FABLE_COMPILER_RUST && CONTRACT
                    let v8292 : US7 = null |> unbox<US7>
                    let _v8285 = v8292 
                    #endif
#if FABLE_COMPILER_TYPESCRIPT
                    let v8295 : US7 = null |> unbox<US7>
                    let _v8285 = v8295 
                    #endif
#if FABLE_COMPILER_PYTHON
                    let v8298 : US7 = null |> unbox<US7>
                    let _v8285 = v8298 
                    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                    let v8301 : (bool -> US7) = method21()
                    let v8302 : (exn -> US7) = method22()
                    let v8303 : US7 = match v8284 with Choice1Of2 x -> v8301 x | Choice2Of2 x -> v8302 x
                    let _v8285 = v8303 
                    #endif
#else
                    let v8304 : (bool -> US7) = method21()
                    let v8305 : (exn -> US7) = method22()
                    let v8306 : US7 = match v8284 with Choice1Of2 x -> v8304 x | Choice2Of2 x -> v8305 x
                    let _v8285 = v8306 
                    #endif
                    let v8307 : US7 = _v8285 
                    return v8307 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v8312 : Async<US7> = _v8283 
            let _v8273 = v8312 
            #endif
#if FABLE_COMPILER_PYTHON
            let v8313 : unit = ()
            let _v8313 =
                async {
                    let! v8268 = v8268 
                    let v8314 : Choice<bool, exn> = v8268 
                    let v8315 : unit = ()
                    
#if FABLE_COMPILER || WASM || CONTRACT
                    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                    let v8316 : US7 = null |> unbox<US7>
                    let _v8315 = v8316 
                    #endif
#if FABLE_COMPILER_RUST && WASM
                    let v8319 : US7 = null |> unbox<US7>
                    let _v8315 = v8319 
                    #endif
#if FABLE_COMPILER_RUST && CONTRACT
                    let v8322 : US7 = null |> unbox<US7>
                    let _v8315 = v8322 
                    #endif
#if FABLE_COMPILER_TYPESCRIPT
                    let v8325 : US7 = null |> unbox<US7>
                    let _v8315 = v8325 
                    #endif
#if FABLE_COMPILER_PYTHON
                    let v8328 : US7 = null |> unbox<US7>
                    let _v8315 = v8328 
                    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                    let v8331 : (bool -> US7) = method21()
                    let v8332 : (exn -> US7) = method22()
                    let v8333 : US7 = match v8314 with Choice1Of2 x -> v8331 x | Choice2Of2 x -> v8332 x
                    let _v8315 = v8333 
                    #endif
#else
                    let v8334 : (bool -> US7) = method21()
                    let v8335 : (exn -> US7) = method22()
                    let v8336 : US7 = match v8314 with Choice1Of2 x -> v8334 x | Choice2Of2 x -> v8335 x
                    let _v8315 = v8336 
                    #endif
                    let v8337 : US7 = _v8315 
                    return v8337 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v8342 : Async<US7> = _v8313 
            let _v8273 = v8342 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v8343 : unit = ()
            let _v8343 =
                async {
                    let! v8268 = v8268 
                    let v8344 : Choice<bool, exn> = v8268 
                    let v8345 : unit = ()
                    
#if FABLE_COMPILER || WASM || CONTRACT
                    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                    let v8346 : US7 = null |> unbox<US7>
                    let _v8345 = v8346 
                    #endif
#if FABLE_COMPILER_RUST && WASM
                    let v8349 : US7 = null |> unbox<US7>
                    let _v8345 = v8349 
                    #endif
#if FABLE_COMPILER_RUST && CONTRACT
                    let v8352 : US7 = null |> unbox<US7>
                    let _v8345 = v8352 
                    #endif
#if FABLE_COMPILER_TYPESCRIPT
                    let v8355 : US7 = null |> unbox<US7>
                    let _v8345 = v8355 
                    #endif
#if FABLE_COMPILER_PYTHON
                    let v8358 : US7 = null |> unbox<US7>
                    let _v8345 = v8358 
                    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                    let v8361 : (bool -> US7) = method21()
                    let v8362 : (exn -> US7) = method22()
                    let v8363 : US7 = match v8344 with Choice1Of2 x -> v8361 x | Choice2Of2 x -> v8362 x
                    let _v8345 = v8363 
                    #endif
#else
                    let v8364 : (bool -> US7) = method21()
                    let v8365 : (exn -> US7) = method22()
                    let v8366 : US7 = match v8344 with Choice1Of2 x -> v8364 x | Choice2Of2 x -> v8365 x
                    let _v8345 = v8366 
                    #endif
                    let v8367 : US7 = _v8345 
                    return v8367 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v8372 : Async<US7> = _v8343 
            let _v8273 = v8372 
            #endif
#else
            let v8373 : unit = ()
            let _v8373 =
                async {
                    let! v8268 = v8268 
                    let v8374 : Choice<bool, exn> = v8268 
                    let v8375 : unit = ()
                    
#if FABLE_COMPILER || WASM || CONTRACT
                    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                    let v8376 : US7 = null |> unbox<US7>
                    let _v8375 = v8376 
                    #endif
#if FABLE_COMPILER_RUST && WASM
                    let v8379 : US7 = null |> unbox<US7>
                    let _v8375 = v8379 
                    #endif
#if FABLE_COMPILER_RUST && CONTRACT
                    let v8382 : US7 = null |> unbox<US7>
                    let _v8375 = v8382 
                    #endif
#if FABLE_COMPILER_TYPESCRIPT
                    let v8385 : US7 = null |> unbox<US7>
                    let _v8375 = v8385 
                    #endif
#if FABLE_COMPILER_PYTHON
                    let v8388 : US7 = null |> unbox<US7>
                    let _v8375 = v8388 
                    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                    let v8391 : (bool -> US7) = method21()
                    let v8392 : (exn -> US7) = method22()
                    let v8393 : US7 = match v8374 with Choice1Of2 x -> v8391 x | Choice2Of2 x -> v8392 x
                    let _v8375 = v8393 
                    #endif
#else
                    let v8394 : (bool -> US7) = method21()
                    let v8395 : (exn -> US7) = method22()
                    let v8396 : US7 = match v8374 with Choice1Of2 x -> v8394 x | Choice2Of2 x -> v8395 x
                    let _v8375 = v8396 
                    #endif
                    let v8397 : US7 = _v8375 
                    return v8397 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v8402 : Async<US7> = _v8373 
            let _v8273 = v8402 
            #endif
            let v8403 : Async<US7> = _v8273 
            let v8408 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v8409 : Async<US8> = null |> unbox<Async<US8>>
            let _v8408 = v8409 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v8412 : Async<US8> = null |> unbox<Async<US8>>
            let _v8408 = v8412 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v8415 : Async<US8> = null |> unbox<Async<US8>>
            let _v8408 = v8415 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v8418 : unit = ()
            let _v8418 =
                async {
                    let! v8403 = v8403 
                    let v8419 : US7 = v8403 
                    let v8425 : US8 =
                        match v8419 with
                        | US7_0(v8420) -> (* C1of2 *)
                            US8_0(v8420)
                        | US7_1(v8422) -> (* C2of2 *)
                            US8_1(v8422)
                    return v8425 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v8426 : Async<US8> = _v8418 
            let _v8408 = v8426 
            #endif
#if FABLE_COMPILER_PYTHON
            let v8427 : unit = ()
            let _v8427 =
                async {
                    let! v8403 = v8403 
                    let v8428 : US7 = v8403 
                    let v8434 : US8 =
                        match v8428 with
                        | US7_0(v8429) -> (* C1of2 *)
                            US8_0(v8429)
                        | US7_1(v8431) -> (* C2of2 *)
                            US8_1(v8431)
                    return v8434 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v8435 : Async<US8> = _v8427 
            let _v8408 = v8435 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v8436 : unit = ()
            let _v8436 =
                async {
                    let! v8403 = v8403 
                    let v8437 : US7 = v8403 
                    let v8443 : US8 =
                        match v8437 with
                        | US7_0(v8438) -> (* C1of2 *)
                            US8_0(v8438)
                        | US7_1(v8440) -> (* C2of2 *)
                            US8_1(v8440)
                    return v8443 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v8444 : Async<US8> = _v8436 
            let _v8408 = v8444 
            #endif
#else
            let v8445 : unit = ()
            let _v8445 =
                async {
                    let! v8403 = v8403 
                    let v8446 : US7 = v8403 
                    let v8452 : US8 =
                        match v8446 with
                        | US7_0(v8447) -> (* C1of2 *)
                            US8_0(v8447)
                        | US7_1(v8449) -> (* C2of2 *)
                            US8_1(v8449)
                    return v8452 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v8453 : Async<US8> = _v8445 
            let _v8408 = v8453 
            #endif
            let v8454 : Async<US8> = _v8408 
            let v8459 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v8460 : Async<US6> = null |> unbox<Async<US6>>
            let _v8459 = v8460 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v8463 : Async<US6> = null |> unbox<Async<US6>>
            let _v8459 = v8463 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v8466 : Async<US6> = null |> unbox<Async<US6>>
            let _v8459 = v8466 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v8469 : unit = ()
            let _v8469 =
                async {
                    let! v8454 = v8454 
                    let v8470 : US8 = v8454 
                    let v8594 : US6 =
                        match v8470 with
                        | US8_1(v8473) -> (* Error *)
                            let v8474 : string = $"%A{v8473}"
                            let v8477 : string = "System.TimeoutException"
                            let v8478 : bool = v8474.Contains v8477 
                            if v8478 then
                                let v8481 : unit = ()
                                let v8482 : (unit -> unit) = closure16(v0)
                                let v8483 : unit = (fun () -> v8482 (); v8481) ()
                                US6_1
                            else
                                let v8524 : unit = ()
                                let v8525 : (unit -> unit) = closure17(v0, v8473)
                                let v8526 : unit = (fun () -> v8525 (); v8524) ()
                                US6_1
                        | US8_0(v8471) -> (* Ok *)
                            US6_0(v8471)
                    return v8594 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v8595 : Async<US6> = _v8469 
            let _v8459 = v8595 
            #endif
#if FABLE_COMPILER_PYTHON
            let v8596 : unit = ()
            let _v8596 =
                async {
                    let! v8454 = v8454 
                    let v8597 : US8 = v8454 
                    let v8721 : US6 =
                        match v8597 with
                        | US8_1(v8600) -> (* Error *)
                            let v8601 : string = $"%A{v8600}"
                            let v8604 : string = "System.TimeoutException"
                            let v8605 : bool = v8601.Contains v8604 
                            if v8605 then
                                let v8608 : unit = ()
                                let v8609 : (unit -> unit) = closure16(v0)
                                let v8610 : unit = (fun () -> v8609 (); v8608) ()
                                US6_1
                            else
                                let v8651 : unit = ()
                                let v8652 : (unit -> unit) = closure17(v0, v8600)
                                let v8653 : unit = (fun () -> v8652 (); v8651) ()
                                US6_1
                        | US8_0(v8598) -> (* Ok *)
                            US6_0(v8598)
                    return v8721 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v8722 : Async<US6> = _v8596 
            let _v8459 = v8722 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v8723 : unit = ()
            let _v8723 =
                async {
                    let! v8454 = v8454 
                    let v8724 : US8 = v8454 
                    let v8848 : US6 =
                        match v8724 with
                        | US8_1(v8727) -> (* Error *)
                            let v8728 : string = $"%A{v8727}"
                            let v8731 : string = "System.TimeoutException"
                            let v8732 : bool = v8728.Contains v8731 
                            if v8732 then
                                let v8735 : unit = ()
                                let v8736 : (unit -> unit) = closure16(v0)
                                let v8737 : unit = (fun () -> v8736 (); v8735) ()
                                US6_1
                            else
                                let v8778 : unit = ()
                                let v8779 : (unit -> unit) = closure17(v0, v8727)
                                let v8780 : unit = (fun () -> v8779 (); v8778) ()
                                US6_1
                        | US8_0(v8725) -> (* Ok *)
                            US6_0(v8725)
                    return v8848 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v8849 : Async<US6> = _v8723 
            let _v8459 = v8849 
            #endif
#else
            let v8850 : unit = ()
            let _v8850 =
                async {
                    let! v8454 = v8454 
                    let v8851 : US8 = v8454 
                    let v8975 : US6 =
                        match v8851 with
                        | US8_1(v8854) -> (* Error *)
                            let v8855 : string = $"%A{v8854}"
                            let v8858 : string = "System.TimeoutException"
                            let v8859 : bool = v8855.Contains v8858 
                            if v8859 then
                                let v8862 : unit = ()
                                let v8863 : (unit -> unit) = closure16(v0)
                                let v8864 : unit = (fun () -> v8863 (); v8862) ()
                                US6_1
                            else
                                let v8905 : unit = ()
                                let v8906 : (unit -> unit) = closure17(v0, v8854)
                                let v8907 : unit = (fun () -> v8906 (); v8905) ()
                                US6_1
                        | US8_0(v8852) -> (* Ok *)
                            US6_0(v8852)
                    return v8975 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v8976 : Async<US6> = _v8850 
            let _v8459 = v8976 
            #endif
            let v8977 : Async<US6> = _v8459 
            return! v8977 
            (*
            ()
        *)
        }
        (*
        ()
    *)
    let v8982 : Async<US6> = _v8238 
    let _v5993 = v8982 
    #endif
    let v8983 : Async<US6> = _v5993 
    let _v2 = v8983 
    #endif
#if FABLE_COMPILER_TYPESCRIPT
    let v8988 : unit = ()
    
#if FABLE_COMPILER || WASM || CONTRACT
    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
    let v8989 : Async<US6> = null |> unbox<Async<US6>>
    let _v8988 = v8989 
    #endif
#if FABLE_COMPILER_RUST && WASM
    let v8992 : Async<US6> = null |> unbox<Async<US6>>
    let _v8988 = v8992 
    #endif
#if FABLE_COMPILER_RUST && CONTRACT
    let v8995 : Async<US6> = null |> unbox<Async<US6>>
    let _v8988 = v8995 
    #endif
#if FABLE_COMPILER_TYPESCRIPT
    let v8998 : unit = ()
    let _v8998 =
        async {
            let v8999 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v9000 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v8999 = v9000 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v9001 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v8999 = v9001 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v9002 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v8999 = v9002 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v9003 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v8999 = v9003 
            #endif
#if FABLE_COMPILER_PYTHON
            let v9004 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v8999 = v9004 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v9005 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v8999 = v9005 
            #endif
#else
            let v9006 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v8999 = v9006 
            #endif
            let v9007 : Async<Async<bool>> = _v8999 
            let! v9007 = v9007 
            let v9012 : Async<bool> = v9007 
            let v9013 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v9014 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v9015 : Async<Choice<bool, exn>> = v9014 v9012
            let _v9013 = v9015 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v9016 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v9017 : Async<Choice<bool, exn>> = v9016 v9012
            let _v9013 = v9017 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v9018 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v9019 : Async<Choice<bool, exn>> = v9018 v9012
            let _v9013 = v9019 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v9020 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v9021 : Async<Choice<bool, exn>> = v9020 v9012
            let _v9013 = v9021 
            #endif
#if FABLE_COMPILER_PYTHON
            let v9022 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v9023 : Async<Choice<bool, exn>> = v9022 v9012
            let _v9013 = v9023 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v9024 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v9025 : Async<Choice<bool, exn>> = v9024 v9012
            let _v9013 = v9025 
            #endif
#else
            let v9026 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v9027 : Async<Choice<bool, exn>> = v9026 v9012
            let _v9013 = v9027 
            #endif
            let v9028 : Async<Choice<bool, exn>> = _v9013 
            let v9033 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v9034 : Async<US7> = null |> unbox<Async<US7>>
            let _v9033 = v9034 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v9037 : Async<US7> = null |> unbox<Async<US7>>
            let _v9033 = v9037 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v9040 : Async<US7> = null |> unbox<Async<US7>>
            let _v9033 = v9040 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v9043 : unit = ()
            let _v9043 =
                async {
                    let! v9028 = v9028 
                    let v9044 : Choice<bool, exn> = v9028 
                    let v9045 : unit = ()
                    
#if FABLE_COMPILER || WASM || CONTRACT
                    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                    let v9046 : US7 = null |> unbox<US7>
                    let _v9045 = v9046 
                    #endif
#if FABLE_COMPILER_RUST && WASM
                    let v9049 : US7 = null |> unbox<US7>
                    let _v9045 = v9049 
                    #endif
#if FABLE_COMPILER_RUST && CONTRACT
                    let v9052 : US7 = null |> unbox<US7>
                    let _v9045 = v9052 
                    #endif
#if FABLE_COMPILER_TYPESCRIPT
                    let v9055 : US7 = null |> unbox<US7>
                    let _v9045 = v9055 
                    #endif
#if FABLE_COMPILER_PYTHON
                    let v9058 : US7 = null |> unbox<US7>
                    let _v9045 = v9058 
                    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                    let v9061 : (bool -> US7) = method21()
                    let v9062 : (exn -> US7) = method22()
                    let v9063 : US7 = match v9044 with Choice1Of2 x -> v9061 x | Choice2Of2 x -> v9062 x
                    let _v9045 = v9063 
                    #endif
#else
                    let v9064 : (bool -> US7) = method21()
                    let v9065 : (exn -> US7) = method22()
                    let v9066 : US7 = match v9044 with Choice1Of2 x -> v9064 x | Choice2Of2 x -> v9065 x
                    let _v9045 = v9066 
                    #endif
                    let v9067 : US7 = _v9045 
                    return v9067 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v9072 : Async<US7> = _v9043 
            let _v9033 = v9072 
            #endif
#if FABLE_COMPILER_PYTHON
            let v9073 : unit = ()
            let _v9073 =
                async {
                    let! v9028 = v9028 
                    let v9074 : Choice<bool, exn> = v9028 
                    let v9075 : unit = ()
                    
#if FABLE_COMPILER || WASM || CONTRACT
                    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                    let v9076 : US7 = null |> unbox<US7>
                    let _v9075 = v9076 
                    #endif
#if FABLE_COMPILER_RUST && WASM
                    let v9079 : US7 = null |> unbox<US7>
                    let _v9075 = v9079 
                    #endif
#if FABLE_COMPILER_RUST && CONTRACT
                    let v9082 : US7 = null |> unbox<US7>
                    let _v9075 = v9082 
                    #endif
#if FABLE_COMPILER_TYPESCRIPT
                    let v9085 : US7 = null |> unbox<US7>
                    let _v9075 = v9085 
                    #endif
#if FABLE_COMPILER_PYTHON
                    let v9088 : US7 = null |> unbox<US7>
                    let _v9075 = v9088 
                    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                    let v9091 : (bool -> US7) = method21()
                    let v9092 : (exn -> US7) = method22()
                    let v9093 : US7 = match v9074 with Choice1Of2 x -> v9091 x | Choice2Of2 x -> v9092 x
                    let _v9075 = v9093 
                    #endif
#else
                    let v9094 : (bool -> US7) = method21()
                    let v9095 : (exn -> US7) = method22()
                    let v9096 : US7 = match v9074 with Choice1Of2 x -> v9094 x | Choice2Of2 x -> v9095 x
                    let _v9075 = v9096 
                    #endif
                    let v9097 : US7 = _v9075 
                    return v9097 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v9102 : Async<US7> = _v9073 
            let _v9033 = v9102 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v9103 : unit = ()
            let _v9103 =
                async {
                    let! v9028 = v9028 
                    let v9104 : Choice<bool, exn> = v9028 
                    let v9105 : unit = ()
                    
#if FABLE_COMPILER || WASM || CONTRACT
                    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                    let v9106 : US7 = null |> unbox<US7>
                    let _v9105 = v9106 
                    #endif
#if FABLE_COMPILER_RUST && WASM
                    let v9109 : US7 = null |> unbox<US7>
                    let _v9105 = v9109 
                    #endif
#if FABLE_COMPILER_RUST && CONTRACT
                    let v9112 : US7 = null |> unbox<US7>
                    let _v9105 = v9112 
                    #endif
#if FABLE_COMPILER_TYPESCRIPT
                    let v9115 : US7 = null |> unbox<US7>
                    let _v9105 = v9115 
                    #endif
#if FABLE_COMPILER_PYTHON
                    let v9118 : US7 = null |> unbox<US7>
                    let _v9105 = v9118 
                    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                    let v9121 : (bool -> US7) = method21()
                    let v9122 : (exn -> US7) = method22()
                    let v9123 : US7 = match v9104 with Choice1Of2 x -> v9121 x | Choice2Of2 x -> v9122 x
                    let _v9105 = v9123 
                    #endif
#else
                    let v9124 : (bool -> US7) = method21()
                    let v9125 : (exn -> US7) = method22()
                    let v9126 : US7 = match v9104 with Choice1Of2 x -> v9124 x | Choice2Of2 x -> v9125 x
                    let _v9105 = v9126 
                    #endif
                    let v9127 : US7 = _v9105 
                    return v9127 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v9132 : Async<US7> = _v9103 
            let _v9033 = v9132 
            #endif
#else
            let v9133 : unit = ()
            let _v9133 =
                async {
                    let! v9028 = v9028 
                    let v9134 : Choice<bool, exn> = v9028 
                    let v9135 : unit = ()
                    
#if FABLE_COMPILER || WASM || CONTRACT
                    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                    let v9136 : US7 = null |> unbox<US7>
                    let _v9135 = v9136 
                    #endif
#if FABLE_COMPILER_RUST && WASM
                    let v9139 : US7 = null |> unbox<US7>
                    let _v9135 = v9139 
                    #endif
#if FABLE_COMPILER_RUST && CONTRACT
                    let v9142 : US7 = null |> unbox<US7>
                    let _v9135 = v9142 
                    #endif
#if FABLE_COMPILER_TYPESCRIPT
                    let v9145 : US7 = null |> unbox<US7>
                    let _v9135 = v9145 
                    #endif
#if FABLE_COMPILER_PYTHON
                    let v9148 : US7 = null |> unbox<US7>
                    let _v9135 = v9148 
                    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                    let v9151 : (bool -> US7) = method21()
                    let v9152 : (exn -> US7) = method22()
                    let v9153 : US7 = match v9134 with Choice1Of2 x -> v9151 x | Choice2Of2 x -> v9152 x
                    let _v9135 = v9153 
                    #endif
#else
                    let v9154 : (bool -> US7) = method21()
                    let v9155 : (exn -> US7) = method22()
                    let v9156 : US7 = match v9134 with Choice1Of2 x -> v9154 x | Choice2Of2 x -> v9155 x
                    let _v9135 = v9156 
                    #endif
                    let v9157 : US7 = _v9135 
                    return v9157 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v9162 : Async<US7> = _v9133 
            let _v9033 = v9162 
            #endif
            let v9163 : Async<US7> = _v9033 
            let v9168 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v9169 : Async<US8> = null |> unbox<Async<US8>>
            let _v9168 = v9169 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v9172 : Async<US8> = null |> unbox<Async<US8>>
            let _v9168 = v9172 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v9175 : Async<US8> = null |> unbox<Async<US8>>
            let _v9168 = v9175 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v9178 : unit = ()
            let _v9178 =
                async {
                    let! v9163 = v9163 
                    let v9179 : US7 = v9163 
                    let v9185 : US8 =
                        match v9179 with
                        | US7_0(v9180) -> (* C1of2 *)
                            US8_0(v9180)
                        | US7_1(v9182) -> (* C2of2 *)
                            US8_1(v9182)
                    return v9185 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v9186 : Async<US8> = _v9178 
            let _v9168 = v9186 
            #endif
#if FABLE_COMPILER_PYTHON
            let v9187 : unit = ()
            let _v9187 =
                async {
                    let! v9163 = v9163 
                    let v9188 : US7 = v9163 
                    let v9194 : US8 =
                        match v9188 with
                        | US7_0(v9189) -> (* C1of2 *)
                            US8_0(v9189)
                        | US7_1(v9191) -> (* C2of2 *)
                            US8_1(v9191)
                    return v9194 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v9195 : Async<US8> = _v9187 
            let _v9168 = v9195 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v9196 : unit = ()
            let _v9196 =
                async {
                    let! v9163 = v9163 
                    let v9197 : US7 = v9163 
                    let v9203 : US8 =
                        match v9197 with
                        | US7_0(v9198) -> (* C1of2 *)
                            US8_0(v9198)
                        | US7_1(v9200) -> (* C2of2 *)
                            US8_1(v9200)
                    return v9203 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v9204 : Async<US8> = _v9196 
            let _v9168 = v9204 
            #endif
#else
            let v9205 : unit = ()
            let _v9205 =
                async {
                    let! v9163 = v9163 
                    let v9206 : US7 = v9163 
                    let v9212 : US8 =
                        match v9206 with
                        | US7_0(v9207) -> (* C1of2 *)
                            US8_0(v9207)
                        | US7_1(v9209) -> (* C2of2 *)
                            US8_1(v9209)
                    return v9212 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v9213 : Async<US8> = _v9205 
            let _v9168 = v9213 
            #endif
            let v9214 : Async<US8> = _v9168 
            let v9219 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v9220 : Async<US6> = null |> unbox<Async<US6>>
            let _v9219 = v9220 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v9223 : Async<US6> = null |> unbox<Async<US6>>
            let _v9219 = v9223 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v9226 : Async<US6> = null |> unbox<Async<US6>>
            let _v9219 = v9226 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v9229 : unit = ()
            let _v9229 =
                async {
                    let! v9214 = v9214 
                    let v9230 : US8 = v9214 
                    let v9354 : US6 =
                        match v9230 with
                        | US8_1(v9233) -> (* Error *)
                            let v9234 : string = $"%A{v9233}"
                            let v9237 : string = "System.TimeoutException"
                            let v9238 : bool = v9234.Contains v9237 
                            if v9238 then
                                let v9241 : unit = ()
                                let v9242 : (unit -> unit) = closure16(v0)
                                let v9243 : unit = (fun () -> v9242 (); v9241) ()
                                US6_1
                            else
                                let v9284 : unit = ()
                                let v9285 : (unit -> unit) = closure17(v0, v9233)
                                let v9286 : unit = (fun () -> v9285 (); v9284) ()
                                US6_1
                        | US8_0(v9231) -> (* Ok *)
                            US6_0(v9231)
                    return v9354 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v9355 : Async<US6> = _v9229 
            let _v9219 = v9355 
            #endif
#if FABLE_COMPILER_PYTHON
            let v9356 : unit = ()
            let _v9356 =
                async {
                    let! v9214 = v9214 
                    let v9357 : US8 = v9214 
                    let v9481 : US6 =
                        match v9357 with
                        | US8_1(v9360) -> (* Error *)
                            let v9361 : string = $"%A{v9360}"
                            let v9364 : string = "System.TimeoutException"
                            let v9365 : bool = v9361.Contains v9364 
                            if v9365 then
                                let v9368 : unit = ()
                                let v9369 : (unit -> unit) = closure16(v0)
                                let v9370 : unit = (fun () -> v9369 (); v9368) ()
                                US6_1
                            else
                                let v9411 : unit = ()
                                let v9412 : (unit -> unit) = closure17(v0, v9360)
                                let v9413 : unit = (fun () -> v9412 (); v9411) ()
                                US6_1
                        | US8_0(v9358) -> (* Ok *)
                            US6_0(v9358)
                    return v9481 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v9482 : Async<US6> = _v9356 
            let _v9219 = v9482 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v9483 : unit = ()
            let _v9483 =
                async {
                    let! v9214 = v9214 
                    let v9484 : US8 = v9214 
                    let v9608 : US6 =
                        match v9484 with
                        | US8_1(v9487) -> (* Error *)
                            let v9488 : string = $"%A{v9487}"
                            let v9491 : string = "System.TimeoutException"
                            let v9492 : bool = v9488.Contains v9491 
                            if v9492 then
                                let v9495 : unit = ()
                                let v9496 : (unit -> unit) = closure16(v0)
                                let v9497 : unit = (fun () -> v9496 (); v9495) ()
                                US6_1
                            else
                                let v9538 : unit = ()
                                let v9539 : (unit -> unit) = closure17(v0, v9487)
                                let v9540 : unit = (fun () -> v9539 (); v9538) ()
                                US6_1
                        | US8_0(v9485) -> (* Ok *)
                            US6_0(v9485)
                    return v9608 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v9609 : Async<US6> = _v9483 
            let _v9219 = v9609 
            #endif
#else
            let v9610 : unit = ()
            let _v9610 =
                async {
                    let! v9214 = v9214 
                    let v9611 : US8 = v9214 
                    let v9735 : US6 =
                        match v9611 with
                        | US8_1(v9614) -> (* Error *)
                            let v9615 : string = $"%A{v9614}"
                            let v9618 : string = "System.TimeoutException"
                            let v9619 : bool = v9615.Contains v9618 
                            if v9619 then
                                let v9622 : unit = ()
                                let v9623 : (unit -> unit) = closure16(v0)
                                let v9624 : unit = (fun () -> v9623 (); v9622) ()
                                US6_1
                            else
                                let v9665 : unit = ()
                                let v9666 : (unit -> unit) = closure17(v0, v9614)
                                let v9667 : unit = (fun () -> v9666 (); v9665) ()
                                US6_1
                        | US8_0(v9612) -> (* Ok *)
                            US6_0(v9612)
                    return v9735 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v9736 : Async<US6> = _v9610 
            let _v9219 = v9736 
            #endif
            let v9737 : Async<US6> = _v9219 
            return! v9737 
            (*
            ()
        *)
        }
        (*
        ()
    *)
    let v9742 : Async<US6> = _v8998 
    let _v8988 = v9742 
    #endif
#if FABLE_COMPILER_PYTHON
    let v9743 : unit = ()
    let _v9743 =
        async {
            let v9744 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v9745 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v9744 = v9745 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v9746 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v9744 = v9746 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v9747 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v9744 = v9747 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v9748 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v9744 = v9748 
            #endif
#if FABLE_COMPILER_PYTHON
            let v9749 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v9744 = v9749 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v9750 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v9744 = v9750 
            #endif
#else
            let v9751 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v9744 = v9751 
            #endif
            let v9752 : Async<Async<bool>> = _v9744 
            let! v9752 = v9752 
            let v9757 : Async<bool> = v9752 
            let v9758 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v9759 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v9760 : Async<Choice<bool, exn>> = v9759 v9757
            let _v9758 = v9760 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v9761 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v9762 : Async<Choice<bool, exn>> = v9761 v9757
            let _v9758 = v9762 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v9763 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v9764 : Async<Choice<bool, exn>> = v9763 v9757
            let _v9758 = v9764 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v9765 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v9766 : Async<Choice<bool, exn>> = v9765 v9757
            let _v9758 = v9766 
            #endif
#if FABLE_COMPILER_PYTHON
            let v9767 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v9768 : Async<Choice<bool, exn>> = v9767 v9757
            let _v9758 = v9768 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v9769 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v9770 : Async<Choice<bool, exn>> = v9769 v9757
            let _v9758 = v9770 
            #endif
#else
            let v9771 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v9772 : Async<Choice<bool, exn>> = v9771 v9757
            let _v9758 = v9772 
            #endif
            let v9773 : Async<Choice<bool, exn>> = _v9758 
            let v9778 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v9779 : Async<US7> = null |> unbox<Async<US7>>
            let _v9778 = v9779 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v9782 : Async<US7> = null |> unbox<Async<US7>>
            let _v9778 = v9782 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v9785 : Async<US7> = null |> unbox<Async<US7>>
            let _v9778 = v9785 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v9788 : unit = ()
            let _v9788 =
                async {
                    let! v9773 = v9773 
                    let v9789 : Choice<bool, exn> = v9773 
                    let v9790 : unit = ()
                    
#if FABLE_COMPILER || WASM || CONTRACT
                    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                    let v9791 : US7 = null |> unbox<US7>
                    let _v9790 = v9791 
                    #endif
#if FABLE_COMPILER_RUST && WASM
                    let v9794 : US7 = null |> unbox<US7>
                    let _v9790 = v9794 
                    #endif
#if FABLE_COMPILER_RUST && CONTRACT
                    let v9797 : US7 = null |> unbox<US7>
                    let _v9790 = v9797 
                    #endif
#if FABLE_COMPILER_TYPESCRIPT
                    let v9800 : US7 = null |> unbox<US7>
                    let _v9790 = v9800 
                    #endif
#if FABLE_COMPILER_PYTHON
                    let v9803 : US7 = null |> unbox<US7>
                    let _v9790 = v9803 
                    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                    let v9806 : (bool -> US7) = method21()
                    let v9807 : (exn -> US7) = method22()
                    let v9808 : US7 = match v9789 with Choice1Of2 x -> v9806 x | Choice2Of2 x -> v9807 x
                    let _v9790 = v9808 
                    #endif
#else
                    let v9809 : (bool -> US7) = method21()
                    let v9810 : (exn -> US7) = method22()
                    let v9811 : US7 = match v9789 with Choice1Of2 x -> v9809 x | Choice2Of2 x -> v9810 x
                    let _v9790 = v9811 
                    #endif
                    let v9812 : US7 = _v9790 
                    return v9812 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v9817 : Async<US7> = _v9788 
            let _v9778 = v9817 
            #endif
#if FABLE_COMPILER_PYTHON
            let v9818 : unit = ()
            let _v9818 =
                async {
                    let! v9773 = v9773 
                    let v9819 : Choice<bool, exn> = v9773 
                    let v9820 : unit = ()
                    
#if FABLE_COMPILER || WASM || CONTRACT
                    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                    let v9821 : US7 = null |> unbox<US7>
                    let _v9820 = v9821 
                    #endif
#if FABLE_COMPILER_RUST && WASM
                    let v9824 : US7 = null |> unbox<US7>
                    let _v9820 = v9824 
                    #endif
#if FABLE_COMPILER_RUST && CONTRACT
                    let v9827 : US7 = null |> unbox<US7>
                    let _v9820 = v9827 
                    #endif
#if FABLE_COMPILER_TYPESCRIPT
                    let v9830 : US7 = null |> unbox<US7>
                    let _v9820 = v9830 
                    #endif
#if FABLE_COMPILER_PYTHON
                    let v9833 : US7 = null |> unbox<US7>
                    let _v9820 = v9833 
                    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                    let v9836 : (bool -> US7) = method21()
                    let v9837 : (exn -> US7) = method22()
                    let v9838 : US7 = match v9819 with Choice1Of2 x -> v9836 x | Choice2Of2 x -> v9837 x
                    let _v9820 = v9838 
                    #endif
#else
                    let v9839 : (bool -> US7) = method21()
                    let v9840 : (exn -> US7) = method22()
                    let v9841 : US7 = match v9819 with Choice1Of2 x -> v9839 x | Choice2Of2 x -> v9840 x
                    let _v9820 = v9841 
                    #endif
                    let v9842 : US7 = _v9820 
                    return v9842 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v9847 : Async<US7> = _v9818 
            let _v9778 = v9847 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v9848 : unit = ()
            let _v9848 =
                async {
                    let! v9773 = v9773 
                    let v9849 : Choice<bool, exn> = v9773 
                    let v9850 : unit = ()
                    
#if FABLE_COMPILER || WASM || CONTRACT
                    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                    let v9851 : US7 = null |> unbox<US7>
                    let _v9850 = v9851 
                    #endif
#if FABLE_COMPILER_RUST && WASM
                    let v9854 : US7 = null |> unbox<US7>
                    let _v9850 = v9854 
                    #endif
#if FABLE_COMPILER_RUST && CONTRACT
                    let v9857 : US7 = null |> unbox<US7>
                    let _v9850 = v9857 
                    #endif
#if FABLE_COMPILER_TYPESCRIPT
                    let v9860 : US7 = null |> unbox<US7>
                    let _v9850 = v9860 
                    #endif
#if FABLE_COMPILER_PYTHON
                    let v9863 : US7 = null |> unbox<US7>
                    let _v9850 = v9863 
                    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                    let v9866 : (bool -> US7) = method21()
                    let v9867 : (exn -> US7) = method22()
                    let v9868 : US7 = match v9849 with Choice1Of2 x -> v9866 x | Choice2Of2 x -> v9867 x
                    let _v9850 = v9868 
                    #endif
#else
                    let v9869 : (bool -> US7) = method21()
                    let v9870 : (exn -> US7) = method22()
                    let v9871 : US7 = match v9849 with Choice1Of2 x -> v9869 x | Choice2Of2 x -> v9870 x
                    let _v9850 = v9871 
                    #endif
                    let v9872 : US7 = _v9850 
                    return v9872 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v9877 : Async<US7> = _v9848 
            let _v9778 = v9877 
            #endif
#else
            let v9878 : unit = ()
            let _v9878 =
                async {
                    let! v9773 = v9773 
                    let v9879 : Choice<bool, exn> = v9773 
                    let v9880 : unit = ()
                    
#if FABLE_COMPILER || WASM || CONTRACT
                    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                    let v9881 : US7 = null |> unbox<US7>
                    let _v9880 = v9881 
                    #endif
#if FABLE_COMPILER_RUST && WASM
                    let v9884 : US7 = null |> unbox<US7>
                    let _v9880 = v9884 
                    #endif
#if FABLE_COMPILER_RUST && CONTRACT
                    let v9887 : US7 = null |> unbox<US7>
                    let _v9880 = v9887 
                    #endif
#if FABLE_COMPILER_TYPESCRIPT
                    let v9890 : US7 = null |> unbox<US7>
                    let _v9880 = v9890 
                    #endif
#if FABLE_COMPILER_PYTHON
                    let v9893 : US7 = null |> unbox<US7>
                    let _v9880 = v9893 
                    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                    let v9896 : (bool -> US7) = method21()
                    let v9897 : (exn -> US7) = method22()
                    let v9898 : US7 = match v9879 with Choice1Of2 x -> v9896 x | Choice2Of2 x -> v9897 x
                    let _v9880 = v9898 
                    #endif
#else
                    let v9899 : (bool -> US7) = method21()
                    let v9900 : (exn -> US7) = method22()
                    let v9901 : US7 = match v9879 with Choice1Of2 x -> v9899 x | Choice2Of2 x -> v9900 x
                    let _v9880 = v9901 
                    #endif
                    let v9902 : US7 = _v9880 
                    return v9902 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v9907 : Async<US7> = _v9878 
            let _v9778 = v9907 
            #endif
            let v9908 : Async<US7> = _v9778 
            let v9913 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v9914 : Async<US8> = null |> unbox<Async<US8>>
            let _v9913 = v9914 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v9917 : Async<US8> = null |> unbox<Async<US8>>
            let _v9913 = v9917 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v9920 : Async<US8> = null |> unbox<Async<US8>>
            let _v9913 = v9920 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v9923 : unit = ()
            let _v9923 =
                async {
                    let! v9908 = v9908 
                    let v9924 : US7 = v9908 
                    let v9930 : US8 =
                        match v9924 with
                        | US7_0(v9925) -> (* C1of2 *)
                            US8_0(v9925)
                        | US7_1(v9927) -> (* C2of2 *)
                            US8_1(v9927)
                    return v9930 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v9931 : Async<US8> = _v9923 
            let _v9913 = v9931 
            #endif
#if FABLE_COMPILER_PYTHON
            let v9932 : unit = ()
            let _v9932 =
                async {
                    let! v9908 = v9908 
                    let v9933 : US7 = v9908 
                    let v9939 : US8 =
                        match v9933 with
                        | US7_0(v9934) -> (* C1of2 *)
                            US8_0(v9934)
                        | US7_1(v9936) -> (* C2of2 *)
                            US8_1(v9936)
                    return v9939 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v9940 : Async<US8> = _v9932 
            let _v9913 = v9940 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v9941 : unit = ()
            let _v9941 =
                async {
                    let! v9908 = v9908 
                    let v9942 : US7 = v9908 
                    let v9948 : US8 =
                        match v9942 with
                        | US7_0(v9943) -> (* C1of2 *)
                            US8_0(v9943)
                        | US7_1(v9945) -> (* C2of2 *)
                            US8_1(v9945)
                    return v9948 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v9949 : Async<US8> = _v9941 
            let _v9913 = v9949 
            #endif
#else
            let v9950 : unit = ()
            let _v9950 =
                async {
                    let! v9908 = v9908 
                    let v9951 : US7 = v9908 
                    let v9957 : US8 =
                        match v9951 with
                        | US7_0(v9952) -> (* C1of2 *)
                            US8_0(v9952)
                        | US7_1(v9954) -> (* C2of2 *)
                            US8_1(v9954)
                    return v9957 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v9958 : Async<US8> = _v9950 
            let _v9913 = v9958 
            #endif
            let v9959 : Async<US8> = _v9913 
            let v9964 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v9965 : Async<US6> = null |> unbox<Async<US6>>
            let _v9964 = v9965 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v9968 : Async<US6> = null |> unbox<Async<US6>>
            let _v9964 = v9968 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v9971 : Async<US6> = null |> unbox<Async<US6>>
            let _v9964 = v9971 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v9974 : unit = ()
            let _v9974 =
                async {
                    let! v9959 = v9959 
                    let v9975 : US8 = v9959 
                    let v10099 : US6 =
                        match v9975 with
                        | US8_1(v9978) -> (* Error *)
                            let v9979 : string = $"%A{v9978}"
                            let v9982 : string = "System.TimeoutException"
                            let v9983 : bool = v9979.Contains v9982 
                            if v9983 then
                                let v9986 : unit = ()
                                let v9987 : (unit -> unit) = closure16(v0)
                                let v9988 : unit = (fun () -> v9987 (); v9986) ()
                                US6_1
                            else
                                let v10029 : unit = ()
                                let v10030 : (unit -> unit) = closure17(v0, v9978)
                                let v10031 : unit = (fun () -> v10030 (); v10029) ()
                                US6_1
                        | US8_0(v9976) -> (* Ok *)
                            US6_0(v9976)
                    return v10099 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v10100 : Async<US6> = _v9974 
            let _v9964 = v10100 
            #endif
#if FABLE_COMPILER_PYTHON
            let v10101 : unit = ()
            let _v10101 =
                async {
                    let! v9959 = v9959 
                    let v10102 : US8 = v9959 
                    let v10226 : US6 =
                        match v10102 with
                        | US8_1(v10105) -> (* Error *)
                            let v10106 : string = $"%A{v10105}"
                            let v10109 : string = "System.TimeoutException"
                            let v10110 : bool = v10106.Contains v10109 
                            if v10110 then
                                let v10113 : unit = ()
                                let v10114 : (unit -> unit) = closure16(v0)
                                let v10115 : unit = (fun () -> v10114 (); v10113) ()
                                US6_1
                            else
                                let v10156 : unit = ()
                                let v10157 : (unit -> unit) = closure17(v0, v10105)
                                let v10158 : unit = (fun () -> v10157 (); v10156) ()
                                US6_1
                        | US8_0(v10103) -> (* Ok *)
                            US6_0(v10103)
                    return v10226 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v10227 : Async<US6> = _v10101 
            let _v9964 = v10227 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v10228 : unit = ()
            let _v10228 =
                async {
                    let! v9959 = v9959 
                    let v10229 : US8 = v9959 
                    let v10353 : US6 =
                        match v10229 with
                        | US8_1(v10232) -> (* Error *)
                            let v10233 : string = $"%A{v10232}"
                            let v10236 : string = "System.TimeoutException"
                            let v10237 : bool = v10233.Contains v10236 
                            if v10237 then
                                let v10240 : unit = ()
                                let v10241 : (unit -> unit) = closure16(v0)
                                let v10242 : unit = (fun () -> v10241 (); v10240) ()
                                US6_1
                            else
                                let v10283 : unit = ()
                                let v10284 : (unit -> unit) = closure17(v0, v10232)
                                let v10285 : unit = (fun () -> v10284 (); v10283) ()
                                US6_1
                        | US8_0(v10230) -> (* Ok *)
                            US6_0(v10230)
                    return v10353 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v10354 : Async<US6> = _v10228 
            let _v9964 = v10354 
            #endif
#else
            let v10355 : unit = ()
            let _v10355 =
                async {
                    let! v9959 = v9959 
                    let v10356 : US8 = v9959 
                    let v10480 : US6 =
                        match v10356 with
                        | US8_1(v10359) -> (* Error *)
                            let v10360 : string = $"%A{v10359}"
                            let v10363 : string = "System.TimeoutException"
                            let v10364 : bool = v10360.Contains v10363 
                            if v10364 then
                                let v10367 : unit = ()
                                let v10368 : (unit -> unit) = closure16(v0)
                                let v10369 : unit = (fun () -> v10368 (); v10367) ()
                                US6_1
                            else
                                let v10410 : unit = ()
                                let v10411 : (unit -> unit) = closure17(v0, v10359)
                                let v10412 : unit = (fun () -> v10411 (); v10410) ()
                                US6_1
                        | US8_0(v10357) -> (* Ok *)
                            US6_0(v10357)
                    return v10480 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v10481 : Async<US6> = _v10355 
            let _v9964 = v10481 
            #endif
            let v10482 : Async<US6> = _v9964 
            return! v10482 
            (*
            ()
        *)
        }
        (*
        ()
    *)
    let v10487 : Async<US6> = _v9743 
    let _v8988 = v10487 
    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
    let v10488 : unit = ()
    let _v10488 =
        async {
            let v10489 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v10490 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v10489 = v10490 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v10491 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v10489 = v10491 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v10492 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v10489 = v10492 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v10493 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v10489 = v10493 
            #endif
#if FABLE_COMPILER_PYTHON
            let v10494 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v10489 = v10494 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v10495 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v10489 = v10495 
            #endif
#else
            let v10496 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v10489 = v10496 
            #endif
            let v10497 : Async<Async<bool>> = _v10489 
            let! v10497 = v10497 
            let v10502 : Async<bool> = v10497 
            let v10503 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v10504 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v10505 : Async<Choice<bool, exn>> = v10504 v10502
            let _v10503 = v10505 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v10506 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v10507 : Async<Choice<bool, exn>> = v10506 v10502
            let _v10503 = v10507 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v10508 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v10509 : Async<Choice<bool, exn>> = v10508 v10502
            let _v10503 = v10509 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v10510 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v10511 : Async<Choice<bool, exn>> = v10510 v10502
            let _v10503 = v10511 
            #endif
#if FABLE_COMPILER_PYTHON
            let v10512 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v10513 : Async<Choice<bool, exn>> = v10512 v10502
            let _v10503 = v10513 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v10514 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v10515 : Async<Choice<bool, exn>> = v10514 v10502
            let _v10503 = v10515 
            #endif
#else
            let v10516 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v10517 : Async<Choice<bool, exn>> = v10516 v10502
            let _v10503 = v10517 
            #endif
            let v10518 : Async<Choice<bool, exn>> = _v10503 
            let v10523 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v10524 : Async<US7> = null |> unbox<Async<US7>>
            let _v10523 = v10524 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v10527 : Async<US7> = null |> unbox<Async<US7>>
            let _v10523 = v10527 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v10530 : Async<US7> = null |> unbox<Async<US7>>
            let _v10523 = v10530 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v10533 : unit = ()
            let _v10533 =
                async {
                    let! v10518 = v10518 
                    let v10534 : Choice<bool, exn> = v10518 
                    let v10535 : unit = ()
                    
#if FABLE_COMPILER || WASM || CONTRACT
                    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                    let v10536 : US7 = null |> unbox<US7>
                    let _v10535 = v10536 
                    #endif
#if FABLE_COMPILER_RUST && WASM
                    let v10539 : US7 = null |> unbox<US7>
                    let _v10535 = v10539 
                    #endif
#if FABLE_COMPILER_RUST && CONTRACT
                    let v10542 : US7 = null |> unbox<US7>
                    let _v10535 = v10542 
                    #endif
#if FABLE_COMPILER_TYPESCRIPT
                    let v10545 : US7 = null |> unbox<US7>
                    let _v10535 = v10545 
                    #endif
#if FABLE_COMPILER_PYTHON
                    let v10548 : US7 = null |> unbox<US7>
                    let _v10535 = v10548 
                    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                    let v10551 : (bool -> US7) = method21()
                    let v10552 : (exn -> US7) = method22()
                    let v10553 : US7 = match v10534 with Choice1Of2 x -> v10551 x | Choice2Of2 x -> v10552 x
                    let _v10535 = v10553 
                    #endif
#else
                    let v10554 : (bool -> US7) = method21()
                    let v10555 : (exn -> US7) = method22()
                    let v10556 : US7 = match v10534 with Choice1Of2 x -> v10554 x | Choice2Of2 x -> v10555 x
                    let _v10535 = v10556 
                    #endif
                    let v10557 : US7 = _v10535 
                    return v10557 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v10562 : Async<US7> = _v10533 
            let _v10523 = v10562 
            #endif
#if FABLE_COMPILER_PYTHON
            let v10563 : unit = ()
            let _v10563 =
                async {
                    let! v10518 = v10518 
                    let v10564 : Choice<bool, exn> = v10518 
                    let v10565 : unit = ()
                    
#if FABLE_COMPILER || WASM || CONTRACT
                    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                    let v10566 : US7 = null |> unbox<US7>
                    let _v10565 = v10566 
                    #endif
#if FABLE_COMPILER_RUST && WASM
                    let v10569 : US7 = null |> unbox<US7>
                    let _v10565 = v10569 
                    #endif
#if FABLE_COMPILER_RUST && CONTRACT
                    let v10572 : US7 = null |> unbox<US7>
                    let _v10565 = v10572 
                    #endif
#if FABLE_COMPILER_TYPESCRIPT
                    let v10575 : US7 = null |> unbox<US7>
                    let _v10565 = v10575 
                    #endif
#if FABLE_COMPILER_PYTHON
                    let v10578 : US7 = null |> unbox<US7>
                    let _v10565 = v10578 
                    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                    let v10581 : (bool -> US7) = method21()
                    let v10582 : (exn -> US7) = method22()
                    let v10583 : US7 = match v10564 with Choice1Of2 x -> v10581 x | Choice2Of2 x -> v10582 x
                    let _v10565 = v10583 
                    #endif
#else
                    let v10584 : (bool -> US7) = method21()
                    let v10585 : (exn -> US7) = method22()
                    let v10586 : US7 = match v10564 with Choice1Of2 x -> v10584 x | Choice2Of2 x -> v10585 x
                    let _v10565 = v10586 
                    #endif
                    let v10587 : US7 = _v10565 
                    return v10587 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v10592 : Async<US7> = _v10563 
            let _v10523 = v10592 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v10593 : unit = ()
            let _v10593 =
                async {
                    let! v10518 = v10518 
                    let v10594 : Choice<bool, exn> = v10518 
                    let v10595 : unit = ()
                    
#if FABLE_COMPILER || WASM || CONTRACT
                    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                    let v10596 : US7 = null |> unbox<US7>
                    let _v10595 = v10596 
                    #endif
#if FABLE_COMPILER_RUST && WASM
                    let v10599 : US7 = null |> unbox<US7>
                    let _v10595 = v10599 
                    #endif
#if FABLE_COMPILER_RUST && CONTRACT
                    let v10602 : US7 = null |> unbox<US7>
                    let _v10595 = v10602 
                    #endif
#if FABLE_COMPILER_TYPESCRIPT
                    let v10605 : US7 = null |> unbox<US7>
                    let _v10595 = v10605 
                    #endif
#if FABLE_COMPILER_PYTHON
                    let v10608 : US7 = null |> unbox<US7>
                    let _v10595 = v10608 
                    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                    let v10611 : (bool -> US7) = method21()
                    let v10612 : (exn -> US7) = method22()
                    let v10613 : US7 = match v10594 with Choice1Of2 x -> v10611 x | Choice2Of2 x -> v10612 x
                    let _v10595 = v10613 
                    #endif
#else
                    let v10614 : (bool -> US7) = method21()
                    let v10615 : (exn -> US7) = method22()
                    let v10616 : US7 = match v10594 with Choice1Of2 x -> v10614 x | Choice2Of2 x -> v10615 x
                    let _v10595 = v10616 
                    #endif
                    let v10617 : US7 = _v10595 
                    return v10617 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v10622 : Async<US7> = _v10593 
            let _v10523 = v10622 
            #endif
#else
            let v10623 : unit = ()
            let _v10623 =
                async {
                    let! v10518 = v10518 
                    let v10624 : Choice<bool, exn> = v10518 
                    let v10625 : unit = ()
                    
#if FABLE_COMPILER || WASM || CONTRACT
                    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                    let v10626 : US7 = null |> unbox<US7>
                    let _v10625 = v10626 
                    #endif
#if FABLE_COMPILER_RUST && WASM
                    let v10629 : US7 = null |> unbox<US7>
                    let _v10625 = v10629 
                    #endif
#if FABLE_COMPILER_RUST && CONTRACT
                    let v10632 : US7 = null |> unbox<US7>
                    let _v10625 = v10632 
                    #endif
#if FABLE_COMPILER_TYPESCRIPT
                    let v10635 : US7 = null |> unbox<US7>
                    let _v10625 = v10635 
                    #endif
#if FABLE_COMPILER_PYTHON
                    let v10638 : US7 = null |> unbox<US7>
                    let _v10625 = v10638 
                    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                    let v10641 : (bool -> US7) = method21()
                    let v10642 : (exn -> US7) = method22()
                    let v10643 : US7 = match v10624 with Choice1Of2 x -> v10641 x | Choice2Of2 x -> v10642 x
                    let _v10625 = v10643 
                    #endif
#else
                    let v10644 : (bool -> US7) = method21()
                    let v10645 : (exn -> US7) = method22()
                    let v10646 : US7 = match v10624 with Choice1Of2 x -> v10644 x | Choice2Of2 x -> v10645 x
                    let _v10625 = v10646 
                    #endif
                    let v10647 : US7 = _v10625 
                    return v10647 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v10652 : Async<US7> = _v10623 
            let _v10523 = v10652 
            #endif
            let v10653 : Async<US7> = _v10523 
            let v10658 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v10659 : Async<US8> = null |> unbox<Async<US8>>
            let _v10658 = v10659 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v10662 : Async<US8> = null |> unbox<Async<US8>>
            let _v10658 = v10662 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v10665 : Async<US8> = null |> unbox<Async<US8>>
            let _v10658 = v10665 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v10668 : unit = ()
            let _v10668 =
                async {
                    let! v10653 = v10653 
                    let v10669 : US7 = v10653 
                    let v10675 : US8 =
                        match v10669 with
                        | US7_0(v10670) -> (* C1of2 *)
                            US8_0(v10670)
                        | US7_1(v10672) -> (* C2of2 *)
                            US8_1(v10672)
                    return v10675 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v10676 : Async<US8> = _v10668 
            let _v10658 = v10676 
            #endif
#if FABLE_COMPILER_PYTHON
            let v10677 : unit = ()
            let _v10677 =
                async {
                    let! v10653 = v10653 
                    let v10678 : US7 = v10653 
                    let v10684 : US8 =
                        match v10678 with
                        | US7_0(v10679) -> (* C1of2 *)
                            US8_0(v10679)
                        | US7_1(v10681) -> (* C2of2 *)
                            US8_1(v10681)
                    return v10684 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v10685 : Async<US8> = _v10677 
            let _v10658 = v10685 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v10686 : unit = ()
            let _v10686 =
                async {
                    let! v10653 = v10653 
                    let v10687 : US7 = v10653 
                    let v10693 : US8 =
                        match v10687 with
                        | US7_0(v10688) -> (* C1of2 *)
                            US8_0(v10688)
                        | US7_1(v10690) -> (* C2of2 *)
                            US8_1(v10690)
                    return v10693 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v10694 : Async<US8> = _v10686 
            let _v10658 = v10694 
            #endif
#else
            let v10695 : unit = ()
            let _v10695 =
                async {
                    let! v10653 = v10653 
                    let v10696 : US7 = v10653 
                    let v10702 : US8 =
                        match v10696 with
                        | US7_0(v10697) -> (* C1of2 *)
                            US8_0(v10697)
                        | US7_1(v10699) -> (* C2of2 *)
                            US8_1(v10699)
                    return v10702 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v10703 : Async<US8> = _v10695 
            let _v10658 = v10703 
            #endif
            let v10704 : Async<US8> = _v10658 
            let v10709 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v10710 : Async<US6> = null |> unbox<Async<US6>>
            let _v10709 = v10710 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v10713 : Async<US6> = null |> unbox<Async<US6>>
            let _v10709 = v10713 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v10716 : Async<US6> = null |> unbox<Async<US6>>
            let _v10709 = v10716 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v10719 : unit = ()
            let _v10719 =
                async {
                    let! v10704 = v10704 
                    let v10720 : US8 = v10704 
                    let v10844 : US6 =
                        match v10720 with
                        | US8_1(v10723) -> (* Error *)
                            let v10724 : string = $"%A{v10723}"
                            let v10727 : string = "System.TimeoutException"
                            let v10728 : bool = v10724.Contains v10727 
                            if v10728 then
                                let v10731 : unit = ()
                                let v10732 : (unit -> unit) = closure16(v0)
                                let v10733 : unit = (fun () -> v10732 (); v10731) ()
                                US6_1
                            else
                                let v10774 : unit = ()
                                let v10775 : (unit -> unit) = closure17(v0, v10723)
                                let v10776 : unit = (fun () -> v10775 (); v10774) ()
                                US6_1
                        | US8_0(v10721) -> (* Ok *)
                            US6_0(v10721)
                    return v10844 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v10845 : Async<US6> = _v10719 
            let _v10709 = v10845 
            #endif
#if FABLE_COMPILER_PYTHON
            let v10846 : unit = ()
            let _v10846 =
                async {
                    let! v10704 = v10704 
                    let v10847 : US8 = v10704 
                    let v10971 : US6 =
                        match v10847 with
                        | US8_1(v10850) -> (* Error *)
                            let v10851 : string = $"%A{v10850}"
                            let v10854 : string = "System.TimeoutException"
                            let v10855 : bool = v10851.Contains v10854 
                            if v10855 then
                                let v10858 : unit = ()
                                let v10859 : (unit -> unit) = closure16(v0)
                                let v10860 : unit = (fun () -> v10859 (); v10858) ()
                                US6_1
                            else
                                let v10901 : unit = ()
                                let v10902 : (unit -> unit) = closure17(v0, v10850)
                                let v10903 : unit = (fun () -> v10902 (); v10901) ()
                                US6_1
                        | US8_0(v10848) -> (* Ok *)
                            US6_0(v10848)
                    return v10971 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v10972 : Async<US6> = _v10846 
            let _v10709 = v10972 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v10973 : unit = ()
            let _v10973 =
                async {
                    let! v10704 = v10704 
                    let v10974 : US8 = v10704 
                    let v11098 : US6 =
                        match v10974 with
                        | US8_1(v10977) -> (* Error *)
                            let v10978 : string = $"%A{v10977}"
                            let v10981 : string = "System.TimeoutException"
                            let v10982 : bool = v10978.Contains v10981 
                            if v10982 then
                                let v10985 : unit = ()
                                let v10986 : (unit -> unit) = closure16(v0)
                                let v10987 : unit = (fun () -> v10986 (); v10985) ()
                                US6_1
                            else
                                let v11028 : unit = ()
                                let v11029 : (unit -> unit) = closure17(v0, v10977)
                                let v11030 : unit = (fun () -> v11029 (); v11028) ()
                                US6_1
                        | US8_0(v10975) -> (* Ok *)
                            US6_0(v10975)
                    return v11098 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v11099 : Async<US6> = _v10973 
            let _v10709 = v11099 
            #endif
#else
            let v11100 : unit = ()
            let _v11100 =
                async {
                    let! v10704 = v10704 
                    let v11101 : US8 = v10704 
                    let v11225 : US6 =
                        match v11101 with
                        | US8_1(v11104) -> (* Error *)
                            let v11105 : string = $"%A{v11104}"
                            let v11108 : string = "System.TimeoutException"
                            let v11109 : bool = v11105.Contains v11108 
                            if v11109 then
                                let v11112 : unit = ()
                                let v11113 : (unit -> unit) = closure16(v0)
                                let v11114 : unit = (fun () -> v11113 (); v11112) ()
                                US6_1
                            else
                                let v11155 : unit = ()
                                let v11156 : (unit -> unit) = closure17(v0, v11104)
                                let v11157 : unit = (fun () -> v11156 (); v11155) ()
                                US6_1
                        | US8_0(v11102) -> (* Ok *)
                            US6_0(v11102)
                    return v11225 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v11226 : Async<US6> = _v11100 
            let _v10709 = v11226 
            #endif
            let v11227 : Async<US6> = _v10709 
            return! v11227 
            (*
            ()
        *)
        }
        (*
        ()
    *)
    let v11232 : Async<US6> = _v10488 
    let _v8988 = v11232 
    #endif
#else
    let v11233 : unit = ()
    let _v11233 =
        async {
            let v11234 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v11235 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v11234 = v11235 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v11236 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v11234 = v11236 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v11237 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v11234 = v11237 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v11238 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v11234 = v11238 
            #endif
#if FABLE_COMPILER_PYTHON
            let v11239 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v11234 = v11239 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v11240 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v11234 = v11240 
            #endif
#else
            let v11241 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v11234 = v11241 
            #endif
            let v11242 : Async<Async<bool>> = _v11234 
            let! v11242 = v11242 
            let v11247 : Async<bool> = v11242 
            let v11248 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v11249 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v11250 : Async<Choice<bool, exn>> = v11249 v11247
            let _v11248 = v11250 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v11251 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v11252 : Async<Choice<bool, exn>> = v11251 v11247
            let _v11248 = v11252 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v11253 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v11254 : Async<Choice<bool, exn>> = v11253 v11247
            let _v11248 = v11254 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v11255 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v11256 : Async<Choice<bool, exn>> = v11255 v11247
            let _v11248 = v11256 
            #endif
#if FABLE_COMPILER_PYTHON
            let v11257 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v11258 : Async<Choice<bool, exn>> = v11257 v11247
            let _v11248 = v11258 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v11259 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v11260 : Async<Choice<bool, exn>> = v11259 v11247
            let _v11248 = v11260 
            #endif
#else
            let v11261 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v11262 : Async<Choice<bool, exn>> = v11261 v11247
            let _v11248 = v11262 
            #endif
            let v11263 : Async<Choice<bool, exn>> = _v11248 
            let v11268 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v11269 : Async<US7> = null |> unbox<Async<US7>>
            let _v11268 = v11269 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v11272 : Async<US7> = null |> unbox<Async<US7>>
            let _v11268 = v11272 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v11275 : Async<US7> = null |> unbox<Async<US7>>
            let _v11268 = v11275 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v11278 : unit = ()
            let _v11278 =
                async {
                    let! v11263 = v11263 
                    let v11279 : Choice<bool, exn> = v11263 
                    let v11280 : unit = ()
                    
#if FABLE_COMPILER || WASM || CONTRACT
                    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                    let v11281 : US7 = null |> unbox<US7>
                    let _v11280 = v11281 
                    #endif
#if FABLE_COMPILER_RUST && WASM
                    let v11284 : US7 = null |> unbox<US7>
                    let _v11280 = v11284 
                    #endif
#if FABLE_COMPILER_RUST && CONTRACT
                    let v11287 : US7 = null |> unbox<US7>
                    let _v11280 = v11287 
                    #endif
#if FABLE_COMPILER_TYPESCRIPT
                    let v11290 : US7 = null |> unbox<US7>
                    let _v11280 = v11290 
                    #endif
#if FABLE_COMPILER_PYTHON
                    let v11293 : US7 = null |> unbox<US7>
                    let _v11280 = v11293 
                    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                    let v11296 : (bool -> US7) = method21()
                    let v11297 : (exn -> US7) = method22()
                    let v11298 : US7 = match v11279 with Choice1Of2 x -> v11296 x | Choice2Of2 x -> v11297 x
                    let _v11280 = v11298 
                    #endif
#else
                    let v11299 : (bool -> US7) = method21()
                    let v11300 : (exn -> US7) = method22()
                    let v11301 : US7 = match v11279 with Choice1Of2 x -> v11299 x | Choice2Of2 x -> v11300 x
                    let _v11280 = v11301 
                    #endif
                    let v11302 : US7 = _v11280 
                    return v11302 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v11307 : Async<US7> = _v11278 
            let _v11268 = v11307 
            #endif
#if FABLE_COMPILER_PYTHON
            let v11308 : unit = ()
            let _v11308 =
                async {
                    let! v11263 = v11263 
                    let v11309 : Choice<bool, exn> = v11263 
                    let v11310 : unit = ()
                    
#if FABLE_COMPILER || WASM || CONTRACT
                    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                    let v11311 : US7 = null |> unbox<US7>
                    let _v11310 = v11311 
                    #endif
#if FABLE_COMPILER_RUST && WASM
                    let v11314 : US7 = null |> unbox<US7>
                    let _v11310 = v11314 
                    #endif
#if FABLE_COMPILER_RUST && CONTRACT
                    let v11317 : US7 = null |> unbox<US7>
                    let _v11310 = v11317 
                    #endif
#if FABLE_COMPILER_TYPESCRIPT
                    let v11320 : US7 = null |> unbox<US7>
                    let _v11310 = v11320 
                    #endif
#if FABLE_COMPILER_PYTHON
                    let v11323 : US7 = null |> unbox<US7>
                    let _v11310 = v11323 
                    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                    let v11326 : (bool -> US7) = method21()
                    let v11327 : (exn -> US7) = method22()
                    let v11328 : US7 = match v11309 with Choice1Of2 x -> v11326 x | Choice2Of2 x -> v11327 x
                    let _v11310 = v11328 
                    #endif
#else
                    let v11329 : (bool -> US7) = method21()
                    let v11330 : (exn -> US7) = method22()
                    let v11331 : US7 = match v11309 with Choice1Of2 x -> v11329 x | Choice2Of2 x -> v11330 x
                    let _v11310 = v11331 
                    #endif
                    let v11332 : US7 = _v11310 
                    return v11332 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v11337 : Async<US7> = _v11308 
            let _v11268 = v11337 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v11338 : unit = ()
            let _v11338 =
                async {
                    let! v11263 = v11263 
                    let v11339 : Choice<bool, exn> = v11263 
                    let v11340 : unit = ()
                    
#if FABLE_COMPILER || WASM || CONTRACT
                    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                    let v11341 : US7 = null |> unbox<US7>
                    let _v11340 = v11341 
                    #endif
#if FABLE_COMPILER_RUST && WASM
                    let v11344 : US7 = null |> unbox<US7>
                    let _v11340 = v11344 
                    #endif
#if FABLE_COMPILER_RUST && CONTRACT
                    let v11347 : US7 = null |> unbox<US7>
                    let _v11340 = v11347 
                    #endif
#if FABLE_COMPILER_TYPESCRIPT
                    let v11350 : US7 = null |> unbox<US7>
                    let _v11340 = v11350 
                    #endif
#if FABLE_COMPILER_PYTHON
                    let v11353 : US7 = null |> unbox<US7>
                    let _v11340 = v11353 
                    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                    let v11356 : (bool -> US7) = method21()
                    let v11357 : (exn -> US7) = method22()
                    let v11358 : US7 = match v11339 with Choice1Of2 x -> v11356 x | Choice2Of2 x -> v11357 x
                    let _v11340 = v11358 
                    #endif
#else
                    let v11359 : (bool -> US7) = method21()
                    let v11360 : (exn -> US7) = method22()
                    let v11361 : US7 = match v11339 with Choice1Of2 x -> v11359 x | Choice2Of2 x -> v11360 x
                    let _v11340 = v11361 
                    #endif
                    let v11362 : US7 = _v11340 
                    return v11362 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v11367 : Async<US7> = _v11338 
            let _v11268 = v11367 
            #endif
#else
            let v11368 : unit = ()
            let _v11368 =
                async {
                    let! v11263 = v11263 
                    let v11369 : Choice<bool, exn> = v11263 
                    let v11370 : unit = ()
                    
#if FABLE_COMPILER || WASM || CONTRACT
                    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                    let v11371 : US7 = null |> unbox<US7>
                    let _v11370 = v11371 
                    #endif
#if FABLE_COMPILER_RUST && WASM
                    let v11374 : US7 = null |> unbox<US7>
                    let _v11370 = v11374 
                    #endif
#if FABLE_COMPILER_RUST && CONTRACT
                    let v11377 : US7 = null |> unbox<US7>
                    let _v11370 = v11377 
                    #endif
#if FABLE_COMPILER_TYPESCRIPT
                    let v11380 : US7 = null |> unbox<US7>
                    let _v11370 = v11380 
                    #endif
#if FABLE_COMPILER_PYTHON
                    let v11383 : US7 = null |> unbox<US7>
                    let _v11370 = v11383 
                    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                    let v11386 : (bool -> US7) = method21()
                    let v11387 : (exn -> US7) = method22()
                    let v11388 : US7 = match v11369 with Choice1Of2 x -> v11386 x | Choice2Of2 x -> v11387 x
                    let _v11370 = v11388 
                    #endif
#else
                    let v11389 : (bool -> US7) = method21()
                    let v11390 : (exn -> US7) = method22()
                    let v11391 : US7 = match v11369 with Choice1Of2 x -> v11389 x | Choice2Of2 x -> v11390 x
                    let _v11370 = v11391 
                    #endif
                    let v11392 : US7 = _v11370 
                    return v11392 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v11397 : Async<US7> = _v11368 
            let _v11268 = v11397 
            #endif
            let v11398 : Async<US7> = _v11268 
            let v11403 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v11404 : Async<US8> = null |> unbox<Async<US8>>
            let _v11403 = v11404 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v11407 : Async<US8> = null |> unbox<Async<US8>>
            let _v11403 = v11407 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v11410 : Async<US8> = null |> unbox<Async<US8>>
            let _v11403 = v11410 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v11413 : unit = ()
            let _v11413 =
                async {
                    let! v11398 = v11398 
                    let v11414 : US7 = v11398 
                    let v11420 : US8 =
                        match v11414 with
                        | US7_0(v11415) -> (* C1of2 *)
                            US8_0(v11415)
                        | US7_1(v11417) -> (* C2of2 *)
                            US8_1(v11417)
                    return v11420 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v11421 : Async<US8> = _v11413 
            let _v11403 = v11421 
            #endif
#if FABLE_COMPILER_PYTHON
            let v11422 : unit = ()
            let _v11422 =
                async {
                    let! v11398 = v11398 
                    let v11423 : US7 = v11398 
                    let v11429 : US8 =
                        match v11423 with
                        | US7_0(v11424) -> (* C1of2 *)
                            US8_0(v11424)
                        | US7_1(v11426) -> (* C2of2 *)
                            US8_1(v11426)
                    return v11429 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v11430 : Async<US8> = _v11422 
            let _v11403 = v11430 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v11431 : unit = ()
            let _v11431 =
                async {
                    let! v11398 = v11398 
                    let v11432 : US7 = v11398 
                    let v11438 : US8 =
                        match v11432 with
                        | US7_0(v11433) -> (* C1of2 *)
                            US8_0(v11433)
                        | US7_1(v11435) -> (* C2of2 *)
                            US8_1(v11435)
                    return v11438 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v11439 : Async<US8> = _v11431 
            let _v11403 = v11439 
            #endif
#else
            let v11440 : unit = ()
            let _v11440 =
                async {
                    let! v11398 = v11398 
                    let v11441 : US7 = v11398 
                    let v11447 : US8 =
                        match v11441 with
                        | US7_0(v11442) -> (* C1of2 *)
                            US8_0(v11442)
                        | US7_1(v11444) -> (* C2of2 *)
                            US8_1(v11444)
                    return v11447 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v11448 : Async<US8> = _v11440 
            let _v11403 = v11448 
            #endif
            let v11449 : Async<US8> = _v11403 
            let v11454 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v11455 : Async<US6> = null |> unbox<Async<US6>>
            let _v11454 = v11455 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v11458 : Async<US6> = null |> unbox<Async<US6>>
            let _v11454 = v11458 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v11461 : Async<US6> = null |> unbox<Async<US6>>
            let _v11454 = v11461 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v11464 : unit = ()
            let _v11464 =
                async {
                    let! v11449 = v11449 
                    let v11465 : US8 = v11449 
                    let v11589 : US6 =
                        match v11465 with
                        | US8_1(v11468) -> (* Error *)
                            let v11469 : string = $"%A{v11468}"
                            let v11472 : string = "System.TimeoutException"
                            let v11473 : bool = v11469.Contains v11472 
                            if v11473 then
                                let v11476 : unit = ()
                                let v11477 : (unit -> unit) = closure16(v0)
                                let v11478 : unit = (fun () -> v11477 (); v11476) ()
                                US6_1
                            else
                                let v11519 : unit = ()
                                let v11520 : (unit -> unit) = closure17(v0, v11468)
                                let v11521 : unit = (fun () -> v11520 (); v11519) ()
                                US6_1
                        | US8_0(v11466) -> (* Ok *)
                            US6_0(v11466)
                    return v11589 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v11590 : Async<US6> = _v11464 
            let _v11454 = v11590 
            #endif
#if FABLE_COMPILER_PYTHON
            let v11591 : unit = ()
            let _v11591 =
                async {
                    let! v11449 = v11449 
                    let v11592 : US8 = v11449 
                    let v11716 : US6 =
                        match v11592 with
                        | US8_1(v11595) -> (* Error *)
                            let v11596 : string = $"%A{v11595}"
                            let v11599 : string = "System.TimeoutException"
                            let v11600 : bool = v11596.Contains v11599 
                            if v11600 then
                                let v11603 : unit = ()
                                let v11604 : (unit -> unit) = closure16(v0)
                                let v11605 : unit = (fun () -> v11604 (); v11603) ()
                                US6_1
                            else
                                let v11646 : unit = ()
                                let v11647 : (unit -> unit) = closure17(v0, v11595)
                                let v11648 : unit = (fun () -> v11647 (); v11646) ()
                                US6_1
                        | US8_0(v11593) -> (* Ok *)
                            US6_0(v11593)
                    return v11716 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v11717 : Async<US6> = _v11591 
            let _v11454 = v11717 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v11718 : unit = ()
            let _v11718 =
                async {
                    let! v11449 = v11449 
                    let v11719 : US8 = v11449 
                    let v11843 : US6 =
                        match v11719 with
                        | US8_1(v11722) -> (* Error *)
                            let v11723 : string = $"%A{v11722}"
                            let v11726 : string = "System.TimeoutException"
                            let v11727 : bool = v11723.Contains v11726 
                            if v11727 then
                                let v11730 : unit = ()
                                let v11731 : (unit -> unit) = closure16(v0)
                                let v11732 : unit = (fun () -> v11731 (); v11730) ()
                                US6_1
                            else
                                let v11773 : unit = ()
                                let v11774 : (unit -> unit) = closure17(v0, v11722)
                                let v11775 : unit = (fun () -> v11774 (); v11773) ()
                                US6_1
                        | US8_0(v11720) -> (* Ok *)
                            US6_0(v11720)
                    return v11843 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v11844 : Async<US6> = _v11718 
            let _v11454 = v11844 
            #endif
#else
            let v11845 : unit = ()
            let _v11845 =
                async {
                    let! v11449 = v11449 
                    let v11846 : US8 = v11449 
                    let v11970 : US6 =
                        match v11846 with
                        | US8_1(v11849) -> (* Error *)
                            let v11850 : string = $"%A{v11849}"
                            let v11853 : string = "System.TimeoutException"
                            let v11854 : bool = v11850.Contains v11853 
                            if v11854 then
                                let v11857 : unit = ()
                                let v11858 : (unit -> unit) = closure16(v0)
                                let v11859 : unit = (fun () -> v11858 (); v11857) ()
                                US6_1
                            else
                                let v11900 : unit = ()
                                let v11901 : (unit -> unit) = closure17(v0, v11849)
                                let v11902 : unit = (fun () -> v11901 (); v11900) ()
                                US6_1
                        | US8_0(v11847) -> (* Ok *)
                            US6_0(v11847)
                    return v11970 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v11971 : Async<US6> = _v11845 
            let _v11454 = v11971 
            #endif
            let v11972 : Async<US6> = _v11454 
            return! v11972 
            (*
            ()
        *)
        }
        (*
        ()
    *)
    let v11977 : Async<US6> = _v11233 
    let _v8988 = v11977 
    #endif
    let v11978 : Async<US6> = _v8988 
    let _v2 = v11978 
    #endif
#if FABLE_COMPILER_PYTHON
    let v11983 : unit = ()
    
#if FABLE_COMPILER || WASM || CONTRACT
    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
    let v11984 : Async<US6> = null |> unbox<Async<US6>>
    let _v11983 = v11984 
    #endif
#if FABLE_COMPILER_RUST && WASM
    let v11987 : Async<US6> = null |> unbox<Async<US6>>
    let _v11983 = v11987 
    #endif
#if FABLE_COMPILER_RUST && CONTRACT
    let v11990 : Async<US6> = null |> unbox<Async<US6>>
    let _v11983 = v11990 
    #endif
#if FABLE_COMPILER_TYPESCRIPT
    let v11993 : unit = ()
    let _v11993 =
        async {
            let v11994 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v11995 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v11994 = v11995 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v11996 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v11994 = v11996 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v11997 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v11994 = v11997 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v11998 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v11994 = v11998 
            #endif
#if FABLE_COMPILER_PYTHON
            let v11999 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v11994 = v11999 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v12000 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v11994 = v12000 
            #endif
#else
            let v12001 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v11994 = v12001 
            #endif
            let v12002 : Async<Async<bool>> = _v11994 
            let! v12002 = v12002 
            let v12007 : Async<bool> = v12002 
            let v12008 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v12009 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v12010 : Async<Choice<bool, exn>> = v12009 v12007
            let _v12008 = v12010 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v12011 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v12012 : Async<Choice<bool, exn>> = v12011 v12007
            let _v12008 = v12012 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v12013 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v12014 : Async<Choice<bool, exn>> = v12013 v12007
            let _v12008 = v12014 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v12015 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v12016 : Async<Choice<bool, exn>> = v12015 v12007
            let _v12008 = v12016 
            #endif
#if FABLE_COMPILER_PYTHON
            let v12017 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v12018 : Async<Choice<bool, exn>> = v12017 v12007
            let _v12008 = v12018 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v12019 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v12020 : Async<Choice<bool, exn>> = v12019 v12007
            let _v12008 = v12020 
            #endif
#else
            let v12021 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v12022 : Async<Choice<bool, exn>> = v12021 v12007
            let _v12008 = v12022 
            #endif
            let v12023 : Async<Choice<bool, exn>> = _v12008 
            let v12028 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v12029 : Async<US7> = null |> unbox<Async<US7>>
            let _v12028 = v12029 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v12032 : Async<US7> = null |> unbox<Async<US7>>
            let _v12028 = v12032 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v12035 : Async<US7> = null |> unbox<Async<US7>>
            let _v12028 = v12035 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v12038 : unit = ()
            let _v12038 =
                async {
                    let! v12023 = v12023 
                    let v12039 : Choice<bool, exn> = v12023 
                    let v12040 : unit = ()
                    
#if FABLE_COMPILER || WASM || CONTRACT
                    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                    let v12041 : US7 = null |> unbox<US7>
                    let _v12040 = v12041 
                    #endif
#if FABLE_COMPILER_RUST && WASM
                    let v12044 : US7 = null |> unbox<US7>
                    let _v12040 = v12044 
                    #endif
#if FABLE_COMPILER_RUST && CONTRACT
                    let v12047 : US7 = null |> unbox<US7>
                    let _v12040 = v12047 
                    #endif
#if FABLE_COMPILER_TYPESCRIPT
                    let v12050 : US7 = null |> unbox<US7>
                    let _v12040 = v12050 
                    #endif
#if FABLE_COMPILER_PYTHON
                    let v12053 : US7 = null |> unbox<US7>
                    let _v12040 = v12053 
                    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                    let v12056 : (bool -> US7) = method21()
                    let v12057 : (exn -> US7) = method22()
                    let v12058 : US7 = match v12039 with Choice1Of2 x -> v12056 x | Choice2Of2 x -> v12057 x
                    let _v12040 = v12058 
                    #endif
#else
                    let v12059 : (bool -> US7) = method21()
                    let v12060 : (exn -> US7) = method22()
                    let v12061 : US7 = match v12039 with Choice1Of2 x -> v12059 x | Choice2Of2 x -> v12060 x
                    let _v12040 = v12061 
                    #endif
                    let v12062 : US7 = _v12040 
                    return v12062 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v12067 : Async<US7> = _v12038 
            let _v12028 = v12067 
            #endif
#if FABLE_COMPILER_PYTHON
            let v12068 : unit = ()
            let _v12068 =
                async {
                    let! v12023 = v12023 
                    let v12069 : Choice<bool, exn> = v12023 
                    let v12070 : unit = ()
                    
#if FABLE_COMPILER || WASM || CONTRACT
                    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                    let v12071 : US7 = null |> unbox<US7>
                    let _v12070 = v12071 
                    #endif
#if FABLE_COMPILER_RUST && WASM
                    let v12074 : US7 = null |> unbox<US7>
                    let _v12070 = v12074 
                    #endif
#if FABLE_COMPILER_RUST && CONTRACT
                    let v12077 : US7 = null |> unbox<US7>
                    let _v12070 = v12077 
                    #endif
#if FABLE_COMPILER_TYPESCRIPT
                    let v12080 : US7 = null |> unbox<US7>
                    let _v12070 = v12080 
                    #endif
#if FABLE_COMPILER_PYTHON
                    let v12083 : US7 = null |> unbox<US7>
                    let _v12070 = v12083 
                    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                    let v12086 : (bool -> US7) = method21()
                    let v12087 : (exn -> US7) = method22()
                    let v12088 : US7 = match v12069 with Choice1Of2 x -> v12086 x | Choice2Of2 x -> v12087 x
                    let _v12070 = v12088 
                    #endif
#else
                    let v12089 : (bool -> US7) = method21()
                    let v12090 : (exn -> US7) = method22()
                    let v12091 : US7 = match v12069 with Choice1Of2 x -> v12089 x | Choice2Of2 x -> v12090 x
                    let _v12070 = v12091 
                    #endif
                    let v12092 : US7 = _v12070 
                    return v12092 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v12097 : Async<US7> = _v12068 
            let _v12028 = v12097 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v12098 : unit = ()
            let _v12098 =
                async {
                    let! v12023 = v12023 
                    let v12099 : Choice<bool, exn> = v12023 
                    let v12100 : unit = ()
                    
#if FABLE_COMPILER || WASM || CONTRACT
                    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                    let v12101 : US7 = null |> unbox<US7>
                    let _v12100 = v12101 
                    #endif
#if FABLE_COMPILER_RUST && WASM
                    let v12104 : US7 = null |> unbox<US7>
                    let _v12100 = v12104 
                    #endif
#if FABLE_COMPILER_RUST && CONTRACT
                    let v12107 : US7 = null |> unbox<US7>
                    let _v12100 = v12107 
                    #endif
#if FABLE_COMPILER_TYPESCRIPT
                    let v12110 : US7 = null |> unbox<US7>
                    let _v12100 = v12110 
                    #endif
#if FABLE_COMPILER_PYTHON
                    let v12113 : US7 = null |> unbox<US7>
                    let _v12100 = v12113 
                    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                    let v12116 : (bool -> US7) = method21()
                    let v12117 : (exn -> US7) = method22()
                    let v12118 : US7 = match v12099 with Choice1Of2 x -> v12116 x | Choice2Of2 x -> v12117 x
                    let _v12100 = v12118 
                    #endif
#else
                    let v12119 : (bool -> US7) = method21()
                    let v12120 : (exn -> US7) = method22()
                    let v12121 : US7 = match v12099 with Choice1Of2 x -> v12119 x | Choice2Of2 x -> v12120 x
                    let _v12100 = v12121 
                    #endif
                    let v12122 : US7 = _v12100 
                    return v12122 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v12127 : Async<US7> = _v12098 
            let _v12028 = v12127 
            #endif
#else
            let v12128 : unit = ()
            let _v12128 =
                async {
                    let! v12023 = v12023 
                    let v12129 : Choice<bool, exn> = v12023 
                    let v12130 : unit = ()
                    
#if FABLE_COMPILER || WASM || CONTRACT
                    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                    let v12131 : US7 = null |> unbox<US7>
                    let _v12130 = v12131 
                    #endif
#if FABLE_COMPILER_RUST && WASM
                    let v12134 : US7 = null |> unbox<US7>
                    let _v12130 = v12134 
                    #endif
#if FABLE_COMPILER_RUST && CONTRACT
                    let v12137 : US7 = null |> unbox<US7>
                    let _v12130 = v12137 
                    #endif
#if FABLE_COMPILER_TYPESCRIPT
                    let v12140 : US7 = null |> unbox<US7>
                    let _v12130 = v12140 
                    #endif
#if FABLE_COMPILER_PYTHON
                    let v12143 : US7 = null |> unbox<US7>
                    let _v12130 = v12143 
                    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                    let v12146 : (bool -> US7) = method21()
                    let v12147 : (exn -> US7) = method22()
                    let v12148 : US7 = match v12129 with Choice1Of2 x -> v12146 x | Choice2Of2 x -> v12147 x
                    let _v12130 = v12148 
                    #endif
#else
                    let v12149 : (bool -> US7) = method21()
                    let v12150 : (exn -> US7) = method22()
                    let v12151 : US7 = match v12129 with Choice1Of2 x -> v12149 x | Choice2Of2 x -> v12150 x
                    let _v12130 = v12151 
                    #endif
                    let v12152 : US7 = _v12130 
                    return v12152 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v12157 : Async<US7> = _v12128 
            let _v12028 = v12157 
            #endif
            let v12158 : Async<US7> = _v12028 
            let v12163 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v12164 : Async<US8> = null |> unbox<Async<US8>>
            let _v12163 = v12164 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v12167 : Async<US8> = null |> unbox<Async<US8>>
            let _v12163 = v12167 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v12170 : Async<US8> = null |> unbox<Async<US8>>
            let _v12163 = v12170 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v12173 : unit = ()
            let _v12173 =
                async {
                    let! v12158 = v12158 
                    let v12174 : US7 = v12158 
                    let v12180 : US8 =
                        match v12174 with
                        | US7_0(v12175) -> (* C1of2 *)
                            US8_0(v12175)
                        | US7_1(v12177) -> (* C2of2 *)
                            US8_1(v12177)
                    return v12180 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v12181 : Async<US8> = _v12173 
            let _v12163 = v12181 
            #endif
#if FABLE_COMPILER_PYTHON
            let v12182 : unit = ()
            let _v12182 =
                async {
                    let! v12158 = v12158 
                    let v12183 : US7 = v12158 
                    let v12189 : US8 =
                        match v12183 with
                        | US7_0(v12184) -> (* C1of2 *)
                            US8_0(v12184)
                        | US7_1(v12186) -> (* C2of2 *)
                            US8_1(v12186)
                    return v12189 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v12190 : Async<US8> = _v12182 
            let _v12163 = v12190 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v12191 : unit = ()
            let _v12191 =
                async {
                    let! v12158 = v12158 
                    let v12192 : US7 = v12158 
                    let v12198 : US8 =
                        match v12192 with
                        | US7_0(v12193) -> (* C1of2 *)
                            US8_0(v12193)
                        | US7_1(v12195) -> (* C2of2 *)
                            US8_1(v12195)
                    return v12198 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v12199 : Async<US8> = _v12191 
            let _v12163 = v12199 
            #endif
#else
            let v12200 : unit = ()
            let _v12200 =
                async {
                    let! v12158 = v12158 
                    let v12201 : US7 = v12158 
                    let v12207 : US8 =
                        match v12201 with
                        | US7_0(v12202) -> (* C1of2 *)
                            US8_0(v12202)
                        | US7_1(v12204) -> (* C2of2 *)
                            US8_1(v12204)
                    return v12207 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v12208 : Async<US8> = _v12200 
            let _v12163 = v12208 
            #endif
            let v12209 : Async<US8> = _v12163 
            let v12214 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v12215 : Async<US6> = null |> unbox<Async<US6>>
            let _v12214 = v12215 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v12218 : Async<US6> = null |> unbox<Async<US6>>
            let _v12214 = v12218 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v12221 : Async<US6> = null |> unbox<Async<US6>>
            let _v12214 = v12221 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v12224 : unit = ()
            let _v12224 =
                async {
                    let! v12209 = v12209 
                    let v12225 : US8 = v12209 
                    let v12349 : US6 =
                        match v12225 with
                        | US8_1(v12228) -> (* Error *)
                            let v12229 : string = $"%A{v12228}"
                            let v12232 : string = "System.TimeoutException"
                            let v12233 : bool = v12229.Contains v12232 
                            if v12233 then
                                let v12236 : unit = ()
                                let v12237 : (unit -> unit) = closure16(v0)
                                let v12238 : unit = (fun () -> v12237 (); v12236) ()
                                US6_1
                            else
                                let v12279 : unit = ()
                                let v12280 : (unit -> unit) = closure17(v0, v12228)
                                let v12281 : unit = (fun () -> v12280 (); v12279) ()
                                US6_1
                        | US8_0(v12226) -> (* Ok *)
                            US6_0(v12226)
                    return v12349 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v12350 : Async<US6> = _v12224 
            let _v12214 = v12350 
            #endif
#if FABLE_COMPILER_PYTHON
            let v12351 : unit = ()
            let _v12351 =
                async {
                    let! v12209 = v12209 
                    let v12352 : US8 = v12209 
                    let v12476 : US6 =
                        match v12352 with
                        | US8_1(v12355) -> (* Error *)
                            let v12356 : string = $"%A{v12355}"
                            let v12359 : string = "System.TimeoutException"
                            let v12360 : bool = v12356.Contains v12359 
                            if v12360 then
                                let v12363 : unit = ()
                                let v12364 : (unit -> unit) = closure16(v0)
                                let v12365 : unit = (fun () -> v12364 (); v12363) ()
                                US6_1
                            else
                                let v12406 : unit = ()
                                let v12407 : (unit -> unit) = closure17(v0, v12355)
                                let v12408 : unit = (fun () -> v12407 (); v12406) ()
                                US6_1
                        | US8_0(v12353) -> (* Ok *)
                            US6_0(v12353)
                    return v12476 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v12477 : Async<US6> = _v12351 
            let _v12214 = v12477 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v12478 : unit = ()
            let _v12478 =
                async {
                    let! v12209 = v12209 
                    let v12479 : US8 = v12209 
                    let v12603 : US6 =
                        match v12479 with
                        | US8_1(v12482) -> (* Error *)
                            let v12483 : string = $"%A{v12482}"
                            let v12486 : string = "System.TimeoutException"
                            let v12487 : bool = v12483.Contains v12486 
                            if v12487 then
                                let v12490 : unit = ()
                                let v12491 : (unit -> unit) = closure16(v0)
                                let v12492 : unit = (fun () -> v12491 (); v12490) ()
                                US6_1
                            else
                                let v12533 : unit = ()
                                let v12534 : (unit -> unit) = closure17(v0, v12482)
                                let v12535 : unit = (fun () -> v12534 (); v12533) ()
                                US6_1
                        | US8_0(v12480) -> (* Ok *)
                            US6_0(v12480)
                    return v12603 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v12604 : Async<US6> = _v12478 
            let _v12214 = v12604 
            #endif
#else
            let v12605 : unit = ()
            let _v12605 =
                async {
                    let! v12209 = v12209 
                    let v12606 : US8 = v12209 
                    let v12730 : US6 =
                        match v12606 with
                        | US8_1(v12609) -> (* Error *)
                            let v12610 : string = $"%A{v12609}"
                            let v12613 : string = "System.TimeoutException"
                            let v12614 : bool = v12610.Contains v12613 
                            if v12614 then
                                let v12617 : unit = ()
                                let v12618 : (unit -> unit) = closure16(v0)
                                let v12619 : unit = (fun () -> v12618 (); v12617) ()
                                US6_1
                            else
                                let v12660 : unit = ()
                                let v12661 : (unit -> unit) = closure17(v0, v12609)
                                let v12662 : unit = (fun () -> v12661 (); v12660) ()
                                US6_1
                        | US8_0(v12607) -> (* Ok *)
                            US6_0(v12607)
                    return v12730 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v12731 : Async<US6> = _v12605 
            let _v12214 = v12731 
            #endif
            let v12732 : Async<US6> = _v12214 
            return! v12732 
            (*
            ()
        *)
        }
        (*
        ()
    *)
    let v12737 : Async<US6> = _v11993 
    let _v11983 = v12737 
    #endif
#if FABLE_COMPILER_PYTHON
    let v12738 : unit = ()
    let _v12738 =
        async {
            let v12739 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v12740 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v12739 = v12740 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v12741 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v12739 = v12741 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v12742 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v12739 = v12742 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v12743 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v12739 = v12743 
            #endif
#if FABLE_COMPILER_PYTHON
            let v12744 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v12739 = v12744 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v12745 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v12739 = v12745 
            #endif
#else
            let v12746 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v12739 = v12746 
            #endif
            let v12747 : Async<Async<bool>> = _v12739 
            let! v12747 = v12747 
            let v12752 : Async<bool> = v12747 
            let v12753 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v12754 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v12755 : Async<Choice<bool, exn>> = v12754 v12752
            let _v12753 = v12755 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v12756 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v12757 : Async<Choice<bool, exn>> = v12756 v12752
            let _v12753 = v12757 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v12758 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v12759 : Async<Choice<bool, exn>> = v12758 v12752
            let _v12753 = v12759 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v12760 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v12761 : Async<Choice<bool, exn>> = v12760 v12752
            let _v12753 = v12761 
            #endif
#if FABLE_COMPILER_PYTHON
            let v12762 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v12763 : Async<Choice<bool, exn>> = v12762 v12752
            let _v12753 = v12763 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v12764 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v12765 : Async<Choice<bool, exn>> = v12764 v12752
            let _v12753 = v12765 
            #endif
#else
            let v12766 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v12767 : Async<Choice<bool, exn>> = v12766 v12752
            let _v12753 = v12767 
            #endif
            let v12768 : Async<Choice<bool, exn>> = _v12753 
            let v12773 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v12774 : Async<US7> = null |> unbox<Async<US7>>
            let _v12773 = v12774 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v12777 : Async<US7> = null |> unbox<Async<US7>>
            let _v12773 = v12777 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v12780 : Async<US7> = null |> unbox<Async<US7>>
            let _v12773 = v12780 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v12783 : unit = ()
            let _v12783 =
                async {
                    let! v12768 = v12768 
                    let v12784 : Choice<bool, exn> = v12768 
                    let v12785 : unit = ()
                    
#if FABLE_COMPILER || WASM || CONTRACT
                    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                    let v12786 : US7 = null |> unbox<US7>
                    let _v12785 = v12786 
                    #endif
#if FABLE_COMPILER_RUST && WASM
                    let v12789 : US7 = null |> unbox<US7>
                    let _v12785 = v12789 
                    #endif
#if FABLE_COMPILER_RUST && CONTRACT
                    let v12792 : US7 = null |> unbox<US7>
                    let _v12785 = v12792 
                    #endif
#if FABLE_COMPILER_TYPESCRIPT
                    let v12795 : US7 = null |> unbox<US7>
                    let _v12785 = v12795 
                    #endif
#if FABLE_COMPILER_PYTHON
                    let v12798 : US7 = null |> unbox<US7>
                    let _v12785 = v12798 
                    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                    let v12801 : (bool -> US7) = method21()
                    let v12802 : (exn -> US7) = method22()
                    let v12803 : US7 = match v12784 with Choice1Of2 x -> v12801 x | Choice2Of2 x -> v12802 x
                    let _v12785 = v12803 
                    #endif
#else
                    let v12804 : (bool -> US7) = method21()
                    let v12805 : (exn -> US7) = method22()
                    let v12806 : US7 = match v12784 with Choice1Of2 x -> v12804 x | Choice2Of2 x -> v12805 x
                    let _v12785 = v12806 
                    #endif
                    let v12807 : US7 = _v12785 
                    return v12807 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v12812 : Async<US7> = _v12783 
            let _v12773 = v12812 
            #endif
#if FABLE_COMPILER_PYTHON
            let v12813 : unit = ()
            let _v12813 =
                async {
                    let! v12768 = v12768 
                    let v12814 : Choice<bool, exn> = v12768 
                    let v12815 : unit = ()
                    
#if FABLE_COMPILER || WASM || CONTRACT
                    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                    let v12816 : US7 = null |> unbox<US7>
                    let _v12815 = v12816 
                    #endif
#if FABLE_COMPILER_RUST && WASM
                    let v12819 : US7 = null |> unbox<US7>
                    let _v12815 = v12819 
                    #endif
#if FABLE_COMPILER_RUST && CONTRACT
                    let v12822 : US7 = null |> unbox<US7>
                    let _v12815 = v12822 
                    #endif
#if FABLE_COMPILER_TYPESCRIPT
                    let v12825 : US7 = null |> unbox<US7>
                    let _v12815 = v12825 
                    #endif
#if FABLE_COMPILER_PYTHON
                    let v12828 : US7 = null |> unbox<US7>
                    let _v12815 = v12828 
                    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                    let v12831 : (bool -> US7) = method21()
                    let v12832 : (exn -> US7) = method22()
                    let v12833 : US7 = match v12814 with Choice1Of2 x -> v12831 x | Choice2Of2 x -> v12832 x
                    let _v12815 = v12833 
                    #endif
#else
                    let v12834 : (bool -> US7) = method21()
                    let v12835 : (exn -> US7) = method22()
                    let v12836 : US7 = match v12814 with Choice1Of2 x -> v12834 x | Choice2Of2 x -> v12835 x
                    let _v12815 = v12836 
                    #endif
                    let v12837 : US7 = _v12815 
                    return v12837 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v12842 : Async<US7> = _v12813 
            let _v12773 = v12842 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v12843 : unit = ()
            let _v12843 =
                async {
                    let! v12768 = v12768 
                    let v12844 : Choice<bool, exn> = v12768 
                    let v12845 : unit = ()
                    
#if FABLE_COMPILER || WASM || CONTRACT
                    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                    let v12846 : US7 = null |> unbox<US7>
                    let _v12845 = v12846 
                    #endif
#if FABLE_COMPILER_RUST && WASM
                    let v12849 : US7 = null |> unbox<US7>
                    let _v12845 = v12849 
                    #endif
#if FABLE_COMPILER_RUST && CONTRACT
                    let v12852 : US7 = null |> unbox<US7>
                    let _v12845 = v12852 
                    #endif
#if FABLE_COMPILER_TYPESCRIPT
                    let v12855 : US7 = null |> unbox<US7>
                    let _v12845 = v12855 
                    #endif
#if FABLE_COMPILER_PYTHON
                    let v12858 : US7 = null |> unbox<US7>
                    let _v12845 = v12858 
                    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                    let v12861 : (bool -> US7) = method21()
                    let v12862 : (exn -> US7) = method22()
                    let v12863 : US7 = match v12844 with Choice1Of2 x -> v12861 x | Choice2Of2 x -> v12862 x
                    let _v12845 = v12863 
                    #endif
#else
                    let v12864 : (bool -> US7) = method21()
                    let v12865 : (exn -> US7) = method22()
                    let v12866 : US7 = match v12844 with Choice1Of2 x -> v12864 x | Choice2Of2 x -> v12865 x
                    let _v12845 = v12866 
                    #endif
                    let v12867 : US7 = _v12845 
                    return v12867 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v12872 : Async<US7> = _v12843 
            let _v12773 = v12872 
            #endif
#else
            let v12873 : unit = ()
            let _v12873 =
                async {
                    let! v12768 = v12768 
                    let v12874 : Choice<bool, exn> = v12768 
                    let v12875 : unit = ()
                    
#if FABLE_COMPILER || WASM || CONTRACT
                    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                    let v12876 : US7 = null |> unbox<US7>
                    let _v12875 = v12876 
                    #endif
#if FABLE_COMPILER_RUST && WASM
                    let v12879 : US7 = null |> unbox<US7>
                    let _v12875 = v12879 
                    #endif
#if FABLE_COMPILER_RUST && CONTRACT
                    let v12882 : US7 = null |> unbox<US7>
                    let _v12875 = v12882 
                    #endif
#if FABLE_COMPILER_TYPESCRIPT
                    let v12885 : US7 = null |> unbox<US7>
                    let _v12875 = v12885 
                    #endif
#if FABLE_COMPILER_PYTHON
                    let v12888 : US7 = null |> unbox<US7>
                    let _v12875 = v12888 
                    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                    let v12891 : (bool -> US7) = method21()
                    let v12892 : (exn -> US7) = method22()
                    let v12893 : US7 = match v12874 with Choice1Of2 x -> v12891 x | Choice2Of2 x -> v12892 x
                    let _v12875 = v12893 
                    #endif
#else
                    let v12894 : (bool -> US7) = method21()
                    let v12895 : (exn -> US7) = method22()
                    let v12896 : US7 = match v12874 with Choice1Of2 x -> v12894 x | Choice2Of2 x -> v12895 x
                    let _v12875 = v12896 
                    #endif
                    let v12897 : US7 = _v12875 
                    return v12897 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v12902 : Async<US7> = _v12873 
            let _v12773 = v12902 
            #endif
            let v12903 : Async<US7> = _v12773 
            let v12908 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v12909 : Async<US8> = null |> unbox<Async<US8>>
            let _v12908 = v12909 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v12912 : Async<US8> = null |> unbox<Async<US8>>
            let _v12908 = v12912 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v12915 : Async<US8> = null |> unbox<Async<US8>>
            let _v12908 = v12915 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v12918 : unit = ()
            let _v12918 =
                async {
                    let! v12903 = v12903 
                    let v12919 : US7 = v12903 
                    let v12925 : US8 =
                        match v12919 with
                        | US7_0(v12920) -> (* C1of2 *)
                            US8_0(v12920)
                        | US7_1(v12922) -> (* C2of2 *)
                            US8_1(v12922)
                    return v12925 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v12926 : Async<US8> = _v12918 
            let _v12908 = v12926 
            #endif
#if FABLE_COMPILER_PYTHON
            let v12927 : unit = ()
            let _v12927 =
                async {
                    let! v12903 = v12903 
                    let v12928 : US7 = v12903 
                    let v12934 : US8 =
                        match v12928 with
                        | US7_0(v12929) -> (* C1of2 *)
                            US8_0(v12929)
                        | US7_1(v12931) -> (* C2of2 *)
                            US8_1(v12931)
                    return v12934 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v12935 : Async<US8> = _v12927 
            let _v12908 = v12935 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v12936 : unit = ()
            let _v12936 =
                async {
                    let! v12903 = v12903 
                    let v12937 : US7 = v12903 
                    let v12943 : US8 =
                        match v12937 with
                        | US7_0(v12938) -> (* C1of2 *)
                            US8_0(v12938)
                        | US7_1(v12940) -> (* C2of2 *)
                            US8_1(v12940)
                    return v12943 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v12944 : Async<US8> = _v12936 
            let _v12908 = v12944 
            #endif
#else
            let v12945 : unit = ()
            let _v12945 =
                async {
                    let! v12903 = v12903 
                    let v12946 : US7 = v12903 
                    let v12952 : US8 =
                        match v12946 with
                        | US7_0(v12947) -> (* C1of2 *)
                            US8_0(v12947)
                        | US7_1(v12949) -> (* C2of2 *)
                            US8_1(v12949)
                    return v12952 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v12953 : Async<US8> = _v12945 
            let _v12908 = v12953 
            #endif
            let v12954 : Async<US8> = _v12908 
            let v12959 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v12960 : Async<US6> = null |> unbox<Async<US6>>
            let _v12959 = v12960 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v12963 : Async<US6> = null |> unbox<Async<US6>>
            let _v12959 = v12963 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v12966 : Async<US6> = null |> unbox<Async<US6>>
            let _v12959 = v12966 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v12969 : unit = ()
            let _v12969 =
                async {
                    let! v12954 = v12954 
                    let v12970 : US8 = v12954 
                    let v13094 : US6 =
                        match v12970 with
                        | US8_1(v12973) -> (* Error *)
                            let v12974 : string = $"%A{v12973}"
                            let v12977 : string = "System.TimeoutException"
                            let v12978 : bool = v12974.Contains v12977 
                            if v12978 then
                                let v12981 : unit = ()
                                let v12982 : (unit -> unit) = closure16(v0)
                                let v12983 : unit = (fun () -> v12982 (); v12981) ()
                                US6_1
                            else
                                let v13024 : unit = ()
                                let v13025 : (unit -> unit) = closure17(v0, v12973)
                                let v13026 : unit = (fun () -> v13025 (); v13024) ()
                                US6_1
                        | US8_0(v12971) -> (* Ok *)
                            US6_0(v12971)
                    return v13094 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v13095 : Async<US6> = _v12969 
            let _v12959 = v13095 
            #endif
#if FABLE_COMPILER_PYTHON
            let v13096 : unit = ()
            let _v13096 =
                async {
                    let! v12954 = v12954 
                    let v13097 : US8 = v12954 
                    let v13221 : US6 =
                        match v13097 with
                        | US8_1(v13100) -> (* Error *)
                            let v13101 : string = $"%A{v13100}"
                            let v13104 : string = "System.TimeoutException"
                            let v13105 : bool = v13101.Contains v13104 
                            if v13105 then
                                let v13108 : unit = ()
                                let v13109 : (unit -> unit) = closure16(v0)
                                let v13110 : unit = (fun () -> v13109 (); v13108) ()
                                US6_1
                            else
                                let v13151 : unit = ()
                                let v13152 : (unit -> unit) = closure17(v0, v13100)
                                let v13153 : unit = (fun () -> v13152 (); v13151) ()
                                US6_1
                        | US8_0(v13098) -> (* Ok *)
                            US6_0(v13098)
                    return v13221 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v13222 : Async<US6> = _v13096 
            let _v12959 = v13222 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v13223 : unit = ()
            let _v13223 =
                async {
                    let! v12954 = v12954 
                    let v13224 : US8 = v12954 
                    let v13348 : US6 =
                        match v13224 with
                        | US8_1(v13227) -> (* Error *)
                            let v13228 : string = $"%A{v13227}"
                            let v13231 : string = "System.TimeoutException"
                            let v13232 : bool = v13228.Contains v13231 
                            if v13232 then
                                let v13235 : unit = ()
                                let v13236 : (unit -> unit) = closure16(v0)
                                let v13237 : unit = (fun () -> v13236 (); v13235) ()
                                US6_1
                            else
                                let v13278 : unit = ()
                                let v13279 : (unit -> unit) = closure17(v0, v13227)
                                let v13280 : unit = (fun () -> v13279 (); v13278) ()
                                US6_1
                        | US8_0(v13225) -> (* Ok *)
                            US6_0(v13225)
                    return v13348 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v13349 : Async<US6> = _v13223 
            let _v12959 = v13349 
            #endif
#else
            let v13350 : unit = ()
            let _v13350 =
                async {
                    let! v12954 = v12954 
                    let v13351 : US8 = v12954 
                    let v13475 : US6 =
                        match v13351 with
                        | US8_1(v13354) -> (* Error *)
                            let v13355 : string = $"%A{v13354}"
                            let v13358 : string = "System.TimeoutException"
                            let v13359 : bool = v13355.Contains v13358 
                            if v13359 then
                                let v13362 : unit = ()
                                let v13363 : (unit -> unit) = closure16(v0)
                                let v13364 : unit = (fun () -> v13363 (); v13362) ()
                                US6_1
                            else
                                let v13405 : unit = ()
                                let v13406 : (unit -> unit) = closure17(v0, v13354)
                                let v13407 : unit = (fun () -> v13406 (); v13405) ()
                                US6_1
                        | US8_0(v13352) -> (* Ok *)
                            US6_0(v13352)
                    return v13475 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v13476 : Async<US6> = _v13350 
            let _v12959 = v13476 
            #endif
            let v13477 : Async<US6> = _v12959 
            return! v13477 
            (*
            ()
        *)
        }
        (*
        ()
    *)
    let v13482 : Async<US6> = _v12738 
    let _v11983 = v13482 
    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
    let v13483 : unit = ()
    let _v13483 =
        async {
            let v13484 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v13485 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v13484 = v13485 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v13486 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v13484 = v13486 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v13487 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v13484 = v13487 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v13488 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v13484 = v13488 
            #endif
#if FABLE_COMPILER_PYTHON
            let v13489 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v13484 = v13489 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v13490 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v13484 = v13490 
            #endif
#else
            let v13491 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v13484 = v13491 
            #endif
            let v13492 : Async<Async<bool>> = _v13484 
            let! v13492 = v13492 
            let v13497 : Async<bool> = v13492 
            let v13498 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v13499 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v13500 : Async<Choice<bool, exn>> = v13499 v13497
            let _v13498 = v13500 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v13501 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v13502 : Async<Choice<bool, exn>> = v13501 v13497
            let _v13498 = v13502 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v13503 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v13504 : Async<Choice<bool, exn>> = v13503 v13497
            let _v13498 = v13504 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v13505 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v13506 : Async<Choice<bool, exn>> = v13505 v13497
            let _v13498 = v13506 
            #endif
#if FABLE_COMPILER_PYTHON
            let v13507 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v13508 : Async<Choice<bool, exn>> = v13507 v13497
            let _v13498 = v13508 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v13509 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v13510 : Async<Choice<bool, exn>> = v13509 v13497
            let _v13498 = v13510 
            #endif
#else
            let v13511 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v13512 : Async<Choice<bool, exn>> = v13511 v13497
            let _v13498 = v13512 
            #endif
            let v13513 : Async<Choice<bool, exn>> = _v13498 
            let v13518 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v13519 : Async<US7> = null |> unbox<Async<US7>>
            let _v13518 = v13519 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v13522 : Async<US7> = null |> unbox<Async<US7>>
            let _v13518 = v13522 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v13525 : Async<US7> = null |> unbox<Async<US7>>
            let _v13518 = v13525 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v13528 : unit = ()
            let _v13528 =
                async {
                    let! v13513 = v13513 
                    let v13529 : Choice<bool, exn> = v13513 
                    let v13530 : unit = ()
                    
#if FABLE_COMPILER || WASM || CONTRACT
                    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                    let v13531 : US7 = null |> unbox<US7>
                    let _v13530 = v13531 
                    #endif
#if FABLE_COMPILER_RUST && WASM
                    let v13534 : US7 = null |> unbox<US7>
                    let _v13530 = v13534 
                    #endif
#if FABLE_COMPILER_RUST && CONTRACT
                    let v13537 : US7 = null |> unbox<US7>
                    let _v13530 = v13537 
                    #endif
#if FABLE_COMPILER_TYPESCRIPT
                    let v13540 : US7 = null |> unbox<US7>
                    let _v13530 = v13540 
                    #endif
#if FABLE_COMPILER_PYTHON
                    let v13543 : US7 = null |> unbox<US7>
                    let _v13530 = v13543 
                    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                    let v13546 : (bool -> US7) = method21()
                    let v13547 : (exn -> US7) = method22()
                    let v13548 : US7 = match v13529 with Choice1Of2 x -> v13546 x | Choice2Of2 x -> v13547 x
                    let _v13530 = v13548 
                    #endif
#else
                    let v13549 : (bool -> US7) = method21()
                    let v13550 : (exn -> US7) = method22()
                    let v13551 : US7 = match v13529 with Choice1Of2 x -> v13549 x | Choice2Of2 x -> v13550 x
                    let _v13530 = v13551 
                    #endif
                    let v13552 : US7 = _v13530 
                    return v13552 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v13557 : Async<US7> = _v13528 
            let _v13518 = v13557 
            #endif
#if FABLE_COMPILER_PYTHON
            let v13558 : unit = ()
            let _v13558 =
                async {
                    let! v13513 = v13513 
                    let v13559 : Choice<bool, exn> = v13513 
                    let v13560 : unit = ()
                    
#if FABLE_COMPILER || WASM || CONTRACT
                    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                    let v13561 : US7 = null |> unbox<US7>
                    let _v13560 = v13561 
                    #endif
#if FABLE_COMPILER_RUST && WASM
                    let v13564 : US7 = null |> unbox<US7>
                    let _v13560 = v13564 
                    #endif
#if FABLE_COMPILER_RUST && CONTRACT
                    let v13567 : US7 = null |> unbox<US7>
                    let _v13560 = v13567 
                    #endif
#if FABLE_COMPILER_TYPESCRIPT
                    let v13570 : US7 = null |> unbox<US7>
                    let _v13560 = v13570 
                    #endif
#if FABLE_COMPILER_PYTHON
                    let v13573 : US7 = null |> unbox<US7>
                    let _v13560 = v13573 
                    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                    let v13576 : (bool -> US7) = method21()
                    let v13577 : (exn -> US7) = method22()
                    let v13578 : US7 = match v13559 with Choice1Of2 x -> v13576 x | Choice2Of2 x -> v13577 x
                    let _v13560 = v13578 
                    #endif
#else
                    let v13579 : (bool -> US7) = method21()
                    let v13580 : (exn -> US7) = method22()
                    let v13581 : US7 = match v13559 with Choice1Of2 x -> v13579 x | Choice2Of2 x -> v13580 x
                    let _v13560 = v13581 
                    #endif
                    let v13582 : US7 = _v13560 
                    return v13582 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v13587 : Async<US7> = _v13558 
            let _v13518 = v13587 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v13588 : unit = ()
            let _v13588 =
                async {
                    let! v13513 = v13513 
                    let v13589 : Choice<bool, exn> = v13513 
                    let v13590 : unit = ()
                    
#if FABLE_COMPILER || WASM || CONTRACT
                    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                    let v13591 : US7 = null |> unbox<US7>
                    let _v13590 = v13591 
                    #endif
#if FABLE_COMPILER_RUST && WASM
                    let v13594 : US7 = null |> unbox<US7>
                    let _v13590 = v13594 
                    #endif
#if FABLE_COMPILER_RUST && CONTRACT
                    let v13597 : US7 = null |> unbox<US7>
                    let _v13590 = v13597 
                    #endif
#if FABLE_COMPILER_TYPESCRIPT
                    let v13600 : US7 = null |> unbox<US7>
                    let _v13590 = v13600 
                    #endif
#if FABLE_COMPILER_PYTHON
                    let v13603 : US7 = null |> unbox<US7>
                    let _v13590 = v13603 
                    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                    let v13606 : (bool -> US7) = method21()
                    let v13607 : (exn -> US7) = method22()
                    let v13608 : US7 = match v13589 with Choice1Of2 x -> v13606 x | Choice2Of2 x -> v13607 x
                    let _v13590 = v13608 
                    #endif
#else
                    let v13609 : (bool -> US7) = method21()
                    let v13610 : (exn -> US7) = method22()
                    let v13611 : US7 = match v13589 with Choice1Of2 x -> v13609 x | Choice2Of2 x -> v13610 x
                    let _v13590 = v13611 
                    #endif
                    let v13612 : US7 = _v13590 
                    return v13612 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v13617 : Async<US7> = _v13588 
            let _v13518 = v13617 
            #endif
#else
            let v13618 : unit = ()
            let _v13618 =
                async {
                    let! v13513 = v13513 
                    let v13619 : Choice<bool, exn> = v13513 
                    let v13620 : unit = ()
                    
#if FABLE_COMPILER || WASM || CONTRACT
                    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                    let v13621 : US7 = null |> unbox<US7>
                    let _v13620 = v13621 
                    #endif
#if FABLE_COMPILER_RUST && WASM
                    let v13624 : US7 = null |> unbox<US7>
                    let _v13620 = v13624 
                    #endif
#if FABLE_COMPILER_RUST && CONTRACT
                    let v13627 : US7 = null |> unbox<US7>
                    let _v13620 = v13627 
                    #endif
#if FABLE_COMPILER_TYPESCRIPT
                    let v13630 : US7 = null |> unbox<US7>
                    let _v13620 = v13630 
                    #endif
#if FABLE_COMPILER_PYTHON
                    let v13633 : US7 = null |> unbox<US7>
                    let _v13620 = v13633 
                    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                    let v13636 : (bool -> US7) = method21()
                    let v13637 : (exn -> US7) = method22()
                    let v13638 : US7 = match v13619 with Choice1Of2 x -> v13636 x | Choice2Of2 x -> v13637 x
                    let _v13620 = v13638 
                    #endif
#else
                    let v13639 : (bool -> US7) = method21()
                    let v13640 : (exn -> US7) = method22()
                    let v13641 : US7 = match v13619 with Choice1Of2 x -> v13639 x | Choice2Of2 x -> v13640 x
                    let _v13620 = v13641 
                    #endif
                    let v13642 : US7 = _v13620 
                    return v13642 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v13647 : Async<US7> = _v13618 
            let _v13518 = v13647 
            #endif
            let v13648 : Async<US7> = _v13518 
            let v13653 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v13654 : Async<US8> = null |> unbox<Async<US8>>
            let _v13653 = v13654 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v13657 : Async<US8> = null |> unbox<Async<US8>>
            let _v13653 = v13657 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v13660 : Async<US8> = null |> unbox<Async<US8>>
            let _v13653 = v13660 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v13663 : unit = ()
            let _v13663 =
                async {
                    let! v13648 = v13648 
                    let v13664 : US7 = v13648 
                    let v13670 : US8 =
                        match v13664 with
                        | US7_0(v13665) -> (* C1of2 *)
                            US8_0(v13665)
                        | US7_1(v13667) -> (* C2of2 *)
                            US8_1(v13667)
                    return v13670 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v13671 : Async<US8> = _v13663 
            let _v13653 = v13671 
            #endif
#if FABLE_COMPILER_PYTHON
            let v13672 : unit = ()
            let _v13672 =
                async {
                    let! v13648 = v13648 
                    let v13673 : US7 = v13648 
                    let v13679 : US8 =
                        match v13673 with
                        | US7_0(v13674) -> (* C1of2 *)
                            US8_0(v13674)
                        | US7_1(v13676) -> (* C2of2 *)
                            US8_1(v13676)
                    return v13679 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v13680 : Async<US8> = _v13672 
            let _v13653 = v13680 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v13681 : unit = ()
            let _v13681 =
                async {
                    let! v13648 = v13648 
                    let v13682 : US7 = v13648 
                    let v13688 : US8 =
                        match v13682 with
                        | US7_0(v13683) -> (* C1of2 *)
                            US8_0(v13683)
                        | US7_1(v13685) -> (* C2of2 *)
                            US8_1(v13685)
                    return v13688 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v13689 : Async<US8> = _v13681 
            let _v13653 = v13689 
            #endif
#else
            let v13690 : unit = ()
            let _v13690 =
                async {
                    let! v13648 = v13648 
                    let v13691 : US7 = v13648 
                    let v13697 : US8 =
                        match v13691 with
                        | US7_0(v13692) -> (* C1of2 *)
                            US8_0(v13692)
                        | US7_1(v13694) -> (* C2of2 *)
                            US8_1(v13694)
                    return v13697 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v13698 : Async<US8> = _v13690 
            let _v13653 = v13698 
            #endif
            let v13699 : Async<US8> = _v13653 
            let v13704 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v13705 : Async<US6> = null |> unbox<Async<US6>>
            let _v13704 = v13705 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v13708 : Async<US6> = null |> unbox<Async<US6>>
            let _v13704 = v13708 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v13711 : Async<US6> = null |> unbox<Async<US6>>
            let _v13704 = v13711 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v13714 : unit = ()
            let _v13714 =
                async {
                    let! v13699 = v13699 
                    let v13715 : US8 = v13699 
                    let v13839 : US6 =
                        match v13715 with
                        | US8_1(v13718) -> (* Error *)
                            let v13719 : string = $"%A{v13718}"
                            let v13722 : string = "System.TimeoutException"
                            let v13723 : bool = v13719.Contains v13722 
                            if v13723 then
                                let v13726 : unit = ()
                                let v13727 : (unit -> unit) = closure16(v0)
                                let v13728 : unit = (fun () -> v13727 (); v13726) ()
                                US6_1
                            else
                                let v13769 : unit = ()
                                let v13770 : (unit -> unit) = closure17(v0, v13718)
                                let v13771 : unit = (fun () -> v13770 (); v13769) ()
                                US6_1
                        | US8_0(v13716) -> (* Ok *)
                            US6_0(v13716)
                    return v13839 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v13840 : Async<US6> = _v13714 
            let _v13704 = v13840 
            #endif
#if FABLE_COMPILER_PYTHON
            let v13841 : unit = ()
            let _v13841 =
                async {
                    let! v13699 = v13699 
                    let v13842 : US8 = v13699 
                    let v13966 : US6 =
                        match v13842 with
                        | US8_1(v13845) -> (* Error *)
                            let v13846 : string = $"%A{v13845}"
                            let v13849 : string = "System.TimeoutException"
                            let v13850 : bool = v13846.Contains v13849 
                            if v13850 then
                                let v13853 : unit = ()
                                let v13854 : (unit -> unit) = closure16(v0)
                                let v13855 : unit = (fun () -> v13854 (); v13853) ()
                                US6_1
                            else
                                let v13896 : unit = ()
                                let v13897 : (unit -> unit) = closure17(v0, v13845)
                                let v13898 : unit = (fun () -> v13897 (); v13896) ()
                                US6_1
                        | US8_0(v13843) -> (* Ok *)
                            US6_0(v13843)
                    return v13966 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v13967 : Async<US6> = _v13841 
            let _v13704 = v13967 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v13968 : unit = ()
            let _v13968 =
                async {
                    let! v13699 = v13699 
                    let v13969 : US8 = v13699 
                    let v14093 : US6 =
                        match v13969 with
                        | US8_1(v13972) -> (* Error *)
                            let v13973 : string = $"%A{v13972}"
                            let v13976 : string = "System.TimeoutException"
                            let v13977 : bool = v13973.Contains v13976 
                            if v13977 then
                                let v13980 : unit = ()
                                let v13981 : (unit -> unit) = closure16(v0)
                                let v13982 : unit = (fun () -> v13981 (); v13980) ()
                                US6_1
                            else
                                let v14023 : unit = ()
                                let v14024 : (unit -> unit) = closure17(v0, v13972)
                                let v14025 : unit = (fun () -> v14024 (); v14023) ()
                                US6_1
                        | US8_0(v13970) -> (* Ok *)
                            US6_0(v13970)
                    return v14093 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v14094 : Async<US6> = _v13968 
            let _v13704 = v14094 
            #endif
#else
            let v14095 : unit = ()
            let _v14095 =
                async {
                    let! v13699 = v13699 
                    let v14096 : US8 = v13699 
                    let v14220 : US6 =
                        match v14096 with
                        | US8_1(v14099) -> (* Error *)
                            let v14100 : string = $"%A{v14099}"
                            let v14103 : string = "System.TimeoutException"
                            let v14104 : bool = v14100.Contains v14103 
                            if v14104 then
                                let v14107 : unit = ()
                                let v14108 : (unit -> unit) = closure16(v0)
                                let v14109 : unit = (fun () -> v14108 (); v14107) ()
                                US6_1
                            else
                                let v14150 : unit = ()
                                let v14151 : (unit -> unit) = closure17(v0, v14099)
                                let v14152 : unit = (fun () -> v14151 (); v14150) ()
                                US6_1
                        | US8_0(v14097) -> (* Ok *)
                            US6_0(v14097)
                    return v14220 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v14221 : Async<US6> = _v14095 
            let _v13704 = v14221 
            #endif
            let v14222 : Async<US6> = _v13704 
            return! v14222 
            (*
            ()
        *)
        }
        (*
        ()
    *)
    let v14227 : Async<US6> = _v13483 
    let _v11983 = v14227 
    #endif
#else
    let v14228 : unit = ()
    let _v14228 =
        async {
            let v14229 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v14230 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v14229 = v14230 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v14231 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v14229 = v14231 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v14232 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v14229 = v14232 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v14233 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v14229 = v14233 
            #endif
#if FABLE_COMPILER_PYTHON
            let v14234 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v14229 = v14234 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v14235 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v14229 = v14235 
            #endif
#else
            let v14236 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v14229 = v14236 
            #endif
            let v14237 : Async<Async<bool>> = _v14229 
            let! v14237 = v14237 
            let v14242 : Async<bool> = v14237 
            let v14243 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v14244 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v14245 : Async<Choice<bool, exn>> = v14244 v14242
            let _v14243 = v14245 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v14246 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v14247 : Async<Choice<bool, exn>> = v14246 v14242
            let _v14243 = v14247 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v14248 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v14249 : Async<Choice<bool, exn>> = v14248 v14242
            let _v14243 = v14249 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v14250 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v14251 : Async<Choice<bool, exn>> = v14250 v14242
            let _v14243 = v14251 
            #endif
#if FABLE_COMPILER_PYTHON
            let v14252 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v14253 : Async<Choice<bool, exn>> = v14252 v14242
            let _v14243 = v14253 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v14254 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v14255 : Async<Choice<bool, exn>> = v14254 v14242
            let _v14243 = v14255 
            #endif
#else
            let v14256 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v14257 : Async<Choice<bool, exn>> = v14256 v14242
            let _v14243 = v14257 
            #endif
            let v14258 : Async<Choice<bool, exn>> = _v14243 
            let v14263 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v14264 : Async<US7> = null |> unbox<Async<US7>>
            let _v14263 = v14264 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v14267 : Async<US7> = null |> unbox<Async<US7>>
            let _v14263 = v14267 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v14270 : Async<US7> = null |> unbox<Async<US7>>
            let _v14263 = v14270 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v14273 : unit = ()
            let _v14273 =
                async {
                    let! v14258 = v14258 
                    let v14274 : Choice<bool, exn> = v14258 
                    let v14275 : unit = ()
                    
#if FABLE_COMPILER || WASM || CONTRACT
                    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                    let v14276 : US7 = null |> unbox<US7>
                    let _v14275 = v14276 
                    #endif
#if FABLE_COMPILER_RUST && WASM
                    let v14279 : US7 = null |> unbox<US7>
                    let _v14275 = v14279 
                    #endif
#if FABLE_COMPILER_RUST && CONTRACT
                    let v14282 : US7 = null |> unbox<US7>
                    let _v14275 = v14282 
                    #endif
#if FABLE_COMPILER_TYPESCRIPT
                    let v14285 : US7 = null |> unbox<US7>
                    let _v14275 = v14285 
                    #endif
#if FABLE_COMPILER_PYTHON
                    let v14288 : US7 = null |> unbox<US7>
                    let _v14275 = v14288 
                    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                    let v14291 : (bool -> US7) = method21()
                    let v14292 : (exn -> US7) = method22()
                    let v14293 : US7 = match v14274 with Choice1Of2 x -> v14291 x | Choice2Of2 x -> v14292 x
                    let _v14275 = v14293 
                    #endif
#else
                    let v14294 : (bool -> US7) = method21()
                    let v14295 : (exn -> US7) = method22()
                    let v14296 : US7 = match v14274 with Choice1Of2 x -> v14294 x | Choice2Of2 x -> v14295 x
                    let _v14275 = v14296 
                    #endif
                    let v14297 : US7 = _v14275 
                    return v14297 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v14302 : Async<US7> = _v14273 
            let _v14263 = v14302 
            #endif
#if FABLE_COMPILER_PYTHON
            let v14303 : unit = ()
            let _v14303 =
                async {
                    let! v14258 = v14258 
                    let v14304 : Choice<bool, exn> = v14258 
                    let v14305 : unit = ()
                    
#if FABLE_COMPILER || WASM || CONTRACT
                    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                    let v14306 : US7 = null |> unbox<US7>
                    let _v14305 = v14306 
                    #endif
#if FABLE_COMPILER_RUST && WASM
                    let v14309 : US7 = null |> unbox<US7>
                    let _v14305 = v14309 
                    #endif
#if FABLE_COMPILER_RUST && CONTRACT
                    let v14312 : US7 = null |> unbox<US7>
                    let _v14305 = v14312 
                    #endif
#if FABLE_COMPILER_TYPESCRIPT
                    let v14315 : US7 = null |> unbox<US7>
                    let _v14305 = v14315 
                    #endif
#if FABLE_COMPILER_PYTHON
                    let v14318 : US7 = null |> unbox<US7>
                    let _v14305 = v14318 
                    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                    let v14321 : (bool -> US7) = method21()
                    let v14322 : (exn -> US7) = method22()
                    let v14323 : US7 = match v14304 with Choice1Of2 x -> v14321 x | Choice2Of2 x -> v14322 x
                    let _v14305 = v14323 
                    #endif
#else
                    let v14324 : (bool -> US7) = method21()
                    let v14325 : (exn -> US7) = method22()
                    let v14326 : US7 = match v14304 with Choice1Of2 x -> v14324 x | Choice2Of2 x -> v14325 x
                    let _v14305 = v14326 
                    #endif
                    let v14327 : US7 = _v14305 
                    return v14327 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v14332 : Async<US7> = _v14303 
            let _v14263 = v14332 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v14333 : unit = ()
            let _v14333 =
                async {
                    let! v14258 = v14258 
                    let v14334 : Choice<bool, exn> = v14258 
                    let v14335 : unit = ()
                    
#if FABLE_COMPILER || WASM || CONTRACT
                    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                    let v14336 : US7 = null |> unbox<US7>
                    let _v14335 = v14336 
                    #endif
#if FABLE_COMPILER_RUST && WASM
                    let v14339 : US7 = null |> unbox<US7>
                    let _v14335 = v14339 
                    #endif
#if FABLE_COMPILER_RUST && CONTRACT
                    let v14342 : US7 = null |> unbox<US7>
                    let _v14335 = v14342 
                    #endif
#if FABLE_COMPILER_TYPESCRIPT
                    let v14345 : US7 = null |> unbox<US7>
                    let _v14335 = v14345 
                    #endif
#if FABLE_COMPILER_PYTHON
                    let v14348 : US7 = null |> unbox<US7>
                    let _v14335 = v14348 
                    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                    let v14351 : (bool -> US7) = method21()
                    let v14352 : (exn -> US7) = method22()
                    let v14353 : US7 = match v14334 with Choice1Of2 x -> v14351 x | Choice2Of2 x -> v14352 x
                    let _v14335 = v14353 
                    #endif
#else
                    let v14354 : (bool -> US7) = method21()
                    let v14355 : (exn -> US7) = method22()
                    let v14356 : US7 = match v14334 with Choice1Of2 x -> v14354 x | Choice2Of2 x -> v14355 x
                    let _v14335 = v14356 
                    #endif
                    let v14357 : US7 = _v14335 
                    return v14357 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v14362 : Async<US7> = _v14333 
            let _v14263 = v14362 
            #endif
#else
            let v14363 : unit = ()
            let _v14363 =
                async {
                    let! v14258 = v14258 
                    let v14364 : Choice<bool, exn> = v14258 
                    let v14365 : unit = ()
                    
#if FABLE_COMPILER || WASM || CONTRACT
                    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                    let v14366 : US7 = null |> unbox<US7>
                    let _v14365 = v14366 
                    #endif
#if FABLE_COMPILER_RUST && WASM
                    let v14369 : US7 = null |> unbox<US7>
                    let _v14365 = v14369 
                    #endif
#if FABLE_COMPILER_RUST && CONTRACT
                    let v14372 : US7 = null |> unbox<US7>
                    let _v14365 = v14372 
                    #endif
#if FABLE_COMPILER_TYPESCRIPT
                    let v14375 : US7 = null |> unbox<US7>
                    let _v14365 = v14375 
                    #endif
#if FABLE_COMPILER_PYTHON
                    let v14378 : US7 = null |> unbox<US7>
                    let _v14365 = v14378 
                    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                    let v14381 : (bool -> US7) = method21()
                    let v14382 : (exn -> US7) = method22()
                    let v14383 : US7 = match v14364 with Choice1Of2 x -> v14381 x | Choice2Of2 x -> v14382 x
                    let _v14365 = v14383 
                    #endif
#else
                    let v14384 : (bool -> US7) = method21()
                    let v14385 : (exn -> US7) = method22()
                    let v14386 : US7 = match v14364 with Choice1Of2 x -> v14384 x | Choice2Of2 x -> v14385 x
                    let _v14365 = v14386 
                    #endif
                    let v14387 : US7 = _v14365 
                    return v14387 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v14392 : Async<US7> = _v14363 
            let _v14263 = v14392 
            #endif
            let v14393 : Async<US7> = _v14263 
            let v14398 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v14399 : Async<US8> = null |> unbox<Async<US8>>
            let _v14398 = v14399 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v14402 : Async<US8> = null |> unbox<Async<US8>>
            let _v14398 = v14402 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v14405 : Async<US8> = null |> unbox<Async<US8>>
            let _v14398 = v14405 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v14408 : unit = ()
            let _v14408 =
                async {
                    let! v14393 = v14393 
                    let v14409 : US7 = v14393 
                    let v14415 : US8 =
                        match v14409 with
                        | US7_0(v14410) -> (* C1of2 *)
                            US8_0(v14410)
                        | US7_1(v14412) -> (* C2of2 *)
                            US8_1(v14412)
                    return v14415 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v14416 : Async<US8> = _v14408 
            let _v14398 = v14416 
            #endif
#if FABLE_COMPILER_PYTHON
            let v14417 : unit = ()
            let _v14417 =
                async {
                    let! v14393 = v14393 
                    let v14418 : US7 = v14393 
                    let v14424 : US8 =
                        match v14418 with
                        | US7_0(v14419) -> (* C1of2 *)
                            US8_0(v14419)
                        | US7_1(v14421) -> (* C2of2 *)
                            US8_1(v14421)
                    return v14424 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v14425 : Async<US8> = _v14417 
            let _v14398 = v14425 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v14426 : unit = ()
            let _v14426 =
                async {
                    let! v14393 = v14393 
                    let v14427 : US7 = v14393 
                    let v14433 : US8 =
                        match v14427 with
                        | US7_0(v14428) -> (* C1of2 *)
                            US8_0(v14428)
                        | US7_1(v14430) -> (* C2of2 *)
                            US8_1(v14430)
                    return v14433 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v14434 : Async<US8> = _v14426 
            let _v14398 = v14434 
            #endif
#else
            let v14435 : unit = ()
            let _v14435 =
                async {
                    let! v14393 = v14393 
                    let v14436 : US7 = v14393 
                    let v14442 : US8 =
                        match v14436 with
                        | US7_0(v14437) -> (* C1of2 *)
                            US8_0(v14437)
                        | US7_1(v14439) -> (* C2of2 *)
                            US8_1(v14439)
                    return v14442 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v14443 : Async<US8> = _v14435 
            let _v14398 = v14443 
            #endif
            let v14444 : Async<US8> = _v14398 
            let v14449 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v14450 : Async<US6> = null |> unbox<Async<US6>>
            let _v14449 = v14450 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v14453 : Async<US6> = null |> unbox<Async<US6>>
            let _v14449 = v14453 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v14456 : Async<US6> = null |> unbox<Async<US6>>
            let _v14449 = v14456 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v14459 : unit = ()
            let _v14459 =
                async {
                    let! v14444 = v14444 
                    let v14460 : US8 = v14444 
                    let v14584 : US6 =
                        match v14460 with
                        | US8_1(v14463) -> (* Error *)
                            let v14464 : string = $"%A{v14463}"
                            let v14467 : string = "System.TimeoutException"
                            let v14468 : bool = v14464.Contains v14467 
                            if v14468 then
                                let v14471 : unit = ()
                                let v14472 : (unit -> unit) = closure16(v0)
                                let v14473 : unit = (fun () -> v14472 (); v14471) ()
                                US6_1
                            else
                                let v14514 : unit = ()
                                let v14515 : (unit -> unit) = closure17(v0, v14463)
                                let v14516 : unit = (fun () -> v14515 (); v14514) ()
                                US6_1
                        | US8_0(v14461) -> (* Ok *)
                            US6_0(v14461)
                    return v14584 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v14585 : Async<US6> = _v14459 
            let _v14449 = v14585 
            #endif
#if FABLE_COMPILER_PYTHON
            let v14586 : unit = ()
            let _v14586 =
                async {
                    let! v14444 = v14444 
                    let v14587 : US8 = v14444 
                    let v14711 : US6 =
                        match v14587 with
                        | US8_1(v14590) -> (* Error *)
                            let v14591 : string = $"%A{v14590}"
                            let v14594 : string = "System.TimeoutException"
                            let v14595 : bool = v14591.Contains v14594 
                            if v14595 then
                                let v14598 : unit = ()
                                let v14599 : (unit -> unit) = closure16(v0)
                                let v14600 : unit = (fun () -> v14599 (); v14598) ()
                                US6_1
                            else
                                let v14641 : unit = ()
                                let v14642 : (unit -> unit) = closure17(v0, v14590)
                                let v14643 : unit = (fun () -> v14642 (); v14641) ()
                                US6_1
                        | US8_0(v14588) -> (* Ok *)
                            US6_0(v14588)
                    return v14711 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v14712 : Async<US6> = _v14586 
            let _v14449 = v14712 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v14713 : unit = ()
            let _v14713 =
                async {
                    let! v14444 = v14444 
                    let v14714 : US8 = v14444 
                    let v14838 : US6 =
                        match v14714 with
                        | US8_1(v14717) -> (* Error *)
                            let v14718 : string = $"%A{v14717}"
                            let v14721 : string = "System.TimeoutException"
                            let v14722 : bool = v14718.Contains v14721 
                            if v14722 then
                                let v14725 : unit = ()
                                let v14726 : (unit -> unit) = closure16(v0)
                                let v14727 : unit = (fun () -> v14726 (); v14725) ()
                                US6_1
                            else
                                let v14768 : unit = ()
                                let v14769 : (unit -> unit) = closure17(v0, v14717)
                                let v14770 : unit = (fun () -> v14769 (); v14768) ()
                                US6_1
                        | US8_0(v14715) -> (* Ok *)
                            US6_0(v14715)
                    return v14838 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v14839 : Async<US6> = _v14713 
            let _v14449 = v14839 
            #endif
#else
            let v14840 : unit = ()
            let _v14840 =
                async {
                    let! v14444 = v14444 
                    let v14841 : US8 = v14444 
                    let v14965 : US6 =
                        match v14841 with
                        | US8_1(v14844) -> (* Error *)
                            let v14845 : string = $"%A{v14844}"
                            let v14848 : string = "System.TimeoutException"
                            let v14849 : bool = v14845.Contains v14848 
                            if v14849 then
                                let v14852 : unit = ()
                                let v14853 : (unit -> unit) = closure16(v0)
                                let v14854 : unit = (fun () -> v14853 (); v14852) ()
                                US6_1
                            else
                                let v14895 : unit = ()
                                let v14896 : (unit -> unit) = closure17(v0, v14844)
                                let v14897 : unit = (fun () -> v14896 (); v14895) ()
                                US6_1
                        | US8_0(v14842) -> (* Ok *)
                            US6_0(v14842)
                    return v14965 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v14966 : Async<US6> = _v14840 
            let _v14449 = v14966 
            #endif
            let v14967 : Async<US6> = _v14449 
            return! v14967 
            (*
            ()
        *)
        }
        (*
        ()
    *)
    let v14972 : Async<US6> = _v14228 
    let _v11983 = v14972 
    #endif
    let v14973 : Async<US6> = _v11983 
    let _v2 = v14973 
    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
    let v14978 : unit = ()
    
#if FABLE_COMPILER || WASM || CONTRACT
    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
    let v14979 : Async<US6> = null |> unbox<Async<US6>>
    let _v14978 = v14979 
    #endif
#if FABLE_COMPILER_RUST && WASM
    let v14982 : Async<US6> = null |> unbox<Async<US6>>
    let _v14978 = v14982 
    #endif
#if FABLE_COMPILER_RUST && CONTRACT
    let v14985 : Async<US6> = null |> unbox<Async<US6>>
    let _v14978 = v14985 
    #endif
#if FABLE_COMPILER_TYPESCRIPT
    let v14988 : unit = ()
    let _v14988 =
        async {
            let v14989 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v14990 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v14989 = v14990 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v14991 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v14989 = v14991 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v14992 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v14989 = v14992 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v14993 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v14989 = v14993 
            #endif
#if FABLE_COMPILER_PYTHON
            let v14994 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v14989 = v14994 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v14995 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v14989 = v14995 
            #endif
#else
            let v14996 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v14989 = v14996 
            #endif
            let v14997 : Async<Async<bool>> = _v14989 
            let! v14997 = v14997 
            let v15002 : Async<bool> = v14997 
            let v15003 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v15004 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v15005 : Async<Choice<bool, exn>> = v15004 v15002
            let _v15003 = v15005 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v15006 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v15007 : Async<Choice<bool, exn>> = v15006 v15002
            let _v15003 = v15007 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v15008 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v15009 : Async<Choice<bool, exn>> = v15008 v15002
            let _v15003 = v15009 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v15010 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v15011 : Async<Choice<bool, exn>> = v15010 v15002
            let _v15003 = v15011 
            #endif
#if FABLE_COMPILER_PYTHON
            let v15012 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v15013 : Async<Choice<bool, exn>> = v15012 v15002
            let _v15003 = v15013 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v15014 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v15015 : Async<Choice<bool, exn>> = v15014 v15002
            let _v15003 = v15015 
            #endif
#else
            let v15016 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v15017 : Async<Choice<bool, exn>> = v15016 v15002
            let _v15003 = v15017 
            #endif
            let v15018 : Async<Choice<bool, exn>> = _v15003 
            let v15023 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v15024 : Async<US7> = null |> unbox<Async<US7>>
            let _v15023 = v15024 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v15027 : Async<US7> = null |> unbox<Async<US7>>
            let _v15023 = v15027 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v15030 : Async<US7> = null |> unbox<Async<US7>>
            let _v15023 = v15030 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v15033 : unit = ()
            let _v15033 =
                async {
                    let! v15018 = v15018 
                    let v15034 : Choice<bool, exn> = v15018 
                    let v15035 : unit = ()
                    
#if FABLE_COMPILER || WASM || CONTRACT
                    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                    let v15036 : US7 = null |> unbox<US7>
                    let _v15035 = v15036 
                    #endif
#if FABLE_COMPILER_RUST && WASM
                    let v15039 : US7 = null |> unbox<US7>
                    let _v15035 = v15039 
                    #endif
#if FABLE_COMPILER_RUST && CONTRACT
                    let v15042 : US7 = null |> unbox<US7>
                    let _v15035 = v15042 
                    #endif
#if FABLE_COMPILER_TYPESCRIPT
                    let v15045 : US7 = null |> unbox<US7>
                    let _v15035 = v15045 
                    #endif
#if FABLE_COMPILER_PYTHON
                    let v15048 : US7 = null |> unbox<US7>
                    let _v15035 = v15048 
                    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                    let v15051 : (bool -> US7) = method21()
                    let v15052 : (exn -> US7) = method22()
                    let v15053 : US7 = match v15034 with Choice1Of2 x -> v15051 x | Choice2Of2 x -> v15052 x
                    let _v15035 = v15053 
                    #endif
#else
                    let v15054 : (bool -> US7) = method21()
                    let v15055 : (exn -> US7) = method22()
                    let v15056 : US7 = match v15034 with Choice1Of2 x -> v15054 x | Choice2Of2 x -> v15055 x
                    let _v15035 = v15056 
                    #endif
                    let v15057 : US7 = _v15035 
                    return v15057 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v15062 : Async<US7> = _v15033 
            let _v15023 = v15062 
            #endif
#if FABLE_COMPILER_PYTHON
            let v15063 : unit = ()
            let _v15063 =
                async {
                    let! v15018 = v15018 
                    let v15064 : Choice<bool, exn> = v15018 
                    let v15065 : unit = ()
                    
#if FABLE_COMPILER || WASM || CONTRACT
                    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                    let v15066 : US7 = null |> unbox<US7>
                    let _v15065 = v15066 
                    #endif
#if FABLE_COMPILER_RUST && WASM
                    let v15069 : US7 = null |> unbox<US7>
                    let _v15065 = v15069 
                    #endif
#if FABLE_COMPILER_RUST && CONTRACT
                    let v15072 : US7 = null |> unbox<US7>
                    let _v15065 = v15072 
                    #endif
#if FABLE_COMPILER_TYPESCRIPT
                    let v15075 : US7 = null |> unbox<US7>
                    let _v15065 = v15075 
                    #endif
#if FABLE_COMPILER_PYTHON
                    let v15078 : US7 = null |> unbox<US7>
                    let _v15065 = v15078 
                    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                    let v15081 : (bool -> US7) = method21()
                    let v15082 : (exn -> US7) = method22()
                    let v15083 : US7 = match v15064 with Choice1Of2 x -> v15081 x | Choice2Of2 x -> v15082 x
                    let _v15065 = v15083 
                    #endif
#else
                    let v15084 : (bool -> US7) = method21()
                    let v15085 : (exn -> US7) = method22()
                    let v15086 : US7 = match v15064 with Choice1Of2 x -> v15084 x | Choice2Of2 x -> v15085 x
                    let _v15065 = v15086 
                    #endif
                    let v15087 : US7 = _v15065 
                    return v15087 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v15092 : Async<US7> = _v15063 
            let _v15023 = v15092 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v15093 : unit = ()
            let _v15093 =
                async {
                    let! v15018 = v15018 
                    let v15094 : Choice<bool, exn> = v15018 
                    let v15095 : unit = ()
                    
#if FABLE_COMPILER || WASM || CONTRACT
                    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                    let v15096 : US7 = null |> unbox<US7>
                    let _v15095 = v15096 
                    #endif
#if FABLE_COMPILER_RUST && WASM
                    let v15099 : US7 = null |> unbox<US7>
                    let _v15095 = v15099 
                    #endif
#if FABLE_COMPILER_RUST && CONTRACT
                    let v15102 : US7 = null |> unbox<US7>
                    let _v15095 = v15102 
                    #endif
#if FABLE_COMPILER_TYPESCRIPT
                    let v15105 : US7 = null |> unbox<US7>
                    let _v15095 = v15105 
                    #endif
#if FABLE_COMPILER_PYTHON
                    let v15108 : US7 = null |> unbox<US7>
                    let _v15095 = v15108 
                    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                    let v15111 : (bool -> US7) = method21()
                    let v15112 : (exn -> US7) = method22()
                    let v15113 : US7 = match v15094 with Choice1Of2 x -> v15111 x | Choice2Of2 x -> v15112 x
                    let _v15095 = v15113 
                    #endif
#else
                    let v15114 : (bool -> US7) = method21()
                    let v15115 : (exn -> US7) = method22()
                    let v15116 : US7 = match v15094 with Choice1Of2 x -> v15114 x | Choice2Of2 x -> v15115 x
                    let _v15095 = v15116 
                    #endif
                    let v15117 : US7 = _v15095 
                    return v15117 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v15122 : Async<US7> = _v15093 
            let _v15023 = v15122 
            #endif
#else
            let v15123 : unit = ()
            let _v15123 =
                async {
                    let! v15018 = v15018 
                    let v15124 : Choice<bool, exn> = v15018 
                    let v15125 : unit = ()
                    
#if FABLE_COMPILER || WASM || CONTRACT
                    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                    let v15126 : US7 = null |> unbox<US7>
                    let _v15125 = v15126 
                    #endif
#if FABLE_COMPILER_RUST && WASM
                    let v15129 : US7 = null |> unbox<US7>
                    let _v15125 = v15129 
                    #endif
#if FABLE_COMPILER_RUST && CONTRACT
                    let v15132 : US7 = null |> unbox<US7>
                    let _v15125 = v15132 
                    #endif
#if FABLE_COMPILER_TYPESCRIPT
                    let v15135 : US7 = null |> unbox<US7>
                    let _v15125 = v15135 
                    #endif
#if FABLE_COMPILER_PYTHON
                    let v15138 : US7 = null |> unbox<US7>
                    let _v15125 = v15138 
                    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                    let v15141 : (bool -> US7) = method21()
                    let v15142 : (exn -> US7) = method22()
                    let v15143 : US7 = match v15124 with Choice1Of2 x -> v15141 x | Choice2Of2 x -> v15142 x
                    let _v15125 = v15143 
                    #endif
#else
                    let v15144 : (bool -> US7) = method21()
                    let v15145 : (exn -> US7) = method22()
                    let v15146 : US7 = match v15124 with Choice1Of2 x -> v15144 x | Choice2Of2 x -> v15145 x
                    let _v15125 = v15146 
                    #endif
                    let v15147 : US7 = _v15125 
                    return v15147 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v15152 : Async<US7> = _v15123 
            let _v15023 = v15152 
            #endif
            let v15153 : Async<US7> = _v15023 
            let v15158 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v15159 : Async<US8> = null |> unbox<Async<US8>>
            let _v15158 = v15159 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v15162 : Async<US8> = null |> unbox<Async<US8>>
            let _v15158 = v15162 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v15165 : Async<US8> = null |> unbox<Async<US8>>
            let _v15158 = v15165 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v15168 : unit = ()
            let _v15168 =
                async {
                    let! v15153 = v15153 
                    let v15169 : US7 = v15153 
                    let v15175 : US8 =
                        match v15169 with
                        | US7_0(v15170) -> (* C1of2 *)
                            US8_0(v15170)
                        | US7_1(v15172) -> (* C2of2 *)
                            US8_1(v15172)
                    return v15175 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v15176 : Async<US8> = _v15168 
            let _v15158 = v15176 
            #endif
#if FABLE_COMPILER_PYTHON
            let v15177 : unit = ()
            let _v15177 =
                async {
                    let! v15153 = v15153 
                    let v15178 : US7 = v15153 
                    let v15184 : US8 =
                        match v15178 with
                        | US7_0(v15179) -> (* C1of2 *)
                            US8_0(v15179)
                        | US7_1(v15181) -> (* C2of2 *)
                            US8_1(v15181)
                    return v15184 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v15185 : Async<US8> = _v15177 
            let _v15158 = v15185 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v15186 : unit = ()
            let _v15186 =
                async {
                    let! v15153 = v15153 
                    let v15187 : US7 = v15153 
                    let v15193 : US8 =
                        match v15187 with
                        | US7_0(v15188) -> (* C1of2 *)
                            US8_0(v15188)
                        | US7_1(v15190) -> (* C2of2 *)
                            US8_1(v15190)
                    return v15193 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v15194 : Async<US8> = _v15186 
            let _v15158 = v15194 
            #endif
#else
            let v15195 : unit = ()
            let _v15195 =
                async {
                    let! v15153 = v15153 
                    let v15196 : US7 = v15153 
                    let v15202 : US8 =
                        match v15196 with
                        | US7_0(v15197) -> (* C1of2 *)
                            US8_0(v15197)
                        | US7_1(v15199) -> (* C2of2 *)
                            US8_1(v15199)
                    return v15202 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v15203 : Async<US8> = _v15195 
            let _v15158 = v15203 
            #endif
            let v15204 : Async<US8> = _v15158 
            let v15209 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v15210 : Async<US6> = null |> unbox<Async<US6>>
            let _v15209 = v15210 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v15213 : Async<US6> = null |> unbox<Async<US6>>
            let _v15209 = v15213 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v15216 : Async<US6> = null |> unbox<Async<US6>>
            let _v15209 = v15216 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v15219 : unit = ()
            let _v15219 =
                async {
                    let! v15204 = v15204 
                    let v15220 : US8 = v15204 
                    let v15344 : US6 =
                        match v15220 with
                        | US8_1(v15223) -> (* Error *)
                            let v15224 : string = $"%A{v15223}"
                            let v15227 : string = "System.TimeoutException"
                            let v15228 : bool = v15224.Contains v15227 
                            if v15228 then
                                let v15231 : unit = ()
                                let v15232 : (unit -> unit) = closure16(v0)
                                let v15233 : unit = (fun () -> v15232 (); v15231) ()
                                US6_1
                            else
                                let v15274 : unit = ()
                                let v15275 : (unit -> unit) = closure17(v0, v15223)
                                let v15276 : unit = (fun () -> v15275 (); v15274) ()
                                US6_1
                        | US8_0(v15221) -> (* Ok *)
                            US6_0(v15221)
                    return v15344 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v15345 : Async<US6> = _v15219 
            let _v15209 = v15345 
            #endif
#if FABLE_COMPILER_PYTHON
            let v15346 : unit = ()
            let _v15346 =
                async {
                    let! v15204 = v15204 
                    let v15347 : US8 = v15204 
                    let v15471 : US6 =
                        match v15347 with
                        | US8_1(v15350) -> (* Error *)
                            let v15351 : string = $"%A{v15350}"
                            let v15354 : string = "System.TimeoutException"
                            let v15355 : bool = v15351.Contains v15354 
                            if v15355 then
                                let v15358 : unit = ()
                                let v15359 : (unit -> unit) = closure16(v0)
                                let v15360 : unit = (fun () -> v15359 (); v15358) ()
                                US6_1
                            else
                                let v15401 : unit = ()
                                let v15402 : (unit -> unit) = closure17(v0, v15350)
                                let v15403 : unit = (fun () -> v15402 (); v15401) ()
                                US6_1
                        | US8_0(v15348) -> (* Ok *)
                            US6_0(v15348)
                    return v15471 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v15472 : Async<US6> = _v15346 
            let _v15209 = v15472 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v15473 : unit = ()
            let _v15473 =
                async {
                    let! v15204 = v15204 
                    let v15474 : US8 = v15204 
                    let v15598 : US6 =
                        match v15474 with
                        | US8_1(v15477) -> (* Error *)
                            let v15478 : string = $"%A{v15477}"
                            let v15481 : string = "System.TimeoutException"
                            let v15482 : bool = v15478.Contains v15481 
                            if v15482 then
                                let v15485 : unit = ()
                                let v15486 : (unit -> unit) = closure16(v0)
                                let v15487 : unit = (fun () -> v15486 (); v15485) ()
                                US6_1
                            else
                                let v15528 : unit = ()
                                let v15529 : (unit -> unit) = closure17(v0, v15477)
                                let v15530 : unit = (fun () -> v15529 (); v15528) ()
                                US6_1
                        | US8_0(v15475) -> (* Ok *)
                            US6_0(v15475)
                    return v15598 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v15599 : Async<US6> = _v15473 
            let _v15209 = v15599 
            #endif
#else
            let v15600 : unit = ()
            let _v15600 =
                async {
                    let! v15204 = v15204 
                    let v15601 : US8 = v15204 
                    let v15725 : US6 =
                        match v15601 with
                        | US8_1(v15604) -> (* Error *)
                            let v15605 : string = $"%A{v15604}"
                            let v15608 : string = "System.TimeoutException"
                            let v15609 : bool = v15605.Contains v15608 
                            if v15609 then
                                let v15612 : unit = ()
                                let v15613 : (unit -> unit) = closure16(v0)
                                let v15614 : unit = (fun () -> v15613 (); v15612) ()
                                US6_1
                            else
                                let v15655 : unit = ()
                                let v15656 : (unit -> unit) = closure17(v0, v15604)
                                let v15657 : unit = (fun () -> v15656 (); v15655) ()
                                US6_1
                        | US8_0(v15602) -> (* Ok *)
                            US6_0(v15602)
                    return v15725 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v15726 : Async<US6> = _v15600 
            let _v15209 = v15726 
            #endif
            let v15727 : Async<US6> = _v15209 
            return! v15727 
            (*
            ()
        *)
        }
        (*
        ()
    *)
    let v15732 : Async<US6> = _v14988 
    let _v14978 = v15732 
    #endif
#if FABLE_COMPILER_PYTHON
    let v15733 : unit = ()
    let _v15733 =
        async {
            let v15734 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v15735 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v15734 = v15735 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v15736 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v15734 = v15736 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v15737 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v15734 = v15737 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v15738 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v15734 = v15738 
            #endif
#if FABLE_COMPILER_PYTHON
            let v15739 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v15734 = v15739 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v15740 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v15734 = v15740 
            #endif
#else
            let v15741 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v15734 = v15741 
            #endif
            let v15742 : Async<Async<bool>> = _v15734 
            let! v15742 = v15742 
            let v15747 : Async<bool> = v15742 
            let v15748 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v15749 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v15750 : Async<Choice<bool, exn>> = v15749 v15747
            let _v15748 = v15750 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v15751 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v15752 : Async<Choice<bool, exn>> = v15751 v15747
            let _v15748 = v15752 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v15753 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v15754 : Async<Choice<bool, exn>> = v15753 v15747
            let _v15748 = v15754 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v15755 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v15756 : Async<Choice<bool, exn>> = v15755 v15747
            let _v15748 = v15756 
            #endif
#if FABLE_COMPILER_PYTHON
            let v15757 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v15758 : Async<Choice<bool, exn>> = v15757 v15747
            let _v15748 = v15758 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v15759 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v15760 : Async<Choice<bool, exn>> = v15759 v15747
            let _v15748 = v15760 
            #endif
#else
            let v15761 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v15762 : Async<Choice<bool, exn>> = v15761 v15747
            let _v15748 = v15762 
            #endif
            let v15763 : Async<Choice<bool, exn>> = _v15748 
            let v15768 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v15769 : Async<US7> = null |> unbox<Async<US7>>
            let _v15768 = v15769 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v15772 : Async<US7> = null |> unbox<Async<US7>>
            let _v15768 = v15772 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v15775 : Async<US7> = null |> unbox<Async<US7>>
            let _v15768 = v15775 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v15778 : unit = ()
            let _v15778 =
                async {
                    let! v15763 = v15763 
                    let v15779 : Choice<bool, exn> = v15763 
                    let v15780 : unit = ()
                    
#if FABLE_COMPILER || WASM || CONTRACT
                    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                    let v15781 : US7 = null |> unbox<US7>
                    let _v15780 = v15781 
                    #endif
#if FABLE_COMPILER_RUST && WASM
                    let v15784 : US7 = null |> unbox<US7>
                    let _v15780 = v15784 
                    #endif
#if FABLE_COMPILER_RUST && CONTRACT
                    let v15787 : US7 = null |> unbox<US7>
                    let _v15780 = v15787 
                    #endif
#if FABLE_COMPILER_TYPESCRIPT
                    let v15790 : US7 = null |> unbox<US7>
                    let _v15780 = v15790 
                    #endif
#if FABLE_COMPILER_PYTHON
                    let v15793 : US7 = null |> unbox<US7>
                    let _v15780 = v15793 
                    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                    let v15796 : (bool -> US7) = method21()
                    let v15797 : (exn -> US7) = method22()
                    let v15798 : US7 = match v15779 with Choice1Of2 x -> v15796 x | Choice2Of2 x -> v15797 x
                    let _v15780 = v15798 
                    #endif
#else
                    let v15799 : (bool -> US7) = method21()
                    let v15800 : (exn -> US7) = method22()
                    let v15801 : US7 = match v15779 with Choice1Of2 x -> v15799 x | Choice2Of2 x -> v15800 x
                    let _v15780 = v15801 
                    #endif
                    let v15802 : US7 = _v15780 
                    return v15802 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v15807 : Async<US7> = _v15778 
            let _v15768 = v15807 
            #endif
#if FABLE_COMPILER_PYTHON
            let v15808 : unit = ()
            let _v15808 =
                async {
                    let! v15763 = v15763 
                    let v15809 : Choice<bool, exn> = v15763 
                    let v15810 : unit = ()
                    
#if FABLE_COMPILER || WASM || CONTRACT
                    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                    let v15811 : US7 = null |> unbox<US7>
                    let _v15810 = v15811 
                    #endif
#if FABLE_COMPILER_RUST && WASM
                    let v15814 : US7 = null |> unbox<US7>
                    let _v15810 = v15814 
                    #endif
#if FABLE_COMPILER_RUST && CONTRACT
                    let v15817 : US7 = null |> unbox<US7>
                    let _v15810 = v15817 
                    #endif
#if FABLE_COMPILER_TYPESCRIPT
                    let v15820 : US7 = null |> unbox<US7>
                    let _v15810 = v15820 
                    #endif
#if FABLE_COMPILER_PYTHON
                    let v15823 : US7 = null |> unbox<US7>
                    let _v15810 = v15823 
                    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                    let v15826 : (bool -> US7) = method21()
                    let v15827 : (exn -> US7) = method22()
                    let v15828 : US7 = match v15809 with Choice1Of2 x -> v15826 x | Choice2Of2 x -> v15827 x
                    let _v15810 = v15828 
                    #endif
#else
                    let v15829 : (bool -> US7) = method21()
                    let v15830 : (exn -> US7) = method22()
                    let v15831 : US7 = match v15809 with Choice1Of2 x -> v15829 x | Choice2Of2 x -> v15830 x
                    let _v15810 = v15831 
                    #endif
                    let v15832 : US7 = _v15810 
                    return v15832 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v15837 : Async<US7> = _v15808 
            let _v15768 = v15837 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v15838 : unit = ()
            let _v15838 =
                async {
                    let! v15763 = v15763 
                    let v15839 : Choice<bool, exn> = v15763 
                    let v15840 : unit = ()
                    
#if FABLE_COMPILER || WASM || CONTRACT
                    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                    let v15841 : US7 = null |> unbox<US7>
                    let _v15840 = v15841 
                    #endif
#if FABLE_COMPILER_RUST && WASM
                    let v15844 : US7 = null |> unbox<US7>
                    let _v15840 = v15844 
                    #endif
#if FABLE_COMPILER_RUST && CONTRACT
                    let v15847 : US7 = null |> unbox<US7>
                    let _v15840 = v15847 
                    #endif
#if FABLE_COMPILER_TYPESCRIPT
                    let v15850 : US7 = null |> unbox<US7>
                    let _v15840 = v15850 
                    #endif
#if FABLE_COMPILER_PYTHON
                    let v15853 : US7 = null |> unbox<US7>
                    let _v15840 = v15853 
                    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                    let v15856 : (bool -> US7) = method21()
                    let v15857 : (exn -> US7) = method22()
                    let v15858 : US7 = match v15839 with Choice1Of2 x -> v15856 x | Choice2Of2 x -> v15857 x
                    let _v15840 = v15858 
                    #endif
#else
                    let v15859 : (bool -> US7) = method21()
                    let v15860 : (exn -> US7) = method22()
                    let v15861 : US7 = match v15839 with Choice1Of2 x -> v15859 x | Choice2Of2 x -> v15860 x
                    let _v15840 = v15861 
                    #endif
                    let v15862 : US7 = _v15840 
                    return v15862 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v15867 : Async<US7> = _v15838 
            let _v15768 = v15867 
            #endif
#else
            let v15868 : unit = ()
            let _v15868 =
                async {
                    let! v15763 = v15763 
                    let v15869 : Choice<bool, exn> = v15763 
                    let v15870 : unit = ()
                    
#if FABLE_COMPILER || WASM || CONTRACT
                    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                    let v15871 : US7 = null |> unbox<US7>
                    let _v15870 = v15871 
                    #endif
#if FABLE_COMPILER_RUST && WASM
                    let v15874 : US7 = null |> unbox<US7>
                    let _v15870 = v15874 
                    #endif
#if FABLE_COMPILER_RUST && CONTRACT
                    let v15877 : US7 = null |> unbox<US7>
                    let _v15870 = v15877 
                    #endif
#if FABLE_COMPILER_TYPESCRIPT
                    let v15880 : US7 = null |> unbox<US7>
                    let _v15870 = v15880 
                    #endif
#if FABLE_COMPILER_PYTHON
                    let v15883 : US7 = null |> unbox<US7>
                    let _v15870 = v15883 
                    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                    let v15886 : (bool -> US7) = method21()
                    let v15887 : (exn -> US7) = method22()
                    let v15888 : US7 = match v15869 with Choice1Of2 x -> v15886 x | Choice2Of2 x -> v15887 x
                    let _v15870 = v15888 
                    #endif
#else
                    let v15889 : (bool -> US7) = method21()
                    let v15890 : (exn -> US7) = method22()
                    let v15891 : US7 = match v15869 with Choice1Of2 x -> v15889 x | Choice2Of2 x -> v15890 x
                    let _v15870 = v15891 
                    #endif
                    let v15892 : US7 = _v15870 
                    return v15892 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v15897 : Async<US7> = _v15868 
            let _v15768 = v15897 
            #endif
            let v15898 : Async<US7> = _v15768 
            let v15903 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v15904 : Async<US8> = null |> unbox<Async<US8>>
            let _v15903 = v15904 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v15907 : Async<US8> = null |> unbox<Async<US8>>
            let _v15903 = v15907 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v15910 : Async<US8> = null |> unbox<Async<US8>>
            let _v15903 = v15910 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v15913 : unit = ()
            let _v15913 =
                async {
                    let! v15898 = v15898 
                    let v15914 : US7 = v15898 
                    let v15920 : US8 =
                        match v15914 with
                        | US7_0(v15915) -> (* C1of2 *)
                            US8_0(v15915)
                        | US7_1(v15917) -> (* C2of2 *)
                            US8_1(v15917)
                    return v15920 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v15921 : Async<US8> = _v15913 
            let _v15903 = v15921 
            #endif
#if FABLE_COMPILER_PYTHON
            let v15922 : unit = ()
            let _v15922 =
                async {
                    let! v15898 = v15898 
                    let v15923 : US7 = v15898 
                    let v15929 : US8 =
                        match v15923 with
                        | US7_0(v15924) -> (* C1of2 *)
                            US8_0(v15924)
                        | US7_1(v15926) -> (* C2of2 *)
                            US8_1(v15926)
                    return v15929 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v15930 : Async<US8> = _v15922 
            let _v15903 = v15930 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v15931 : unit = ()
            let _v15931 =
                async {
                    let! v15898 = v15898 
                    let v15932 : US7 = v15898 
                    let v15938 : US8 =
                        match v15932 with
                        | US7_0(v15933) -> (* C1of2 *)
                            US8_0(v15933)
                        | US7_1(v15935) -> (* C2of2 *)
                            US8_1(v15935)
                    return v15938 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v15939 : Async<US8> = _v15931 
            let _v15903 = v15939 
            #endif
#else
            let v15940 : unit = ()
            let _v15940 =
                async {
                    let! v15898 = v15898 
                    let v15941 : US7 = v15898 
                    let v15947 : US8 =
                        match v15941 with
                        | US7_0(v15942) -> (* C1of2 *)
                            US8_0(v15942)
                        | US7_1(v15944) -> (* C2of2 *)
                            US8_1(v15944)
                    return v15947 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v15948 : Async<US8> = _v15940 
            let _v15903 = v15948 
            #endif
            let v15949 : Async<US8> = _v15903 
            let v15954 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v15955 : Async<US6> = null |> unbox<Async<US6>>
            let _v15954 = v15955 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v15958 : Async<US6> = null |> unbox<Async<US6>>
            let _v15954 = v15958 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v15961 : Async<US6> = null |> unbox<Async<US6>>
            let _v15954 = v15961 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v15964 : unit = ()
            let _v15964 =
                async {
                    let! v15949 = v15949 
                    let v15965 : US8 = v15949 
                    let v16089 : US6 =
                        match v15965 with
                        | US8_1(v15968) -> (* Error *)
                            let v15969 : string = $"%A{v15968}"
                            let v15972 : string = "System.TimeoutException"
                            let v15973 : bool = v15969.Contains v15972 
                            if v15973 then
                                let v15976 : unit = ()
                                let v15977 : (unit -> unit) = closure16(v0)
                                let v15978 : unit = (fun () -> v15977 (); v15976) ()
                                US6_1
                            else
                                let v16019 : unit = ()
                                let v16020 : (unit -> unit) = closure17(v0, v15968)
                                let v16021 : unit = (fun () -> v16020 (); v16019) ()
                                US6_1
                        | US8_0(v15966) -> (* Ok *)
                            US6_0(v15966)
                    return v16089 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v16090 : Async<US6> = _v15964 
            let _v15954 = v16090 
            #endif
#if FABLE_COMPILER_PYTHON
            let v16091 : unit = ()
            let _v16091 =
                async {
                    let! v15949 = v15949 
                    let v16092 : US8 = v15949 
                    let v16216 : US6 =
                        match v16092 with
                        | US8_1(v16095) -> (* Error *)
                            let v16096 : string = $"%A{v16095}"
                            let v16099 : string = "System.TimeoutException"
                            let v16100 : bool = v16096.Contains v16099 
                            if v16100 then
                                let v16103 : unit = ()
                                let v16104 : (unit -> unit) = closure16(v0)
                                let v16105 : unit = (fun () -> v16104 (); v16103) ()
                                US6_1
                            else
                                let v16146 : unit = ()
                                let v16147 : (unit -> unit) = closure17(v0, v16095)
                                let v16148 : unit = (fun () -> v16147 (); v16146) ()
                                US6_1
                        | US8_0(v16093) -> (* Ok *)
                            US6_0(v16093)
                    return v16216 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v16217 : Async<US6> = _v16091 
            let _v15954 = v16217 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v16218 : unit = ()
            let _v16218 =
                async {
                    let! v15949 = v15949 
                    let v16219 : US8 = v15949 
                    let v16343 : US6 =
                        match v16219 with
                        | US8_1(v16222) -> (* Error *)
                            let v16223 : string = $"%A{v16222}"
                            let v16226 : string = "System.TimeoutException"
                            let v16227 : bool = v16223.Contains v16226 
                            if v16227 then
                                let v16230 : unit = ()
                                let v16231 : (unit -> unit) = closure16(v0)
                                let v16232 : unit = (fun () -> v16231 (); v16230) ()
                                US6_1
                            else
                                let v16273 : unit = ()
                                let v16274 : (unit -> unit) = closure17(v0, v16222)
                                let v16275 : unit = (fun () -> v16274 (); v16273) ()
                                US6_1
                        | US8_0(v16220) -> (* Ok *)
                            US6_0(v16220)
                    return v16343 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v16344 : Async<US6> = _v16218 
            let _v15954 = v16344 
            #endif
#else
            let v16345 : unit = ()
            let _v16345 =
                async {
                    let! v15949 = v15949 
                    let v16346 : US8 = v15949 
                    let v16470 : US6 =
                        match v16346 with
                        | US8_1(v16349) -> (* Error *)
                            let v16350 : string = $"%A{v16349}"
                            let v16353 : string = "System.TimeoutException"
                            let v16354 : bool = v16350.Contains v16353 
                            if v16354 then
                                let v16357 : unit = ()
                                let v16358 : (unit -> unit) = closure16(v0)
                                let v16359 : unit = (fun () -> v16358 (); v16357) ()
                                US6_1
                            else
                                let v16400 : unit = ()
                                let v16401 : (unit -> unit) = closure17(v0, v16349)
                                let v16402 : unit = (fun () -> v16401 (); v16400) ()
                                US6_1
                        | US8_0(v16347) -> (* Ok *)
                            US6_0(v16347)
                    return v16470 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v16471 : Async<US6> = _v16345 
            let _v15954 = v16471 
            #endif
            let v16472 : Async<US6> = _v15954 
            return! v16472 
            (*
            ()
        *)
        }
        (*
        ()
    *)
    let v16477 : Async<US6> = _v15733 
    let _v14978 = v16477 
    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
    let v16478 : unit = ()
    let _v16478 =
        async {
            let v16479 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v16480 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v16479 = v16480 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v16481 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v16479 = v16481 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v16482 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v16479 = v16482 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v16483 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v16479 = v16483 
            #endif
#if FABLE_COMPILER_PYTHON
            let v16484 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v16479 = v16484 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v16485 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v16479 = v16485 
            #endif
#else
            let v16486 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v16479 = v16486 
            #endif
            let v16487 : Async<Async<bool>> = _v16479 
            let! v16487 = v16487 
            let v16492 : Async<bool> = v16487 
            let v16493 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v16494 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v16495 : Async<Choice<bool, exn>> = v16494 v16492
            let _v16493 = v16495 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v16496 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v16497 : Async<Choice<bool, exn>> = v16496 v16492
            let _v16493 = v16497 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v16498 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v16499 : Async<Choice<bool, exn>> = v16498 v16492
            let _v16493 = v16499 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v16500 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v16501 : Async<Choice<bool, exn>> = v16500 v16492
            let _v16493 = v16501 
            #endif
#if FABLE_COMPILER_PYTHON
            let v16502 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v16503 : Async<Choice<bool, exn>> = v16502 v16492
            let _v16493 = v16503 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v16504 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v16505 : Async<Choice<bool, exn>> = v16504 v16492
            let _v16493 = v16505 
            #endif
#else
            let v16506 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v16507 : Async<Choice<bool, exn>> = v16506 v16492
            let _v16493 = v16507 
            #endif
            let v16508 : Async<Choice<bool, exn>> = _v16493 
            let v16513 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v16514 : Async<US7> = null |> unbox<Async<US7>>
            let _v16513 = v16514 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v16517 : Async<US7> = null |> unbox<Async<US7>>
            let _v16513 = v16517 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v16520 : Async<US7> = null |> unbox<Async<US7>>
            let _v16513 = v16520 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v16523 : unit = ()
            let _v16523 =
                async {
                    let! v16508 = v16508 
                    let v16524 : Choice<bool, exn> = v16508 
                    let v16525 : unit = ()
                    
#if FABLE_COMPILER || WASM || CONTRACT
                    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                    let v16526 : US7 = null |> unbox<US7>
                    let _v16525 = v16526 
                    #endif
#if FABLE_COMPILER_RUST && WASM
                    let v16529 : US7 = null |> unbox<US7>
                    let _v16525 = v16529 
                    #endif
#if FABLE_COMPILER_RUST && CONTRACT
                    let v16532 : US7 = null |> unbox<US7>
                    let _v16525 = v16532 
                    #endif
#if FABLE_COMPILER_TYPESCRIPT
                    let v16535 : US7 = null |> unbox<US7>
                    let _v16525 = v16535 
                    #endif
#if FABLE_COMPILER_PYTHON
                    let v16538 : US7 = null |> unbox<US7>
                    let _v16525 = v16538 
                    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                    let v16541 : (bool -> US7) = method21()
                    let v16542 : (exn -> US7) = method22()
                    let v16543 : US7 = match v16524 with Choice1Of2 x -> v16541 x | Choice2Of2 x -> v16542 x
                    let _v16525 = v16543 
                    #endif
#else
                    let v16544 : (bool -> US7) = method21()
                    let v16545 : (exn -> US7) = method22()
                    let v16546 : US7 = match v16524 with Choice1Of2 x -> v16544 x | Choice2Of2 x -> v16545 x
                    let _v16525 = v16546 
                    #endif
                    let v16547 : US7 = _v16525 
                    return v16547 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v16552 : Async<US7> = _v16523 
            let _v16513 = v16552 
            #endif
#if FABLE_COMPILER_PYTHON
            let v16553 : unit = ()
            let _v16553 =
                async {
                    let! v16508 = v16508 
                    let v16554 : Choice<bool, exn> = v16508 
                    let v16555 : unit = ()
                    
#if FABLE_COMPILER || WASM || CONTRACT
                    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                    let v16556 : US7 = null |> unbox<US7>
                    let _v16555 = v16556 
                    #endif
#if FABLE_COMPILER_RUST && WASM
                    let v16559 : US7 = null |> unbox<US7>
                    let _v16555 = v16559 
                    #endif
#if FABLE_COMPILER_RUST && CONTRACT
                    let v16562 : US7 = null |> unbox<US7>
                    let _v16555 = v16562 
                    #endif
#if FABLE_COMPILER_TYPESCRIPT
                    let v16565 : US7 = null |> unbox<US7>
                    let _v16555 = v16565 
                    #endif
#if FABLE_COMPILER_PYTHON
                    let v16568 : US7 = null |> unbox<US7>
                    let _v16555 = v16568 
                    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                    let v16571 : (bool -> US7) = method21()
                    let v16572 : (exn -> US7) = method22()
                    let v16573 : US7 = match v16554 with Choice1Of2 x -> v16571 x | Choice2Of2 x -> v16572 x
                    let _v16555 = v16573 
                    #endif
#else
                    let v16574 : (bool -> US7) = method21()
                    let v16575 : (exn -> US7) = method22()
                    let v16576 : US7 = match v16554 with Choice1Of2 x -> v16574 x | Choice2Of2 x -> v16575 x
                    let _v16555 = v16576 
                    #endif
                    let v16577 : US7 = _v16555 
                    return v16577 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v16582 : Async<US7> = _v16553 
            let _v16513 = v16582 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v16583 : unit = ()
            let _v16583 =
                async {
                    let! v16508 = v16508 
                    let v16584 : Choice<bool, exn> = v16508 
                    let v16585 : unit = ()
                    
#if FABLE_COMPILER || WASM || CONTRACT
                    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                    let v16586 : US7 = null |> unbox<US7>
                    let _v16585 = v16586 
                    #endif
#if FABLE_COMPILER_RUST && WASM
                    let v16589 : US7 = null |> unbox<US7>
                    let _v16585 = v16589 
                    #endif
#if FABLE_COMPILER_RUST && CONTRACT
                    let v16592 : US7 = null |> unbox<US7>
                    let _v16585 = v16592 
                    #endif
#if FABLE_COMPILER_TYPESCRIPT
                    let v16595 : US7 = null |> unbox<US7>
                    let _v16585 = v16595 
                    #endif
#if FABLE_COMPILER_PYTHON
                    let v16598 : US7 = null |> unbox<US7>
                    let _v16585 = v16598 
                    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                    let v16601 : (bool -> US7) = method21()
                    let v16602 : (exn -> US7) = method22()
                    let v16603 : US7 = match v16584 with Choice1Of2 x -> v16601 x | Choice2Of2 x -> v16602 x
                    let _v16585 = v16603 
                    #endif
#else
                    let v16604 : (bool -> US7) = method21()
                    let v16605 : (exn -> US7) = method22()
                    let v16606 : US7 = match v16584 with Choice1Of2 x -> v16604 x | Choice2Of2 x -> v16605 x
                    let _v16585 = v16606 
                    #endif
                    let v16607 : US7 = _v16585 
                    return v16607 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v16612 : Async<US7> = _v16583 
            let _v16513 = v16612 
            #endif
#else
            let v16613 : unit = ()
            let _v16613 =
                async {
                    let! v16508 = v16508 
                    let v16614 : Choice<bool, exn> = v16508 
                    let v16615 : unit = ()
                    
#if FABLE_COMPILER || WASM || CONTRACT
                    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                    let v16616 : US7 = null |> unbox<US7>
                    let _v16615 = v16616 
                    #endif
#if FABLE_COMPILER_RUST && WASM
                    let v16619 : US7 = null |> unbox<US7>
                    let _v16615 = v16619 
                    #endif
#if FABLE_COMPILER_RUST && CONTRACT
                    let v16622 : US7 = null |> unbox<US7>
                    let _v16615 = v16622 
                    #endif
#if FABLE_COMPILER_TYPESCRIPT
                    let v16625 : US7 = null |> unbox<US7>
                    let _v16615 = v16625 
                    #endif
#if FABLE_COMPILER_PYTHON
                    let v16628 : US7 = null |> unbox<US7>
                    let _v16615 = v16628 
                    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                    let v16631 : (bool -> US7) = method21()
                    let v16632 : (exn -> US7) = method22()
                    let v16633 : US7 = match v16614 with Choice1Of2 x -> v16631 x | Choice2Of2 x -> v16632 x
                    let _v16615 = v16633 
                    #endif
#else
                    let v16634 : (bool -> US7) = method21()
                    let v16635 : (exn -> US7) = method22()
                    let v16636 : US7 = match v16614 with Choice1Of2 x -> v16634 x | Choice2Of2 x -> v16635 x
                    let _v16615 = v16636 
                    #endif
                    let v16637 : US7 = _v16615 
                    return v16637 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v16642 : Async<US7> = _v16613 
            let _v16513 = v16642 
            #endif
            let v16643 : Async<US7> = _v16513 
            let v16648 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v16649 : Async<US8> = null |> unbox<Async<US8>>
            let _v16648 = v16649 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v16652 : Async<US8> = null |> unbox<Async<US8>>
            let _v16648 = v16652 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v16655 : Async<US8> = null |> unbox<Async<US8>>
            let _v16648 = v16655 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v16658 : unit = ()
            let _v16658 =
                async {
                    let! v16643 = v16643 
                    let v16659 : US7 = v16643 
                    let v16665 : US8 =
                        match v16659 with
                        | US7_0(v16660) -> (* C1of2 *)
                            US8_0(v16660)
                        | US7_1(v16662) -> (* C2of2 *)
                            US8_1(v16662)
                    return v16665 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v16666 : Async<US8> = _v16658 
            let _v16648 = v16666 
            #endif
#if FABLE_COMPILER_PYTHON
            let v16667 : unit = ()
            let _v16667 =
                async {
                    let! v16643 = v16643 
                    let v16668 : US7 = v16643 
                    let v16674 : US8 =
                        match v16668 with
                        | US7_0(v16669) -> (* C1of2 *)
                            US8_0(v16669)
                        | US7_1(v16671) -> (* C2of2 *)
                            US8_1(v16671)
                    return v16674 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v16675 : Async<US8> = _v16667 
            let _v16648 = v16675 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v16676 : unit = ()
            let _v16676 =
                async {
                    let! v16643 = v16643 
                    let v16677 : US7 = v16643 
                    let v16683 : US8 =
                        match v16677 with
                        | US7_0(v16678) -> (* C1of2 *)
                            US8_0(v16678)
                        | US7_1(v16680) -> (* C2of2 *)
                            US8_1(v16680)
                    return v16683 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v16684 : Async<US8> = _v16676 
            let _v16648 = v16684 
            #endif
#else
            let v16685 : unit = ()
            let _v16685 =
                async {
                    let! v16643 = v16643 
                    let v16686 : US7 = v16643 
                    let v16692 : US8 =
                        match v16686 with
                        | US7_0(v16687) -> (* C1of2 *)
                            US8_0(v16687)
                        | US7_1(v16689) -> (* C2of2 *)
                            US8_1(v16689)
                    return v16692 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v16693 : Async<US8> = _v16685 
            let _v16648 = v16693 
            #endif
            let v16694 : Async<US8> = _v16648 
            let v16699 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v16700 : Async<US6> = null |> unbox<Async<US6>>
            let _v16699 = v16700 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v16703 : Async<US6> = null |> unbox<Async<US6>>
            let _v16699 = v16703 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v16706 : Async<US6> = null |> unbox<Async<US6>>
            let _v16699 = v16706 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v16709 : unit = ()
            let _v16709 =
                async {
                    let! v16694 = v16694 
                    let v16710 : US8 = v16694 
                    let v16834 : US6 =
                        match v16710 with
                        | US8_1(v16713) -> (* Error *)
                            let v16714 : string = $"%A{v16713}"
                            let v16717 : string = "System.TimeoutException"
                            let v16718 : bool = v16714.Contains v16717 
                            if v16718 then
                                let v16721 : unit = ()
                                let v16722 : (unit -> unit) = closure16(v0)
                                let v16723 : unit = (fun () -> v16722 (); v16721) ()
                                US6_1
                            else
                                let v16764 : unit = ()
                                let v16765 : (unit -> unit) = closure17(v0, v16713)
                                let v16766 : unit = (fun () -> v16765 (); v16764) ()
                                US6_1
                        | US8_0(v16711) -> (* Ok *)
                            US6_0(v16711)
                    return v16834 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v16835 : Async<US6> = _v16709 
            let _v16699 = v16835 
            #endif
#if FABLE_COMPILER_PYTHON
            let v16836 : unit = ()
            let _v16836 =
                async {
                    let! v16694 = v16694 
                    let v16837 : US8 = v16694 
                    let v16961 : US6 =
                        match v16837 with
                        | US8_1(v16840) -> (* Error *)
                            let v16841 : string = $"%A{v16840}"
                            let v16844 : string = "System.TimeoutException"
                            let v16845 : bool = v16841.Contains v16844 
                            if v16845 then
                                let v16848 : unit = ()
                                let v16849 : (unit -> unit) = closure16(v0)
                                let v16850 : unit = (fun () -> v16849 (); v16848) ()
                                US6_1
                            else
                                let v16891 : unit = ()
                                let v16892 : (unit -> unit) = closure17(v0, v16840)
                                let v16893 : unit = (fun () -> v16892 (); v16891) ()
                                US6_1
                        | US8_0(v16838) -> (* Ok *)
                            US6_0(v16838)
                    return v16961 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v16962 : Async<US6> = _v16836 
            let _v16699 = v16962 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v16963 : unit = ()
            let _v16963 =
                async {
                    let! v16694 = v16694 
                    let v16964 : US8 = v16694 
                    let v17088 : US6 =
                        match v16964 with
                        | US8_1(v16967) -> (* Error *)
                            let v16968 : string = $"%A{v16967}"
                            let v16971 : string = "System.TimeoutException"
                            let v16972 : bool = v16968.Contains v16971 
                            if v16972 then
                                let v16975 : unit = ()
                                let v16976 : (unit -> unit) = closure16(v0)
                                let v16977 : unit = (fun () -> v16976 (); v16975) ()
                                US6_1
                            else
                                let v17018 : unit = ()
                                let v17019 : (unit -> unit) = closure17(v0, v16967)
                                let v17020 : unit = (fun () -> v17019 (); v17018) ()
                                US6_1
                        | US8_0(v16965) -> (* Ok *)
                            US6_0(v16965)
                    return v17088 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v17089 : Async<US6> = _v16963 
            let _v16699 = v17089 
            #endif
#else
            let v17090 : unit = ()
            let _v17090 =
                async {
                    let! v16694 = v16694 
                    let v17091 : US8 = v16694 
                    let v17215 : US6 =
                        match v17091 with
                        | US8_1(v17094) -> (* Error *)
                            let v17095 : string = $"%A{v17094}"
                            let v17098 : string = "System.TimeoutException"
                            let v17099 : bool = v17095.Contains v17098 
                            if v17099 then
                                let v17102 : unit = ()
                                let v17103 : (unit -> unit) = closure16(v0)
                                let v17104 : unit = (fun () -> v17103 (); v17102) ()
                                US6_1
                            else
                                let v17145 : unit = ()
                                let v17146 : (unit -> unit) = closure17(v0, v17094)
                                let v17147 : unit = (fun () -> v17146 (); v17145) ()
                                US6_1
                        | US8_0(v17092) -> (* Ok *)
                            US6_0(v17092)
                    return v17215 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v17216 : Async<US6> = _v17090 
            let _v16699 = v17216 
            #endif
            let v17217 : Async<US6> = _v16699 
            return! v17217 
            (*
            ()
        *)
        }
        (*
        ()
    *)
    let v17222 : Async<US6> = _v16478 
    let _v14978 = v17222 
    #endif
#else
    let v17223 : unit = ()
    let _v17223 =
        async {
            let v17224 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v17225 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v17224 = v17225 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v17226 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v17224 = v17226 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v17227 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v17224 = v17227 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v17228 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v17224 = v17228 
            #endif
#if FABLE_COMPILER_PYTHON
            let v17229 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v17224 = v17229 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v17230 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v17224 = v17230 
            #endif
#else
            let v17231 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v17224 = v17231 
            #endif
            let v17232 : Async<Async<bool>> = _v17224 
            let! v17232 = v17232 
            let v17237 : Async<bool> = v17232 
            let v17238 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v17239 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v17240 : Async<Choice<bool, exn>> = v17239 v17237
            let _v17238 = v17240 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v17241 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v17242 : Async<Choice<bool, exn>> = v17241 v17237
            let _v17238 = v17242 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v17243 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v17244 : Async<Choice<bool, exn>> = v17243 v17237
            let _v17238 = v17244 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v17245 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v17246 : Async<Choice<bool, exn>> = v17245 v17237
            let _v17238 = v17246 
            #endif
#if FABLE_COMPILER_PYTHON
            let v17247 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v17248 : Async<Choice<bool, exn>> = v17247 v17237
            let _v17238 = v17248 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v17249 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v17250 : Async<Choice<bool, exn>> = v17249 v17237
            let _v17238 = v17250 
            #endif
#else
            let v17251 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v17252 : Async<Choice<bool, exn>> = v17251 v17237
            let _v17238 = v17252 
            #endif
            let v17253 : Async<Choice<bool, exn>> = _v17238 
            let v17258 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v17259 : Async<US7> = null |> unbox<Async<US7>>
            let _v17258 = v17259 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v17262 : Async<US7> = null |> unbox<Async<US7>>
            let _v17258 = v17262 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v17265 : Async<US7> = null |> unbox<Async<US7>>
            let _v17258 = v17265 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v17268 : unit = ()
            let _v17268 =
                async {
                    let! v17253 = v17253 
                    let v17269 : Choice<bool, exn> = v17253 
                    let v17270 : unit = ()
                    
#if FABLE_COMPILER || WASM || CONTRACT
                    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                    let v17271 : US7 = null |> unbox<US7>
                    let _v17270 = v17271 
                    #endif
#if FABLE_COMPILER_RUST && WASM
                    let v17274 : US7 = null |> unbox<US7>
                    let _v17270 = v17274 
                    #endif
#if FABLE_COMPILER_RUST && CONTRACT
                    let v17277 : US7 = null |> unbox<US7>
                    let _v17270 = v17277 
                    #endif
#if FABLE_COMPILER_TYPESCRIPT
                    let v17280 : US7 = null |> unbox<US7>
                    let _v17270 = v17280 
                    #endif
#if FABLE_COMPILER_PYTHON
                    let v17283 : US7 = null |> unbox<US7>
                    let _v17270 = v17283 
                    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                    let v17286 : (bool -> US7) = method21()
                    let v17287 : (exn -> US7) = method22()
                    let v17288 : US7 = match v17269 with Choice1Of2 x -> v17286 x | Choice2Of2 x -> v17287 x
                    let _v17270 = v17288 
                    #endif
#else
                    let v17289 : (bool -> US7) = method21()
                    let v17290 : (exn -> US7) = method22()
                    let v17291 : US7 = match v17269 with Choice1Of2 x -> v17289 x | Choice2Of2 x -> v17290 x
                    let _v17270 = v17291 
                    #endif
                    let v17292 : US7 = _v17270 
                    return v17292 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v17297 : Async<US7> = _v17268 
            let _v17258 = v17297 
            #endif
#if FABLE_COMPILER_PYTHON
            let v17298 : unit = ()
            let _v17298 =
                async {
                    let! v17253 = v17253 
                    let v17299 : Choice<bool, exn> = v17253 
                    let v17300 : unit = ()
                    
#if FABLE_COMPILER || WASM || CONTRACT
                    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                    let v17301 : US7 = null |> unbox<US7>
                    let _v17300 = v17301 
                    #endif
#if FABLE_COMPILER_RUST && WASM
                    let v17304 : US7 = null |> unbox<US7>
                    let _v17300 = v17304 
                    #endif
#if FABLE_COMPILER_RUST && CONTRACT
                    let v17307 : US7 = null |> unbox<US7>
                    let _v17300 = v17307 
                    #endif
#if FABLE_COMPILER_TYPESCRIPT
                    let v17310 : US7 = null |> unbox<US7>
                    let _v17300 = v17310 
                    #endif
#if FABLE_COMPILER_PYTHON
                    let v17313 : US7 = null |> unbox<US7>
                    let _v17300 = v17313 
                    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                    let v17316 : (bool -> US7) = method21()
                    let v17317 : (exn -> US7) = method22()
                    let v17318 : US7 = match v17299 with Choice1Of2 x -> v17316 x | Choice2Of2 x -> v17317 x
                    let _v17300 = v17318 
                    #endif
#else
                    let v17319 : (bool -> US7) = method21()
                    let v17320 : (exn -> US7) = method22()
                    let v17321 : US7 = match v17299 with Choice1Of2 x -> v17319 x | Choice2Of2 x -> v17320 x
                    let _v17300 = v17321 
                    #endif
                    let v17322 : US7 = _v17300 
                    return v17322 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v17327 : Async<US7> = _v17298 
            let _v17258 = v17327 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v17328 : unit = ()
            let _v17328 =
                async {
                    let! v17253 = v17253 
                    let v17329 : Choice<bool, exn> = v17253 
                    let v17330 : unit = ()
                    
#if FABLE_COMPILER || WASM || CONTRACT
                    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                    let v17331 : US7 = null |> unbox<US7>
                    let _v17330 = v17331 
                    #endif
#if FABLE_COMPILER_RUST && WASM
                    let v17334 : US7 = null |> unbox<US7>
                    let _v17330 = v17334 
                    #endif
#if FABLE_COMPILER_RUST && CONTRACT
                    let v17337 : US7 = null |> unbox<US7>
                    let _v17330 = v17337 
                    #endif
#if FABLE_COMPILER_TYPESCRIPT
                    let v17340 : US7 = null |> unbox<US7>
                    let _v17330 = v17340 
                    #endif
#if FABLE_COMPILER_PYTHON
                    let v17343 : US7 = null |> unbox<US7>
                    let _v17330 = v17343 
                    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                    let v17346 : (bool -> US7) = method21()
                    let v17347 : (exn -> US7) = method22()
                    let v17348 : US7 = match v17329 with Choice1Of2 x -> v17346 x | Choice2Of2 x -> v17347 x
                    let _v17330 = v17348 
                    #endif
#else
                    let v17349 : (bool -> US7) = method21()
                    let v17350 : (exn -> US7) = method22()
                    let v17351 : US7 = match v17329 with Choice1Of2 x -> v17349 x | Choice2Of2 x -> v17350 x
                    let _v17330 = v17351 
                    #endif
                    let v17352 : US7 = _v17330 
                    return v17352 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v17357 : Async<US7> = _v17328 
            let _v17258 = v17357 
            #endif
#else
            let v17358 : unit = ()
            let _v17358 =
                async {
                    let! v17253 = v17253 
                    let v17359 : Choice<bool, exn> = v17253 
                    let v17360 : unit = ()
                    
#if FABLE_COMPILER || WASM || CONTRACT
                    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                    let v17361 : US7 = null |> unbox<US7>
                    let _v17360 = v17361 
                    #endif
#if FABLE_COMPILER_RUST && WASM
                    let v17364 : US7 = null |> unbox<US7>
                    let _v17360 = v17364 
                    #endif
#if FABLE_COMPILER_RUST && CONTRACT
                    let v17367 : US7 = null |> unbox<US7>
                    let _v17360 = v17367 
                    #endif
#if FABLE_COMPILER_TYPESCRIPT
                    let v17370 : US7 = null |> unbox<US7>
                    let _v17360 = v17370 
                    #endif
#if FABLE_COMPILER_PYTHON
                    let v17373 : US7 = null |> unbox<US7>
                    let _v17360 = v17373 
                    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                    let v17376 : (bool -> US7) = method21()
                    let v17377 : (exn -> US7) = method22()
                    let v17378 : US7 = match v17359 with Choice1Of2 x -> v17376 x | Choice2Of2 x -> v17377 x
                    let _v17360 = v17378 
                    #endif
#else
                    let v17379 : (bool -> US7) = method21()
                    let v17380 : (exn -> US7) = method22()
                    let v17381 : US7 = match v17359 with Choice1Of2 x -> v17379 x | Choice2Of2 x -> v17380 x
                    let _v17360 = v17381 
                    #endif
                    let v17382 : US7 = _v17360 
                    return v17382 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v17387 : Async<US7> = _v17358 
            let _v17258 = v17387 
            #endif
            let v17388 : Async<US7> = _v17258 
            let v17393 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v17394 : Async<US8> = null |> unbox<Async<US8>>
            let _v17393 = v17394 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v17397 : Async<US8> = null |> unbox<Async<US8>>
            let _v17393 = v17397 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v17400 : Async<US8> = null |> unbox<Async<US8>>
            let _v17393 = v17400 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v17403 : unit = ()
            let _v17403 =
                async {
                    let! v17388 = v17388 
                    let v17404 : US7 = v17388 
                    let v17410 : US8 =
                        match v17404 with
                        | US7_0(v17405) -> (* C1of2 *)
                            US8_0(v17405)
                        | US7_1(v17407) -> (* C2of2 *)
                            US8_1(v17407)
                    return v17410 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v17411 : Async<US8> = _v17403 
            let _v17393 = v17411 
            #endif
#if FABLE_COMPILER_PYTHON
            let v17412 : unit = ()
            let _v17412 =
                async {
                    let! v17388 = v17388 
                    let v17413 : US7 = v17388 
                    let v17419 : US8 =
                        match v17413 with
                        | US7_0(v17414) -> (* C1of2 *)
                            US8_0(v17414)
                        | US7_1(v17416) -> (* C2of2 *)
                            US8_1(v17416)
                    return v17419 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v17420 : Async<US8> = _v17412 
            let _v17393 = v17420 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v17421 : unit = ()
            let _v17421 =
                async {
                    let! v17388 = v17388 
                    let v17422 : US7 = v17388 
                    let v17428 : US8 =
                        match v17422 with
                        | US7_0(v17423) -> (* C1of2 *)
                            US8_0(v17423)
                        | US7_1(v17425) -> (* C2of2 *)
                            US8_1(v17425)
                    return v17428 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v17429 : Async<US8> = _v17421 
            let _v17393 = v17429 
            #endif
#else
            let v17430 : unit = ()
            let _v17430 =
                async {
                    let! v17388 = v17388 
                    let v17431 : US7 = v17388 
                    let v17437 : US8 =
                        match v17431 with
                        | US7_0(v17432) -> (* C1of2 *)
                            US8_0(v17432)
                        | US7_1(v17434) -> (* C2of2 *)
                            US8_1(v17434)
                    return v17437 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v17438 : Async<US8> = _v17430 
            let _v17393 = v17438 
            #endif
            let v17439 : Async<US8> = _v17393 
            let v17444 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v17445 : Async<US6> = null |> unbox<Async<US6>>
            let _v17444 = v17445 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v17448 : Async<US6> = null |> unbox<Async<US6>>
            let _v17444 = v17448 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v17451 : Async<US6> = null |> unbox<Async<US6>>
            let _v17444 = v17451 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v17454 : unit = ()
            let _v17454 =
                async {
                    let! v17439 = v17439 
                    let v17455 : US8 = v17439 
                    let v17579 : US6 =
                        match v17455 with
                        | US8_1(v17458) -> (* Error *)
                            let v17459 : string = $"%A{v17458}"
                            let v17462 : string = "System.TimeoutException"
                            let v17463 : bool = v17459.Contains v17462 
                            if v17463 then
                                let v17466 : unit = ()
                                let v17467 : (unit -> unit) = closure16(v0)
                                let v17468 : unit = (fun () -> v17467 (); v17466) ()
                                US6_1
                            else
                                let v17509 : unit = ()
                                let v17510 : (unit -> unit) = closure17(v0, v17458)
                                let v17511 : unit = (fun () -> v17510 (); v17509) ()
                                US6_1
                        | US8_0(v17456) -> (* Ok *)
                            US6_0(v17456)
                    return v17579 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v17580 : Async<US6> = _v17454 
            let _v17444 = v17580 
            #endif
#if FABLE_COMPILER_PYTHON
            let v17581 : unit = ()
            let _v17581 =
                async {
                    let! v17439 = v17439 
                    let v17582 : US8 = v17439 
                    let v17706 : US6 =
                        match v17582 with
                        | US8_1(v17585) -> (* Error *)
                            let v17586 : string = $"%A{v17585}"
                            let v17589 : string = "System.TimeoutException"
                            let v17590 : bool = v17586.Contains v17589 
                            if v17590 then
                                let v17593 : unit = ()
                                let v17594 : (unit -> unit) = closure16(v0)
                                let v17595 : unit = (fun () -> v17594 (); v17593) ()
                                US6_1
                            else
                                let v17636 : unit = ()
                                let v17637 : (unit -> unit) = closure17(v0, v17585)
                                let v17638 : unit = (fun () -> v17637 (); v17636) ()
                                US6_1
                        | US8_0(v17583) -> (* Ok *)
                            US6_0(v17583)
                    return v17706 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v17707 : Async<US6> = _v17581 
            let _v17444 = v17707 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v17708 : unit = ()
            let _v17708 =
                async {
                    let! v17439 = v17439 
                    let v17709 : US8 = v17439 
                    let v17833 : US6 =
                        match v17709 with
                        | US8_1(v17712) -> (* Error *)
                            let v17713 : string = $"%A{v17712}"
                            let v17716 : string = "System.TimeoutException"
                            let v17717 : bool = v17713.Contains v17716 
                            if v17717 then
                                let v17720 : unit = ()
                                let v17721 : (unit -> unit) = closure16(v0)
                                let v17722 : unit = (fun () -> v17721 (); v17720) ()
                                US6_1
                            else
                                let v17763 : unit = ()
                                let v17764 : (unit -> unit) = closure17(v0, v17712)
                                let v17765 : unit = (fun () -> v17764 (); v17763) ()
                                US6_1
                        | US8_0(v17710) -> (* Ok *)
                            US6_0(v17710)
                    return v17833 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v17834 : Async<US6> = _v17708 
            let _v17444 = v17834 
            #endif
#else
            let v17835 : unit = ()
            let _v17835 =
                async {
                    let! v17439 = v17439 
                    let v17836 : US8 = v17439 
                    let v17960 : US6 =
                        match v17836 with
                        | US8_1(v17839) -> (* Error *)
                            let v17840 : string = $"%A{v17839}"
                            let v17843 : string = "System.TimeoutException"
                            let v17844 : bool = v17840.Contains v17843 
                            if v17844 then
                                let v17847 : unit = ()
                                let v17848 : (unit -> unit) = closure16(v0)
                                let v17849 : unit = (fun () -> v17848 (); v17847) ()
                                US6_1
                            else
                                let v17890 : unit = ()
                                let v17891 : (unit -> unit) = closure17(v0, v17839)
                                let v17892 : unit = (fun () -> v17891 (); v17890) ()
                                US6_1
                        | US8_0(v17837) -> (* Ok *)
                            US6_0(v17837)
                    return v17960 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v17961 : Async<US6> = _v17835 
            let _v17444 = v17961 
            #endif
            let v17962 : Async<US6> = _v17444 
            return! v17962 
            (*
            ()
        *)
        }
        (*
        ()
    *)
    let v17967 : Async<US6> = _v17223 
    let _v14978 = v17967 
    #endif
    let v17968 : Async<US6> = _v14978 
    let _v2 = v17968 
    #endif
#else
    let v17973 : unit = ()
    
#if FABLE_COMPILER || WASM || CONTRACT
    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
    let v17974 : Async<US6> = null |> unbox<Async<US6>>
    let _v17973 = v17974 
    #endif
#if FABLE_COMPILER_RUST && WASM
    let v17977 : Async<US6> = null |> unbox<Async<US6>>
    let _v17973 = v17977 
    #endif
#if FABLE_COMPILER_RUST && CONTRACT
    let v17980 : Async<US6> = null |> unbox<Async<US6>>
    let _v17973 = v17980 
    #endif
#if FABLE_COMPILER_TYPESCRIPT
    let v17983 : unit = ()
    let _v17983 =
        async {
            let v17984 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v17985 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v17984 = v17985 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v17986 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v17984 = v17986 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v17987 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v17984 = v17987 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v17988 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v17984 = v17988 
            #endif
#if FABLE_COMPILER_PYTHON
            let v17989 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v17984 = v17989 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v17990 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v17984 = v17990 
            #endif
#else
            let v17991 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v17984 = v17991 
            #endif
            let v17992 : Async<Async<bool>> = _v17984 
            let! v17992 = v17992 
            let v17997 : Async<bool> = v17992 
            let v17998 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v17999 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v18000 : Async<Choice<bool, exn>> = v17999 v17997
            let _v17998 = v18000 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v18001 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v18002 : Async<Choice<bool, exn>> = v18001 v17997
            let _v17998 = v18002 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v18003 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v18004 : Async<Choice<bool, exn>> = v18003 v17997
            let _v17998 = v18004 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v18005 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v18006 : Async<Choice<bool, exn>> = v18005 v17997
            let _v17998 = v18006 
            #endif
#if FABLE_COMPILER_PYTHON
            let v18007 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v18008 : Async<Choice<bool, exn>> = v18007 v17997
            let _v17998 = v18008 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v18009 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v18010 : Async<Choice<bool, exn>> = v18009 v17997
            let _v17998 = v18010 
            #endif
#else
            let v18011 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v18012 : Async<Choice<bool, exn>> = v18011 v17997
            let _v17998 = v18012 
            #endif
            let v18013 : Async<Choice<bool, exn>> = _v17998 
            let v18018 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v18019 : Async<US7> = null |> unbox<Async<US7>>
            let _v18018 = v18019 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v18022 : Async<US7> = null |> unbox<Async<US7>>
            let _v18018 = v18022 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v18025 : Async<US7> = null |> unbox<Async<US7>>
            let _v18018 = v18025 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v18028 : unit = ()
            let _v18028 =
                async {
                    let! v18013 = v18013 
                    let v18029 : Choice<bool, exn> = v18013 
                    let v18030 : unit = ()
                    
#if FABLE_COMPILER || WASM || CONTRACT
                    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                    let v18031 : US7 = null |> unbox<US7>
                    let _v18030 = v18031 
                    #endif
#if FABLE_COMPILER_RUST && WASM
                    let v18034 : US7 = null |> unbox<US7>
                    let _v18030 = v18034 
                    #endif
#if FABLE_COMPILER_RUST && CONTRACT
                    let v18037 : US7 = null |> unbox<US7>
                    let _v18030 = v18037 
                    #endif
#if FABLE_COMPILER_TYPESCRIPT
                    let v18040 : US7 = null |> unbox<US7>
                    let _v18030 = v18040 
                    #endif
#if FABLE_COMPILER_PYTHON
                    let v18043 : US7 = null |> unbox<US7>
                    let _v18030 = v18043 
                    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                    let v18046 : (bool -> US7) = method21()
                    let v18047 : (exn -> US7) = method22()
                    let v18048 : US7 = match v18029 with Choice1Of2 x -> v18046 x | Choice2Of2 x -> v18047 x
                    let _v18030 = v18048 
                    #endif
#else
                    let v18049 : (bool -> US7) = method21()
                    let v18050 : (exn -> US7) = method22()
                    let v18051 : US7 = match v18029 with Choice1Of2 x -> v18049 x | Choice2Of2 x -> v18050 x
                    let _v18030 = v18051 
                    #endif
                    let v18052 : US7 = _v18030 
                    return v18052 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v18057 : Async<US7> = _v18028 
            let _v18018 = v18057 
            #endif
#if FABLE_COMPILER_PYTHON
            let v18058 : unit = ()
            let _v18058 =
                async {
                    let! v18013 = v18013 
                    let v18059 : Choice<bool, exn> = v18013 
                    let v18060 : unit = ()
                    
#if FABLE_COMPILER || WASM || CONTRACT
                    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                    let v18061 : US7 = null |> unbox<US7>
                    let _v18060 = v18061 
                    #endif
#if FABLE_COMPILER_RUST && WASM
                    let v18064 : US7 = null |> unbox<US7>
                    let _v18060 = v18064 
                    #endif
#if FABLE_COMPILER_RUST && CONTRACT
                    let v18067 : US7 = null |> unbox<US7>
                    let _v18060 = v18067 
                    #endif
#if FABLE_COMPILER_TYPESCRIPT
                    let v18070 : US7 = null |> unbox<US7>
                    let _v18060 = v18070 
                    #endif
#if FABLE_COMPILER_PYTHON
                    let v18073 : US7 = null |> unbox<US7>
                    let _v18060 = v18073 
                    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                    let v18076 : (bool -> US7) = method21()
                    let v18077 : (exn -> US7) = method22()
                    let v18078 : US7 = match v18059 with Choice1Of2 x -> v18076 x | Choice2Of2 x -> v18077 x
                    let _v18060 = v18078 
                    #endif
#else
                    let v18079 : (bool -> US7) = method21()
                    let v18080 : (exn -> US7) = method22()
                    let v18081 : US7 = match v18059 with Choice1Of2 x -> v18079 x | Choice2Of2 x -> v18080 x
                    let _v18060 = v18081 
                    #endif
                    let v18082 : US7 = _v18060 
                    return v18082 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v18087 : Async<US7> = _v18058 
            let _v18018 = v18087 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v18088 : unit = ()
            let _v18088 =
                async {
                    let! v18013 = v18013 
                    let v18089 : Choice<bool, exn> = v18013 
                    let v18090 : unit = ()
                    
#if FABLE_COMPILER || WASM || CONTRACT
                    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                    let v18091 : US7 = null |> unbox<US7>
                    let _v18090 = v18091 
                    #endif
#if FABLE_COMPILER_RUST && WASM
                    let v18094 : US7 = null |> unbox<US7>
                    let _v18090 = v18094 
                    #endif
#if FABLE_COMPILER_RUST && CONTRACT
                    let v18097 : US7 = null |> unbox<US7>
                    let _v18090 = v18097 
                    #endif
#if FABLE_COMPILER_TYPESCRIPT
                    let v18100 : US7 = null |> unbox<US7>
                    let _v18090 = v18100 
                    #endif
#if FABLE_COMPILER_PYTHON
                    let v18103 : US7 = null |> unbox<US7>
                    let _v18090 = v18103 
                    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                    let v18106 : (bool -> US7) = method21()
                    let v18107 : (exn -> US7) = method22()
                    let v18108 : US7 = match v18089 with Choice1Of2 x -> v18106 x | Choice2Of2 x -> v18107 x
                    let _v18090 = v18108 
                    #endif
#else
                    let v18109 : (bool -> US7) = method21()
                    let v18110 : (exn -> US7) = method22()
                    let v18111 : US7 = match v18089 with Choice1Of2 x -> v18109 x | Choice2Of2 x -> v18110 x
                    let _v18090 = v18111 
                    #endif
                    let v18112 : US7 = _v18090 
                    return v18112 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v18117 : Async<US7> = _v18088 
            let _v18018 = v18117 
            #endif
#else
            let v18118 : unit = ()
            let _v18118 =
                async {
                    let! v18013 = v18013 
                    let v18119 : Choice<bool, exn> = v18013 
                    let v18120 : unit = ()
                    
#if FABLE_COMPILER || WASM || CONTRACT
                    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                    let v18121 : US7 = null |> unbox<US7>
                    let _v18120 = v18121 
                    #endif
#if FABLE_COMPILER_RUST && WASM
                    let v18124 : US7 = null |> unbox<US7>
                    let _v18120 = v18124 
                    #endif
#if FABLE_COMPILER_RUST && CONTRACT
                    let v18127 : US7 = null |> unbox<US7>
                    let _v18120 = v18127 
                    #endif
#if FABLE_COMPILER_TYPESCRIPT
                    let v18130 : US7 = null |> unbox<US7>
                    let _v18120 = v18130 
                    #endif
#if FABLE_COMPILER_PYTHON
                    let v18133 : US7 = null |> unbox<US7>
                    let _v18120 = v18133 
                    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                    let v18136 : (bool -> US7) = method21()
                    let v18137 : (exn -> US7) = method22()
                    let v18138 : US7 = match v18119 with Choice1Of2 x -> v18136 x | Choice2Of2 x -> v18137 x
                    let _v18120 = v18138 
                    #endif
#else
                    let v18139 : (bool -> US7) = method21()
                    let v18140 : (exn -> US7) = method22()
                    let v18141 : US7 = match v18119 with Choice1Of2 x -> v18139 x | Choice2Of2 x -> v18140 x
                    let _v18120 = v18141 
                    #endif
                    let v18142 : US7 = _v18120 
                    return v18142 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v18147 : Async<US7> = _v18118 
            let _v18018 = v18147 
            #endif
            let v18148 : Async<US7> = _v18018 
            let v18153 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v18154 : Async<US8> = null |> unbox<Async<US8>>
            let _v18153 = v18154 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v18157 : Async<US8> = null |> unbox<Async<US8>>
            let _v18153 = v18157 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v18160 : Async<US8> = null |> unbox<Async<US8>>
            let _v18153 = v18160 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v18163 : unit = ()
            let _v18163 =
                async {
                    let! v18148 = v18148 
                    let v18164 : US7 = v18148 
                    let v18170 : US8 =
                        match v18164 with
                        | US7_0(v18165) -> (* C1of2 *)
                            US8_0(v18165)
                        | US7_1(v18167) -> (* C2of2 *)
                            US8_1(v18167)
                    return v18170 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v18171 : Async<US8> = _v18163 
            let _v18153 = v18171 
            #endif
#if FABLE_COMPILER_PYTHON
            let v18172 : unit = ()
            let _v18172 =
                async {
                    let! v18148 = v18148 
                    let v18173 : US7 = v18148 
                    let v18179 : US8 =
                        match v18173 with
                        | US7_0(v18174) -> (* C1of2 *)
                            US8_0(v18174)
                        | US7_1(v18176) -> (* C2of2 *)
                            US8_1(v18176)
                    return v18179 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v18180 : Async<US8> = _v18172 
            let _v18153 = v18180 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v18181 : unit = ()
            let _v18181 =
                async {
                    let! v18148 = v18148 
                    let v18182 : US7 = v18148 
                    let v18188 : US8 =
                        match v18182 with
                        | US7_0(v18183) -> (* C1of2 *)
                            US8_0(v18183)
                        | US7_1(v18185) -> (* C2of2 *)
                            US8_1(v18185)
                    return v18188 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v18189 : Async<US8> = _v18181 
            let _v18153 = v18189 
            #endif
#else
            let v18190 : unit = ()
            let _v18190 =
                async {
                    let! v18148 = v18148 
                    let v18191 : US7 = v18148 
                    let v18197 : US8 =
                        match v18191 with
                        | US7_0(v18192) -> (* C1of2 *)
                            US8_0(v18192)
                        | US7_1(v18194) -> (* C2of2 *)
                            US8_1(v18194)
                    return v18197 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v18198 : Async<US8> = _v18190 
            let _v18153 = v18198 
            #endif
            let v18199 : Async<US8> = _v18153 
            let v18204 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v18205 : Async<US6> = null |> unbox<Async<US6>>
            let _v18204 = v18205 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v18208 : Async<US6> = null |> unbox<Async<US6>>
            let _v18204 = v18208 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v18211 : Async<US6> = null |> unbox<Async<US6>>
            let _v18204 = v18211 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v18214 : unit = ()
            let _v18214 =
                async {
                    let! v18199 = v18199 
                    let v18215 : US8 = v18199 
                    let v18339 : US6 =
                        match v18215 with
                        | US8_1(v18218) -> (* Error *)
                            let v18219 : string = $"%A{v18218}"
                            let v18222 : string = "System.TimeoutException"
                            let v18223 : bool = v18219.Contains v18222 
                            if v18223 then
                                let v18226 : unit = ()
                                let v18227 : (unit -> unit) = closure16(v0)
                                let v18228 : unit = (fun () -> v18227 (); v18226) ()
                                US6_1
                            else
                                let v18269 : unit = ()
                                let v18270 : (unit -> unit) = closure17(v0, v18218)
                                let v18271 : unit = (fun () -> v18270 (); v18269) ()
                                US6_1
                        | US8_0(v18216) -> (* Ok *)
                            US6_0(v18216)
                    return v18339 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v18340 : Async<US6> = _v18214 
            let _v18204 = v18340 
            #endif
#if FABLE_COMPILER_PYTHON
            let v18341 : unit = ()
            let _v18341 =
                async {
                    let! v18199 = v18199 
                    let v18342 : US8 = v18199 
                    let v18466 : US6 =
                        match v18342 with
                        | US8_1(v18345) -> (* Error *)
                            let v18346 : string = $"%A{v18345}"
                            let v18349 : string = "System.TimeoutException"
                            let v18350 : bool = v18346.Contains v18349 
                            if v18350 then
                                let v18353 : unit = ()
                                let v18354 : (unit -> unit) = closure16(v0)
                                let v18355 : unit = (fun () -> v18354 (); v18353) ()
                                US6_1
                            else
                                let v18396 : unit = ()
                                let v18397 : (unit -> unit) = closure17(v0, v18345)
                                let v18398 : unit = (fun () -> v18397 (); v18396) ()
                                US6_1
                        | US8_0(v18343) -> (* Ok *)
                            US6_0(v18343)
                    return v18466 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v18467 : Async<US6> = _v18341 
            let _v18204 = v18467 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v18468 : unit = ()
            let _v18468 =
                async {
                    let! v18199 = v18199 
                    let v18469 : US8 = v18199 
                    let v18593 : US6 =
                        match v18469 with
                        | US8_1(v18472) -> (* Error *)
                            let v18473 : string = $"%A{v18472}"
                            let v18476 : string = "System.TimeoutException"
                            let v18477 : bool = v18473.Contains v18476 
                            if v18477 then
                                let v18480 : unit = ()
                                let v18481 : (unit -> unit) = closure16(v0)
                                let v18482 : unit = (fun () -> v18481 (); v18480) ()
                                US6_1
                            else
                                let v18523 : unit = ()
                                let v18524 : (unit -> unit) = closure17(v0, v18472)
                                let v18525 : unit = (fun () -> v18524 (); v18523) ()
                                US6_1
                        | US8_0(v18470) -> (* Ok *)
                            US6_0(v18470)
                    return v18593 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v18594 : Async<US6> = _v18468 
            let _v18204 = v18594 
            #endif
#else
            let v18595 : unit = ()
            let _v18595 =
                async {
                    let! v18199 = v18199 
                    let v18596 : US8 = v18199 
                    let v18720 : US6 =
                        match v18596 with
                        | US8_1(v18599) -> (* Error *)
                            let v18600 : string = $"%A{v18599}"
                            let v18603 : string = "System.TimeoutException"
                            let v18604 : bool = v18600.Contains v18603 
                            if v18604 then
                                let v18607 : unit = ()
                                let v18608 : (unit -> unit) = closure16(v0)
                                let v18609 : unit = (fun () -> v18608 (); v18607) ()
                                US6_1
                            else
                                let v18650 : unit = ()
                                let v18651 : (unit -> unit) = closure17(v0, v18599)
                                let v18652 : unit = (fun () -> v18651 (); v18650) ()
                                US6_1
                        | US8_0(v18597) -> (* Ok *)
                            US6_0(v18597)
                    return v18720 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v18721 : Async<US6> = _v18595 
            let _v18204 = v18721 
            #endif
            let v18722 : Async<US6> = _v18204 
            return! v18722 
            (*
            ()
        *)
        }
        (*
        ()
    *)
    let v18727 : Async<US6> = _v17983 
    let _v17973 = v18727 
    #endif
#if FABLE_COMPILER_PYTHON
    let v18728 : unit = ()
    let _v18728 =
        async {
            let v18729 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v18730 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v18729 = v18730 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v18731 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v18729 = v18731 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v18732 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v18729 = v18732 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v18733 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v18729 = v18733 
            #endif
#if FABLE_COMPILER_PYTHON
            let v18734 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v18729 = v18734 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v18735 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v18729 = v18735 
            #endif
#else
            let v18736 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v18729 = v18736 
            #endif
            let v18737 : Async<Async<bool>> = _v18729 
            let! v18737 = v18737 
            let v18742 : Async<bool> = v18737 
            let v18743 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v18744 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v18745 : Async<Choice<bool, exn>> = v18744 v18742
            let _v18743 = v18745 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v18746 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v18747 : Async<Choice<bool, exn>> = v18746 v18742
            let _v18743 = v18747 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v18748 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v18749 : Async<Choice<bool, exn>> = v18748 v18742
            let _v18743 = v18749 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v18750 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v18751 : Async<Choice<bool, exn>> = v18750 v18742
            let _v18743 = v18751 
            #endif
#if FABLE_COMPILER_PYTHON
            let v18752 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v18753 : Async<Choice<bool, exn>> = v18752 v18742
            let _v18743 = v18753 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v18754 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v18755 : Async<Choice<bool, exn>> = v18754 v18742
            let _v18743 = v18755 
            #endif
#else
            let v18756 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v18757 : Async<Choice<bool, exn>> = v18756 v18742
            let _v18743 = v18757 
            #endif
            let v18758 : Async<Choice<bool, exn>> = _v18743 
            let v18763 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v18764 : Async<US7> = null |> unbox<Async<US7>>
            let _v18763 = v18764 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v18767 : Async<US7> = null |> unbox<Async<US7>>
            let _v18763 = v18767 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v18770 : Async<US7> = null |> unbox<Async<US7>>
            let _v18763 = v18770 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v18773 : unit = ()
            let _v18773 =
                async {
                    let! v18758 = v18758 
                    let v18774 : Choice<bool, exn> = v18758 
                    let v18775 : unit = ()
                    
#if FABLE_COMPILER || WASM || CONTRACT
                    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                    let v18776 : US7 = null |> unbox<US7>
                    let _v18775 = v18776 
                    #endif
#if FABLE_COMPILER_RUST && WASM
                    let v18779 : US7 = null |> unbox<US7>
                    let _v18775 = v18779 
                    #endif
#if FABLE_COMPILER_RUST && CONTRACT
                    let v18782 : US7 = null |> unbox<US7>
                    let _v18775 = v18782 
                    #endif
#if FABLE_COMPILER_TYPESCRIPT
                    let v18785 : US7 = null |> unbox<US7>
                    let _v18775 = v18785 
                    #endif
#if FABLE_COMPILER_PYTHON
                    let v18788 : US7 = null |> unbox<US7>
                    let _v18775 = v18788 
                    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                    let v18791 : (bool -> US7) = method21()
                    let v18792 : (exn -> US7) = method22()
                    let v18793 : US7 = match v18774 with Choice1Of2 x -> v18791 x | Choice2Of2 x -> v18792 x
                    let _v18775 = v18793 
                    #endif
#else
                    let v18794 : (bool -> US7) = method21()
                    let v18795 : (exn -> US7) = method22()
                    let v18796 : US7 = match v18774 with Choice1Of2 x -> v18794 x | Choice2Of2 x -> v18795 x
                    let _v18775 = v18796 
                    #endif
                    let v18797 : US7 = _v18775 
                    return v18797 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v18802 : Async<US7> = _v18773 
            let _v18763 = v18802 
            #endif
#if FABLE_COMPILER_PYTHON
            let v18803 : unit = ()
            let _v18803 =
                async {
                    let! v18758 = v18758 
                    let v18804 : Choice<bool, exn> = v18758 
                    let v18805 : unit = ()
                    
#if FABLE_COMPILER || WASM || CONTRACT
                    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                    let v18806 : US7 = null |> unbox<US7>
                    let _v18805 = v18806 
                    #endif
#if FABLE_COMPILER_RUST && WASM
                    let v18809 : US7 = null |> unbox<US7>
                    let _v18805 = v18809 
                    #endif
#if FABLE_COMPILER_RUST && CONTRACT
                    let v18812 : US7 = null |> unbox<US7>
                    let _v18805 = v18812 
                    #endif
#if FABLE_COMPILER_TYPESCRIPT
                    let v18815 : US7 = null |> unbox<US7>
                    let _v18805 = v18815 
                    #endif
#if FABLE_COMPILER_PYTHON
                    let v18818 : US7 = null |> unbox<US7>
                    let _v18805 = v18818 
                    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                    let v18821 : (bool -> US7) = method21()
                    let v18822 : (exn -> US7) = method22()
                    let v18823 : US7 = match v18804 with Choice1Of2 x -> v18821 x | Choice2Of2 x -> v18822 x
                    let _v18805 = v18823 
                    #endif
#else
                    let v18824 : (bool -> US7) = method21()
                    let v18825 : (exn -> US7) = method22()
                    let v18826 : US7 = match v18804 with Choice1Of2 x -> v18824 x | Choice2Of2 x -> v18825 x
                    let _v18805 = v18826 
                    #endif
                    let v18827 : US7 = _v18805 
                    return v18827 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v18832 : Async<US7> = _v18803 
            let _v18763 = v18832 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v18833 : unit = ()
            let _v18833 =
                async {
                    let! v18758 = v18758 
                    let v18834 : Choice<bool, exn> = v18758 
                    let v18835 : unit = ()
                    
#if FABLE_COMPILER || WASM || CONTRACT
                    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                    let v18836 : US7 = null |> unbox<US7>
                    let _v18835 = v18836 
                    #endif
#if FABLE_COMPILER_RUST && WASM
                    let v18839 : US7 = null |> unbox<US7>
                    let _v18835 = v18839 
                    #endif
#if FABLE_COMPILER_RUST && CONTRACT
                    let v18842 : US7 = null |> unbox<US7>
                    let _v18835 = v18842 
                    #endif
#if FABLE_COMPILER_TYPESCRIPT
                    let v18845 : US7 = null |> unbox<US7>
                    let _v18835 = v18845 
                    #endif
#if FABLE_COMPILER_PYTHON
                    let v18848 : US7 = null |> unbox<US7>
                    let _v18835 = v18848 
                    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                    let v18851 : (bool -> US7) = method21()
                    let v18852 : (exn -> US7) = method22()
                    let v18853 : US7 = match v18834 with Choice1Of2 x -> v18851 x | Choice2Of2 x -> v18852 x
                    let _v18835 = v18853 
                    #endif
#else
                    let v18854 : (bool -> US7) = method21()
                    let v18855 : (exn -> US7) = method22()
                    let v18856 : US7 = match v18834 with Choice1Of2 x -> v18854 x | Choice2Of2 x -> v18855 x
                    let _v18835 = v18856 
                    #endif
                    let v18857 : US7 = _v18835 
                    return v18857 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v18862 : Async<US7> = _v18833 
            let _v18763 = v18862 
            #endif
#else
            let v18863 : unit = ()
            let _v18863 =
                async {
                    let! v18758 = v18758 
                    let v18864 : Choice<bool, exn> = v18758 
                    let v18865 : unit = ()
                    
#if FABLE_COMPILER || WASM || CONTRACT
                    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                    let v18866 : US7 = null |> unbox<US7>
                    let _v18865 = v18866 
                    #endif
#if FABLE_COMPILER_RUST && WASM
                    let v18869 : US7 = null |> unbox<US7>
                    let _v18865 = v18869 
                    #endif
#if FABLE_COMPILER_RUST && CONTRACT
                    let v18872 : US7 = null |> unbox<US7>
                    let _v18865 = v18872 
                    #endif
#if FABLE_COMPILER_TYPESCRIPT
                    let v18875 : US7 = null |> unbox<US7>
                    let _v18865 = v18875 
                    #endif
#if FABLE_COMPILER_PYTHON
                    let v18878 : US7 = null |> unbox<US7>
                    let _v18865 = v18878 
                    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                    let v18881 : (bool -> US7) = method21()
                    let v18882 : (exn -> US7) = method22()
                    let v18883 : US7 = match v18864 with Choice1Of2 x -> v18881 x | Choice2Of2 x -> v18882 x
                    let _v18865 = v18883 
                    #endif
#else
                    let v18884 : (bool -> US7) = method21()
                    let v18885 : (exn -> US7) = method22()
                    let v18886 : US7 = match v18864 with Choice1Of2 x -> v18884 x | Choice2Of2 x -> v18885 x
                    let _v18865 = v18886 
                    #endif
                    let v18887 : US7 = _v18865 
                    return v18887 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v18892 : Async<US7> = _v18863 
            let _v18763 = v18892 
            #endif
            let v18893 : Async<US7> = _v18763 
            let v18898 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v18899 : Async<US8> = null |> unbox<Async<US8>>
            let _v18898 = v18899 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v18902 : Async<US8> = null |> unbox<Async<US8>>
            let _v18898 = v18902 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v18905 : Async<US8> = null |> unbox<Async<US8>>
            let _v18898 = v18905 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v18908 : unit = ()
            let _v18908 =
                async {
                    let! v18893 = v18893 
                    let v18909 : US7 = v18893 
                    let v18915 : US8 =
                        match v18909 with
                        | US7_0(v18910) -> (* C1of2 *)
                            US8_0(v18910)
                        | US7_1(v18912) -> (* C2of2 *)
                            US8_1(v18912)
                    return v18915 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v18916 : Async<US8> = _v18908 
            let _v18898 = v18916 
            #endif
#if FABLE_COMPILER_PYTHON
            let v18917 : unit = ()
            let _v18917 =
                async {
                    let! v18893 = v18893 
                    let v18918 : US7 = v18893 
                    let v18924 : US8 =
                        match v18918 with
                        | US7_0(v18919) -> (* C1of2 *)
                            US8_0(v18919)
                        | US7_1(v18921) -> (* C2of2 *)
                            US8_1(v18921)
                    return v18924 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v18925 : Async<US8> = _v18917 
            let _v18898 = v18925 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v18926 : unit = ()
            let _v18926 =
                async {
                    let! v18893 = v18893 
                    let v18927 : US7 = v18893 
                    let v18933 : US8 =
                        match v18927 with
                        | US7_0(v18928) -> (* C1of2 *)
                            US8_0(v18928)
                        | US7_1(v18930) -> (* C2of2 *)
                            US8_1(v18930)
                    return v18933 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v18934 : Async<US8> = _v18926 
            let _v18898 = v18934 
            #endif
#else
            let v18935 : unit = ()
            let _v18935 =
                async {
                    let! v18893 = v18893 
                    let v18936 : US7 = v18893 
                    let v18942 : US8 =
                        match v18936 with
                        | US7_0(v18937) -> (* C1of2 *)
                            US8_0(v18937)
                        | US7_1(v18939) -> (* C2of2 *)
                            US8_1(v18939)
                    return v18942 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v18943 : Async<US8> = _v18935 
            let _v18898 = v18943 
            #endif
            let v18944 : Async<US8> = _v18898 
            let v18949 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v18950 : Async<US6> = null |> unbox<Async<US6>>
            let _v18949 = v18950 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v18953 : Async<US6> = null |> unbox<Async<US6>>
            let _v18949 = v18953 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v18956 : Async<US6> = null |> unbox<Async<US6>>
            let _v18949 = v18956 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v18959 : unit = ()
            let _v18959 =
                async {
                    let! v18944 = v18944 
                    let v18960 : US8 = v18944 
                    let v19084 : US6 =
                        match v18960 with
                        | US8_1(v18963) -> (* Error *)
                            let v18964 : string = $"%A{v18963}"
                            let v18967 : string = "System.TimeoutException"
                            let v18968 : bool = v18964.Contains v18967 
                            if v18968 then
                                let v18971 : unit = ()
                                let v18972 : (unit -> unit) = closure16(v0)
                                let v18973 : unit = (fun () -> v18972 (); v18971) ()
                                US6_1
                            else
                                let v19014 : unit = ()
                                let v19015 : (unit -> unit) = closure17(v0, v18963)
                                let v19016 : unit = (fun () -> v19015 (); v19014) ()
                                US6_1
                        | US8_0(v18961) -> (* Ok *)
                            US6_0(v18961)
                    return v19084 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v19085 : Async<US6> = _v18959 
            let _v18949 = v19085 
            #endif
#if FABLE_COMPILER_PYTHON
            let v19086 : unit = ()
            let _v19086 =
                async {
                    let! v18944 = v18944 
                    let v19087 : US8 = v18944 
                    let v19211 : US6 =
                        match v19087 with
                        | US8_1(v19090) -> (* Error *)
                            let v19091 : string = $"%A{v19090}"
                            let v19094 : string = "System.TimeoutException"
                            let v19095 : bool = v19091.Contains v19094 
                            if v19095 then
                                let v19098 : unit = ()
                                let v19099 : (unit -> unit) = closure16(v0)
                                let v19100 : unit = (fun () -> v19099 (); v19098) ()
                                US6_1
                            else
                                let v19141 : unit = ()
                                let v19142 : (unit -> unit) = closure17(v0, v19090)
                                let v19143 : unit = (fun () -> v19142 (); v19141) ()
                                US6_1
                        | US8_0(v19088) -> (* Ok *)
                            US6_0(v19088)
                    return v19211 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v19212 : Async<US6> = _v19086 
            let _v18949 = v19212 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v19213 : unit = ()
            let _v19213 =
                async {
                    let! v18944 = v18944 
                    let v19214 : US8 = v18944 
                    let v19338 : US6 =
                        match v19214 with
                        | US8_1(v19217) -> (* Error *)
                            let v19218 : string = $"%A{v19217}"
                            let v19221 : string = "System.TimeoutException"
                            let v19222 : bool = v19218.Contains v19221 
                            if v19222 then
                                let v19225 : unit = ()
                                let v19226 : (unit -> unit) = closure16(v0)
                                let v19227 : unit = (fun () -> v19226 (); v19225) ()
                                US6_1
                            else
                                let v19268 : unit = ()
                                let v19269 : (unit -> unit) = closure17(v0, v19217)
                                let v19270 : unit = (fun () -> v19269 (); v19268) ()
                                US6_1
                        | US8_0(v19215) -> (* Ok *)
                            US6_0(v19215)
                    return v19338 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v19339 : Async<US6> = _v19213 
            let _v18949 = v19339 
            #endif
#else
            let v19340 : unit = ()
            let _v19340 =
                async {
                    let! v18944 = v18944 
                    let v19341 : US8 = v18944 
                    let v19465 : US6 =
                        match v19341 with
                        | US8_1(v19344) -> (* Error *)
                            let v19345 : string = $"%A{v19344}"
                            let v19348 : string = "System.TimeoutException"
                            let v19349 : bool = v19345.Contains v19348 
                            if v19349 then
                                let v19352 : unit = ()
                                let v19353 : (unit -> unit) = closure16(v0)
                                let v19354 : unit = (fun () -> v19353 (); v19352) ()
                                US6_1
                            else
                                let v19395 : unit = ()
                                let v19396 : (unit -> unit) = closure17(v0, v19344)
                                let v19397 : unit = (fun () -> v19396 (); v19395) ()
                                US6_1
                        | US8_0(v19342) -> (* Ok *)
                            US6_0(v19342)
                    return v19465 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v19466 : Async<US6> = _v19340 
            let _v18949 = v19466 
            #endif
            let v19467 : Async<US6> = _v18949 
            return! v19467 
            (*
            ()
        *)
        }
        (*
        ()
    *)
    let v19472 : Async<US6> = _v18728 
    let _v17973 = v19472 
    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
    let v19473 : unit = ()
    let _v19473 =
        async {
            let v19474 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v19475 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v19474 = v19475 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v19476 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v19474 = v19476 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v19477 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v19474 = v19477 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v19478 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v19474 = v19478 
            #endif
#if FABLE_COMPILER_PYTHON
            let v19479 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v19474 = v19479 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v19480 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v19474 = v19480 
            #endif
#else
            let v19481 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v19474 = v19481 
            #endif
            let v19482 : Async<Async<bool>> = _v19474 
            let! v19482 = v19482 
            let v19487 : Async<bool> = v19482 
            let v19488 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v19489 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v19490 : Async<Choice<bool, exn>> = v19489 v19487
            let _v19488 = v19490 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v19491 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v19492 : Async<Choice<bool, exn>> = v19491 v19487
            let _v19488 = v19492 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v19493 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v19494 : Async<Choice<bool, exn>> = v19493 v19487
            let _v19488 = v19494 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v19495 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v19496 : Async<Choice<bool, exn>> = v19495 v19487
            let _v19488 = v19496 
            #endif
#if FABLE_COMPILER_PYTHON
            let v19497 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v19498 : Async<Choice<bool, exn>> = v19497 v19487
            let _v19488 = v19498 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v19499 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v19500 : Async<Choice<bool, exn>> = v19499 v19487
            let _v19488 = v19500 
            #endif
#else
            let v19501 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v19502 : Async<Choice<bool, exn>> = v19501 v19487
            let _v19488 = v19502 
            #endif
            let v19503 : Async<Choice<bool, exn>> = _v19488 
            let v19508 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v19509 : Async<US7> = null |> unbox<Async<US7>>
            let _v19508 = v19509 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v19512 : Async<US7> = null |> unbox<Async<US7>>
            let _v19508 = v19512 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v19515 : Async<US7> = null |> unbox<Async<US7>>
            let _v19508 = v19515 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v19518 : unit = ()
            let _v19518 =
                async {
                    let! v19503 = v19503 
                    let v19519 : Choice<bool, exn> = v19503 
                    let v19520 : unit = ()
                    
#if FABLE_COMPILER || WASM || CONTRACT
                    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                    let v19521 : US7 = null |> unbox<US7>
                    let _v19520 = v19521 
                    #endif
#if FABLE_COMPILER_RUST && WASM
                    let v19524 : US7 = null |> unbox<US7>
                    let _v19520 = v19524 
                    #endif
#if FABLE_COMPILER_RUST && CONTRACT
                    let v19527 : US7 = null |> unbox<US7>
                    let _v19520 = v19527 
                    #endif
#if FABLE_COMPILER_TYPESCRIPT
                    let v19530 : US7 = null |> unbox<US7>
                    let _v19520 = v19530 
                    #endif
#if FABLE_COMPILER_PYTHON
                    let v19533 : US7 = null |> unbox<US7>
                    let _v19520 = v19533 
                    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                    let v19536 : (bool -> US7) = method21()
                    let v19537 : (exn -> US7) = method22()
                    let v19538 : US7 = match v19519 with Choice1Of2 x -> v19536 x | Choice2Of2 x -> v19537 x
                    let _v19520 = v19538 
                    #endif
#else
                    let v19539 : (bool -> US7) = method21()
                    let v19540 : (exn -> US7) = method22()
                    let v19541 : US7 = match v19519 with Choice1Of2 x -> v19539 x | Choice2Of2 x -> v19540 x
                    let _v19520 = v19541 
                    #endif
                    let v19542 : US7 = _v19520 
                    return v19542 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v19547 : Async<US7> = _v19518 
            let _v19508 = v19547 
            #endif
#if FABLE_COMPILER_PYTHON
            let v19548 : unit = ()
            let _v19548 =
                async {
                    let! v19503 = v19503 
                    let v19549 : Choice<bool, exn> = v19503 
                    let v19550 : unit = ()
                    
#if FABLE_COMPILER || WASM || CONTRACT
                    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                    let v19551 : US7 = null |> unbox<US7>
                    let _v19550 = v19551 
                    #endif
#if FABLE_COMPILER_RUST && WASM
                    let v19554 : US7 = null |> unbox<US7>
                    let _v19550 = v19554 
                    #endif
#if FABLE_COMPILER_RUST && CONTRACT
                    let v19557 : US7 = null |> unbox<US7>
                    let _v19550 = v19557 
                    #endif
#if FABLE_COMPILER_TYPESCRIPT
                    let v19560 : US7 = null |> unbox<US7>
                    let _v19550 = v19560 
                    #endif
#if FABLE_COMPILER_PYTHON
                    let v19563 : US7 = null |> unbox<US7>
                    let _v19550 = v19563 
                    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                    let v19566 : (bool -> US7) = method21()
                    let v19567 : (exn -> US7) = method22()
                    let v19568 : US7 = match v19549 with Choice1Of2 x -> v19566 x | Choice2Of2 x -> v19567 x
                    let _v19550 = v19568 
                    #endif
#else
                    let v19569 : (bool -> US7) = method21()
                    let v19570 : (exn -> US7) = method22()
                    let v19571 : US7 = match v19549 with Choice1Of2 x -> v19569 x | Choice2Of2 x -> v19570 x
                    let _v19550 = v19571 
                    #endif
                    let v19572 : US7 = _v19550 
                    return v19572 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v19577 : Async<US7> = _v19548 
            let _v19508 = v19577 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v19578 : unit = ()
            let _v19578 =
                async {
                    let! v19503 = v19503 
                    let v19579 : Choice<bool, exn> = v19503 
                    let v19580 : unit = ()
                    
#if FABLE_COMPILER || WASM || CONTRACT
                    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                    let v19581 : US7 = null |> unbox<US7>
                    let _v19580 = v19581 
                    #endif
#if FABLE_COMPILER_RUST && WASM
                    let v19584 : US7 = null |> unbox<US7>
                    let _v19580 = v19584 
                    #endif
#if FABLE_COMPILER_RUST && CONTRACT
                    let v19587 : US7 = null |> unbox<US7>
                    let _v19580 = v19587 
                    #endif
#if FABLE_COMPILER_TYPESCRIPT
                    let v19590 : US7 = null |> unbox<US7>
                    let _v19580 = v19590 
                    #endif
#if FABLE_COMPILER_PYTHON
                    let v19593 : US7 = null |> unbox<US7>
                    let _v19580 = v19593 
                    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                    let v19596 : (bool -> US7) = method21()
                    let v19597 : (exn -> US7) = method22()
                    let v19598 : US7 = match v19579 with Choice1Of2 x -> v19596 x | Choice2Of2 x -> v19597 x
                    let _v19580 = v19598 
                    #endif
#else
                    let v19599 : (bool -> US7) = method21()
                    let v19600 : (exn -> US7) = method22()
                    let v19601 : US7 = match v19579 with Choice1Of2 x -> v19599 x | Choice2Of2 x -> v19600 x
                    let _v19580 = v19601 
                    #endif
                    let v19602 : US7 = _v19580 
                    return v19602 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v19607 : Async<US7> = _v19578 
            let _v19508 = v19607 
            #endif
#else
            let v19608 : unit = ()
            let _v19608 =
                async {
                    let! v19503 = v19503 
                    let v19609 : Choice<bool, exn> = v19503 
                    let v19610 : unit = ()
                    
#if FABLE_COMPILER || WASM || CONTRACT
                    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                    let v19611 : US7 = null |> unbox<US7>
                    let _v19610 = v19611 
                    #endif
#if FABLE_COMPILER_RUST && WASM
                    let v19614 : US7 = null |> unbox<US7>
                    let _v19610 = v19614 
                    #endif
#if FABLE_COMPILER_RUST && CONTRACT
                    let v19617 : US7 = null |> unbox<US7>
                    let _v19610 = v19617 
                    #endif
#if FABLE_COMPILER_TYPESCRIPT
                    let v19620 : US7 = null |> unbox<US7>
                    let _v19610 = v19620 
                    #endif
#if FABLE_COMPILER_PYTHON
                    let v19623 : US7 = null |> unbox<US7>
                    let _v19610 = v19623 
                    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                    let v19626 : (bool -> US7) = method21()
                    let v19627 : (exn -> US7) = method22()
                    let v19628 : US7 = match v19609 with Choice1Of2 x -> v19626 x | Choice2Of2 x -> v19627 x
                    let _v19610 = v19628 
                    #endif
#else
                    let v19629 : (bool -> US7) = method21()
                    let v19630 : (exn -> US7) = method22()
                    let v19631 : US7 = match v19609 with Choice1Of2 x -> v19629 x | Choice2Of2 x -> v19630 x
                    let _v19610 = v19631 
                    #endif
                    let v19632 : US7 = _v19610 
                    return v19632 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v19637 : Async<US7> = _v19608 
            let _v19508 = v19637 
            #endif
            let v19638 : Async<US7> = _v19508 
            let v19643 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v19644 : Async<US8> = null |> unbox<Async<US8>>
            let _v19643 = v19644 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v19647 : Async<US8> = null |> unbox<Async<US8>>
            let _v19643 = v19647 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v19650 : Async<US8> = null |> unbox<Async<US8>>
            let _v19643 = v19650 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v19653 : unit = ()
            let _v19653 =
                async {
                    let! v19638 = v19638 
                    let v19654 : US7 = v19638 
                    let v19660 : US8 =
                        match v19654 with
                        | US7_0(v19655) -> (* C1of2 *)
                            US8_0(v19655)
                        | US7_1(v19657) -> (* C2of2 *)
                            US8_1(v19657)
                    return v19660 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v19661 : Async<US8> = _v19653 
            let _v19643 = v19661 
            #endif
#if FABLE_COMPILER_PYTHON
            let v19662 : unit = ()
            let _v19662 =
                async {
                    let! v19638 = v19638 
                    let v19663 : US7 = v19638 
                    let v19669 : US8 =
                        match v19663 with
                        | US7_0(v19664) -> (* C1of2 *)
                            US8_0(v19664)
                        | US7_1(v19666) -> (* C2of2 *)
                            US8_1(v19666)
                    return v19669 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v19670 : Async<US8> = _v19662 
            let _v19643 = v19670 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v19671 : unit = ()
            let _v19671 =
                async {
                    let! v19638 = v19638 
                    let v19672 : US7 = v19638 
                    let v19678 : US8 =
                        match v19672 with
                        | US7_0(v19673) -> (* C1of2 *)
                            US8_0(v19673)
                        | US7_1(v19675) -> (* C2of2 *)
                            US8_1(v19675)
                    return v19678 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v19679 : Async<US8> = _v19671 
            let _v19643 = v19679 
            #endif
#else
            let v19680 : unit = ()
            let _v19680 =
                async {
                    let! v19638 = v19638 
                    let v19681 : US7 = v19638 
                    let v19687 : US8 =
                        match v19681 with
                        | US7_0(v19682) -> (* C1of2 *)
                            US8_0(v19682)
                        | US7_1(v19684) -> (* C2of2 *)
                            US8_1(v19684)
                    return v19687 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v19688 : Async<US8> = _v19680 
            let _v19643 = v19688 
            #endif
            let v19689 : Async<US8> = _v19643 
            let v19694 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v19695 : Async<US6> = null |> unbox<Async<US6>>
            let _v19694 = v19695 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v19698 : Async<US6> = null |> unbox<Async<US6>>
            let _v19694 = v19698 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v19701 : Async<US6> = null |> unbox<Async<US6>>
            let _v19694 = v19701 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v19704 : unit = ()
            let _v19704 =
                async {
                    let! v19689 = v19689 
                    let v19705 : US8 = v19689 
                    let v19829 : US6 =
                        match v19705 with
                        | US8_1(v19708) -> (* Error *)
                            let v19709 : string = $"%A{v19708}"
                            let v19712 : string = "System.TimeoutException"
                            let v19713 : bool = v19709.Contains v19712 
                            if v19713 then
                                let v19716 : unit = ()
                                let v19717 : (unit -> unit) = closure16(v0)
                                let v19718 : unit = (fun () -> v19717 (); v19716) ()
                                US6_1
                            else
                                let v19759 : unit = ()
                                let v19760 : (unit -> unit) = closure17(v0, v19708)
                                let v19761 : unit = (fun () -> v19760 (); v19759) ()
                                US6_1
                        | US8_0(v19706) -> (* Ok *)
                            US6_0(v19706)
                    return v19829 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v19830 : Async<US6> = _v19704 
            let _v19694 = v19830 
            #endif
#if FABLE_COMPILER_PYTHON
            let v19831 : unit = ()
            let _v19831 =
                async {
                    let! v19689 = v19689 
                    let v19832 : US8 = v19689 
                    let v19956 : US6 =
                        match v19832 with
                        | US8_1(v19835) -> (* Error *)
                            let v19836 : string = $"%A{v19835}"
                            let v19839 : string = "System.TimeoutException"
                            let v19840 : bool = v19836.Contains v19839 
                            if v19840 then
                                let v19843 : unit = ()
                                let v19844 : (unit -> unit) = closure16(v0)
                                let v19845 : unit = (fun () -> v19844 (); v19843) ()
                                US6_1
                            else
                                let v19886 : unit = ()
                                let v19887 : (unit -> unit) = closure17(v0, v19835)
                                let v19888 : unit = (fun () -> v19887 (); v19886) ()
                                US6_1
                        | US8_0(v19833) -> (* Ok *)
                            US6_0(v19833)
                    return v19956 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v19957 : Async<US6> = _v19831 
            let _v19694 = v19957 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v19958 : unit = ()
            let _v19958 =
                async {
                    let! v19689 = v19689 
                    let v19959 : US8 = v19689 
                    let v20083 : US6 =
                        match v19959 with
                        | US8_1(v19962) -> (* Error *)
                            let v19963 : string = $"%A{v19962}"
                            let v19966 : string = "System.TimeoutException"
                            let v19967 : bool = v19963.Contains v19966 
                            if v19967 then
                                let v19970 : unit = ()
                                let v19971 : (unit -> unit) = closure16(v0)
                                let v19972 : unit = (fun () -> v19971 (); v19970) ()
                                US6_1
                            else
                                let v20013 : unit = ()
                                let v20014 : (unit -> unit) = closure17(v0, v19962)
                                let v20015 : unit = (fun () -> v20014 (); v20013) ()
                                US6_1
                        | US8_0(v19960) -> (* Ok *)
                            US6_0(v19960)
                    return v20083 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v20084 : Async<US6> = _v19958 
            let _v19694 = v20084 
            #endif
#else
            let v20085 : unit = ()
            let _v20085 =
                async {
                    let! v19689 = v19689 
                    let v20086 : US8 = v19689 
                    let v20210 : US6 =
                        match v20086 with
                        | US8_1(v20089) -> (* Error *)
                            let v20090 : string = $"%A{v20089}"
                            let v20093 : string = "System.TimeoutException"
                            let v20094 : bool = v20090.Contains v20093 
                            if v20094 then
                                let v20097 : unit = ()
                                let v20098 : (unit -> unit) = closure16(v0)
                                let v20099 : unit = (fun () -> v20098 (); v20097) ()
                                US6_1
                            else
                                let v20140 : unit = ()
                                let v20141 : (unit -> unit) = closure17(v0, v20089)
                                let v20142 : unit = (fun () -> v20141 (); v20140) ()
                                US6_1
                        | US8_0(v20087) -> (* Ok *)
                            US6_0(v20087)
                    return v20210 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v20211 : Async<US6> = _v20085 
            let _v19694 = v20211 
            #endif
            let v20212 : Async<US6> = _v19694 
            return! v20212 
            (*
            ()
        *)
        }
        (*
        ()
    *)
    let v20217 : Async<US6> = _v19473 
    let _v17973 = v20217 
    #endif
#else
    let v20218 : unit = ()
    let _v20218 =
        async {
            let v20219 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v20220 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v20219 = v20220 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v20221 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v20219 = v20221 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v20222 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v20219 = v20222 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v20223 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v20219 = v20223 
            #endif
#if FABLE_COMPILER_PYTHON
            let v20224 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v20219 = v20224 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v20225 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v20219 = v20225 
            #endif
#else
            let v20226 : Async<Async<bool>> = Async.StartChild (v1, v0)
            let _v20219 = v20226 
            #endif
            let v20227 : Async<Async<bool>> = _v20219 
            let! v20227 = v20227 
            let v20232 : Async<bool> = v20227 
            let v20233 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v20234 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v20235 : Async<Choice<bool, exn>> = v20234 v20232
            let _v20233 = v20235 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v20236 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v20237 : Async<Choice<bool, exn>> = v20236 v20232
            let _v20233 = v20237 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v20238 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v20239 : Async<Choice<bool, exn>> = v20238 v20232
            let _v20233 = v20239 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v20240 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v20241 : Async<Choice<bool, exn>> = v20240 v20232
            let _v20233 = v20241 
            #endif
#if FABLE_COMPILER_PYTHON
            let v20242 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v20243 : Async<Choice<bool, exn>> = v20242 v20232
            let _v20233 = v20243 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v20244 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v20245 : Async<Choice<bool, exn>> = v20244 v20232
            let _v20233 = v20245 
            #endif
#else
            let v20246 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v20247 : Async<Choice<bool, exn>> = v20246 v20232
            let _v20233 = v20247 
            #endif
            let v20248 : Async<Choice<bool, exn>> = _v20233 
            let v20253 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v20254 : Async<US7> = null |> unbox<Async<US7>>
            let _v20253 = v20254 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v20257 : Async<US7> = null |> unbox<Async<US7>>
            let _v20253 = v20257 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v20260 : Async<US7> = null |> unbox<Async<US7>>
            let _v20253 = v20260 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v20263 : unit = ()
            let _v20263 =
                async {
                    let! v20248 = v20248 
                    let v20264 : Choice<bool, exn> = v20248 
                    let v20265 : unit = ()
                    
#if FABLE_COMPILER || WASM || CONTRACT
                    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                    let v20266 : US7 = null |> unbox<US7>
                    let _v20265 = v20266 
                    #endif
#if FABLE_COMPILER_RUST && WASM
                    let v20269 : US7 = null |> unbox<US7>
                    let _v20265 = v20269 
                    #endif
#if FABLE_COMPILER_RUST && CONTRACT
                    let v20272 : US7 = null |> unbox<US7>
                    let _v20265 = v20272 
                    #endif
#if FABLE_COMPILER_TYPESCRIPT
                    let v20275 : US7 = null |> unbox<US7>
                    let _v20265 = v20275 
                    #endif
#if FABLE_COMPILER_PYTHON
                    let v20278 : US7 = null |> unbox<US7>
                    let _v20265 = v20278 
                    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                    let v20281 : (bool -> US7) = method21()
                    let v20282 : (exn -> US7) = method22()
                    let v20283 : US7 = match v20264 with Choice1Of2 x -> v20281 x | Choice2Of2 x -> v20282 x
                    let _v20265 = v20283 
                    #endif
#else
                    let v20284 : (bool -> US7) = method21()
                    let v20285 : (exn -> US7) = method22()
                    let v20286 : US7 = match v20264 with Choice1Of2 x -> v20284 x | Choice2Of2 x -> v20285 x
                    let _v20265 = v20286 
                    #endif
                    let v20287 : US7 = _v20265 
                    return v20287 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v20292 : Async<US7> = _v20263 
            let _v20253 = v20292 
            #endif
#if FABLE_COMPILER_PYTHON
            let v20293 : unit = ()
            let _v20293 =
                async {
                    let! v20248 = v20248 
                    let v20294 : Choice<bool, exn> = v20248 
                    let v20295 : unit = ()
                    
#if FABLE_COMPILER || WASM || CONTRACT
                    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                    let v20296 : US7 = null |> unbox<US7>
                    let _v20295 = v20296 
                    #endif
#if FABLE_COMPILER_RUST && WASM
                    let v20299 : US7 = null |> unbox<US7>
                    let _v20295 = v20299 
                    #endif
#if FABLE_COMPILER_RUST && CONTRACT
                    let v20302 : US7 = null |> unbox<US7>
                    let _v20295 = v20302 
                    #endif
#if FABLE_COMPILER_TYPESCRIPT
                    let v20305 : US7 = null |> unbox<US7>
                    let _v20295 = v20305 
                    #endif
#if FABLE_COMPILER_PYTHON
                    let v20308 : US7 = null |> unbox<US7>
                    let _v20295 = v20308 
                    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                    let v20311 : (bool -> US7) = method21()
                    let v20312 : (exn -> US7) = method22()
                    let v20313 : US7 = match v20294 with Choice1Of2 x -> v20311 x | Choice2Of2 x -> v20312 x
                    let _v20295 = v20313 
                    #endif
#else
                    let v20314 : (bool -> US7) = method21()
                    let v20315 : (exn -> US7) = method22()
                    let v20316 : US7 = match v20294 with Choice1Of2 x -> v20314 x | Choice2Of2 x -> v20315 x
                    let _v20295 = v20316 
                    #endif
                    let v20317 : US7 = _v20295 
                    return v20317 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v20322 : Async<US7> = _v20293 
            let _v20253 = v20322 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v20323 : unit = ()
            let _v20323 =
                async {
                    let! v20248 = v20248 
                    let v20324 : Choice<bool, exn> = v20248 
                    let v20325 : unit = ()
                    
#if FABLE_COMPILER || WASM || CONTRACT
                    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                    let v20326 : US7 = null |> unbox<US7>
                    let _v20325 = v20326 
                    #endif
#if FABLE_COMPILER_RUST && WASM
                    let v20329 : US7 = null |> unbox<US7>
                    let _v20325 = v20329 
                    #endif
#if FABLE_COMPILER_RUST && CONTRACT
                    let v20332 : US7 = null |> unbox<US7>
                    let _v20325 = v20332 
                    #endif
#if FABLE_COMPILER_TYPESCRIPT
                    let v20335 : US7 = null |> unbox<US7>
                    let _v20325 = v20335 
                    #endif
#if FABLE_COMPILER_PYTHON
                    let v20338 : US7 = null |> unbox<US7>
                    let _v20325 = v20338 
                    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                    let v20341 : (bool -> US7) = method21()
                    let v20342 : (exn -> US7) = method22()
                    let v20343 : US7 = match v20324 with Choice1Of2 x -> v20341 x | Choice2Of2 x -> v20342 x
                    let _v20325 = v20343 
                    #endif
#else
                    let v20344 : (bool -> US7) = method21()
                    let v20345 : (exn -> US7) = method22()
                    let v20346 : US7 = match v20324 with Choice1Of2 x -> v20344 x | Choice2Of2 x -> v20345 x
                    let _v20325 = v20346 
                    #endif
                    let v20347 : US7 = _v20325 
                    return v20347 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v20352 : Async<US7> = _v20323 
            let _v20253 = v20352 
            #endif
#else
            let v20353 : unit = ()
            let _v20353 =
                async {
                    let! v20248 = v20248 
                    let v20354 : Choice<bool, exn> = v20248 
                    let v20355 : unit = ()
                    
#if FABLE_COMPILER || WASM || CONTRACT
                    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                    let v20356 : US7 = null |> unbox<US7>
                    let _v20355 = v20356 
                    #endif
#if FABLE_COMPILER_RUST && WASM
                    let v20359 : US7 = null |> unbox<US7>
                    let _v20355 = v20359 
                    #endif
#if FABLE_COMPILER_RUST && CONTRACT
                    let v20362 : US7 = null |> unbox<US7>
                    let _v20355 = v20362 
                    #endif
#if FABLE_COMPILER_TYPESCRIPT
                    let v20365 : US7 = null |> unbox<US7>
                    let _v20355 = v20365 
                    #endif
#if FABLE_COMPILER_PYTHON
                    let v20368 : US7 = null |> unbox<US7>
                    let _v20355 = v20368 
                    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                    let v20371 : (bool -> US7) = method21()
                    let v20372 : (exn -> US7) = method22()
                    let v20373 : US7 = match v20354 with Choice1Of2 x -> v20371 x | Choice2Of2 x -> v20372 x
                    let _v20355 = v20373 
                    #endif
#else
                    let v20374 : (bool -> US7) = method21()
                    let v20375 : (exn -> US7) = method22()
                    let v20376 : US7 = match v20354 with Choice1Of2 x -> v20374 x | Choice2Of2 x -> v20375 x
                    let _v20355 = v20376 
                    #endif
                    let v20377 : US7 = _v20355 
                    return v20377 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v20382 : Async<US7> = _v20353 
            let _v20253 = v20382 
            #endif
            let v20383 : Async<US7> = _v20253 
            let v20388 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v20389 : Async<US8> = null |> unbox<Async<US8>>
            let _v20388 = v20389 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v20392 : Async<US8> = null |> unbox<Async<US8>>
            let _v20388 = v20392 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v20395 : Async<US8> = null |> unbox<Async<US8>>
            let _v20388 = v20395 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v20398 : unit = ()
            let _v20398 =
                async {
                    let! v20383 = v20383 
                    let v20399 : US7 = v20383 
                    let v20405 : US8 =
                        match v20399 with
                        | US7_0(v20400) -> (* C1of2 *)
                            US8_0(v20400)
                        | US7_1(v20402) -> (* C2of2 *)
                            US8_1(v20402)
                    return v20405 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v20406 : Async<US8> = _v20398 
            let _v20388 = v20406 
            #endif
#if FABLE_COMPILER_PYTHON
            let v20407 : unit = ()
            let _v20407 =
                async {
                    let! v20383 = v20383 
                    let v20408 : US7 = v20383 
                    let v20414 : US8 =
                        match v20408 with
                        | US7_0(v20409) -> (* C1of2 *)
                            US8_0(v20409)
                        | US7_1(v20411) -> (* C2of2 *)
                            US8_1(v20411)
                    return v20414 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v20415 : Async<US8> = _v20407 
            let _v20388 = v20415 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v20416 : unit = ()
            let _v20416 =
                async {
                    let! v20383 = v20383 
                    let v20417 : US7 = v20383 
                    let v20423 : US8 =
                        match v20417 with
                        | US7_0(v20418) -> (* C1of2 *)
                            US8_0(v20418)
                        | US7_1(v20420) -> (* C2of2 *)
                            US8_1(v20420)
                    return v20423 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v20424 : Async<US8> = _v20416 
            let _v20388 = v20424 
            #endif
#else
            let v20425 : unit = ()
            let _v20425 =
                async {
                    let! v20383 = v20383 
                    let v20426 : US7 = v20383 
                    let v20432 : US8 =
                        match v20426 with
                        | US7_0(v20427) -> (* C1of2 *)
                            US8_0(v20427)
                        | US7_1(v20429) -> (* C2of2 *)
                            US8_1(v20429)
                    return v20432 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v20433 : Async<US8> = _v20425 
            let _v20388 = v20433 
            #endif
            let v20434 : Async<US8> = _v20388 
            let v20439 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v20440 : Async<US6> = null |> unbox<Async<US6>>
            let _v20439 = v20440 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v20443 : Async<US6> = null |> unbox<Async<US6>>
            let _v20439 = v20443 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v20446 : Async<US6> = null |> unbox<Async<US6>>
            let _v20439 = v20446 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v20449 : unit = ()
            let _v20449 =
                async {
                    let! v20434 = v20434 
                    let v20450 : US8 = v20434 
                    let v20574 : US6 =
                        match v20450 with
                        | US8_1(v20453) -> (* Error *)
                            let v20454 : string = $"%A{v20453}"
                            let v20457 : string = "System.TimeoutException"
                            let v20458 : bool = v20454.Contains v20457 
                            if v20458 then
                                let v20461 : unit = ()
                                let v20462 : (unit -> unit) = closure16(v0)
                                let v20463 : unit = (fun () -> v20462 (); v20461) ()
                                US6_1
                            else
                                let v20504 : unit = ()
                                let v20505 : (unit -> unit) = closure17(v0, v20453)
                                let v20506 : unit = (fun () -> v20505 (); v20504) ()
                                US6_1
                        | US8_0(v20451) -> (* Ok *)
                            US6_0(v20451)
                    return v20574 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v20575 : Async<US6> = _v20449 
            let _v20439 = v20575 
            #endif
#if FABLE_COMPILER_PYTHON
            let v20576 : unit = ()
            let _v20576 =
                async {
                    let! v20434 = v20434 
                    let v20577 : US8 = v20434 
                    let v20701 : US6 =
                        match v20577 with
                        | US8_1(v20580) -> (* Error *)
                            let v20581 : string = $"%A{v20580}"
                            let v20584 : string = "System.TimeoutException"
                            let v20585 : bool = v20581.Contains v20584 
                            if v20585 then
                                let v20588 : unit = ()
                                let v20589 : (unit -> unit) = closure16(v0)
                                let v20590 : unit = (fun () -> v20589 (); v20588) ()
                                US6_1
                            else
                                let v20631 : unit = ()
                                let v20632 : (unit -> unit) = closure17(v0, v20580)
                                let v20633 : unit = (fun () -> v20632 (); v20631) ()
                                US6_1
                        | US8_0(v20578) -> (* Ok *)
                            US6_0(v20578)
                    return v20701 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v20702 : Async<US6> = _v20576 
            let _v20439 = v20702 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v20703 : unit = ()
            let _v20703 =
                async {
                    let! v20434 = v20434 
                    let v20704 : US8 = v20434 
                    let v20828 : US6 =
                        match v20704 with
                        | US8_1(v20707) -> (* Error *)
                            let v20708 : string = $"%A{v20707}"
                            let v20711 : string = "System.TimeoutException"
                            let v20712 : bool = v20708.Contains v20711 
                            if v20712 then
                                let v20715 : unit = ()
                                let v20716 : (unit -> unit) = closure16(v0)
                                let v20717 : unit = (fun () -> v20716 (); v20715) ()
                                US6_1
                            else
                                let v20758 : unit = ()
                                let v20759 : (unit -> unit) = closure17(v0, v20707)
                                let v20760 : unit = (fun () -> v20759 (); v20758) ()
                                US6_1
                        | US8_0(v20705) -> (* Ok *)
                            US6_0(v20705)
                    return v20828 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v20829 : Async<US6> = _v20703 
            let _v20439 = v20829 
            #endif
#else
            let v20830 : unit = ()
            let _v20830 =
                async {
                    let! v20434 = v20434 
                    let v20831 : US8 = v20434 
                    let v20955 : US6 =
                        match v20831 with
                        | US8_1(v20834) -> (* Error *)
                            let v20835 : string = $"%A{v20834}"
                            let v20838 : string = "System.TimeoutException"
                            let v20839 : bool = v20835.Contains v20838 
                            if v20839 then
                                let v20842 : unit = ()
                                let v20843 : (unit -> unit) = closure16(v0)
                                let v20844 : unit = (fun () -> v20843 (); v20842) ()
                                US6_1
                            else
                                let v20885 : unit = ()
                                let v20886 : (unit -> unit) = closure17(v0, v20834)
                                let v20887 : unit = (fun () -> v20886 (); v20885) ()
                                US6_1
                        | US8_0(v20832) -> (* Ok *)
                            US6_0(v20832)
                    return v20955 
                    (*
                    ()
                *)
                }
                (*
                ()
            *)
            let v20956 : Async<US6> = _v20830 
            let _v20439 = v20956 
            #endif
            let v20957 : Async<US6> = _v20439 
            return! v20957 
            (*
            ()
        *)
        }
        (*
        ()
    *)
    let v20962 : Async<US6> = _v20218 
    let _v17973 = v20962 
    #endif
    let v20963 : Async<US6> = _v17973 
    let _v2 = v20963 
    #endif
    let v20968 : Async<US6> = _v2 
    v20968
and method19 (v0 : int32, v1 : string, v2 : int32) : Async<bool> =
    let v3 : unit = ()
    
#if FABLE_COMPILER || WASM || CONTRACT
    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
    let v4 : Async<bool> = null |> unbox<Async<bool>>
    let _v3 = v4 
    #endif
#if FABLE_COMPILER_RUST && WASM
    let v7 : Async<bool> = null |> unbox<Async<bool>>
    let _v3 = v7 
    #endif
#if FABLE_COMPILER_RUST && CONTRACT
    let v10 : Async<bool> = null |> unbox<Async<bool>>
    let _v3 = v10 
    #endif
#if FABLE_COMPILER_TYPESCRIPT
    let v13 : unit = ()
    let _v13 =
        async {
            let v14 : Async<bool> = method5(v1, v2)
            let v15 : Async<US6> = method20(v0, v14)
            let! v15 = v15 
            let v16 : US6 = v15 
            let v19 : bool =
                match v16 with
                | US6_1 -> (* None *)
                    false
                | US6_0(v17) -> (* Some *)
                    v17
            return v19 
            (*
            ()
        *)
        }
        (*
        ()
    *)
    let v20 : Async<bool> = _v13 
    let _v3 = v20 
    #endif
#if FABLE_COMPILER_PYTHON
    let v21 : unit = ()
    let _v21 =
        async {
            let v22 : Async<bool> = method5(v1, v2)
            let v23 : Async<US6> = method20(v0, v22)
            let! v23 = v23 
            let v24 : US6 = v23 
            let v27 : bool =
                match v24 with
                | US6_1 -> (* None *)
                    false
                | US6_0(v25) -> (* Some *)
                    v25
            return v27 
            (*
            ()
        *)
        }
        (*
        ()
    *)
    let v28 : Async<bool> = _v21 
    let _v3 = v28 
    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
    let v29 : unit = ()
    let _v29 =
        async {
            let v30 : Async<bool> = method5(v1, v2)
            let v31 : Async<US6> = method20(v0, v30)
            let! v31 = v31 
            let v32 : US6 = v31 
            let v35 : bool =
                match v32 with
                | US6_1 -> (* None *)
                    false
                | US6_0(v33) -> (* Some *)
                    v33
            return v35 
            (*
            ()
        *)
        }
        (*
        ()
    *)
    let v36 : Async<bool> = _v29 
    let _v3 = v36 
    #endif
#else
    let v37 : unit = ()
    let _v37 =
        async {
            let v38 : Async<bool> = method5(v1, v2)
            let v39 : Async<US6> = method20(v0, v38)
            let! v39 = v39 
            let v40 : US6 = v39 
            let v43 : bool =
                match v40 with
                | US6_1 -> (* None *)
                    false
                | US6_0(v41) -> (* Some *)
                    v41
            return v43 
            (*
            ()
        *)
        }
        (*
        ()
    *)
    let v44 : Async<bool> = _v37 
    let _v3 = v44 
    #endif
    let v45 : Async<bool> = _v3 
    v45
and closure13 (v0 : int32, v1 : string) (v2 : int32) : Async<bool> =
    method19(v0, v1, v2)
and closure12 (v0 : int32) (v1 : string) : (int32 -> Async<bool>) =
    closure13(v0, v1)
and closure11 () (v0 : int32) : (string -> (int32 -> Async<bool>)) =
    closure12(v0)
and closure22 () (v0 : int32) : US9 =
    US9_0(v0)
and method30 () : (int32 -> US9) =
    closure22()
and method32 (v0 : int32, v1 : int64, v2 : int32 option, v3 : bool) : string =
    let v4 : string = method13()
    let v5 : Mut3 = {l0 = v4} : Mut3
    let v6 : string = "{ "
    let v7 : string = $"{v6}"
    let v10 : unit = ()
    let v11 : (unit -> unit) = closure7(v5, v7)
    let v12 : unit = (fun () -> v11 (); v10) ()
    let v15 : string = "port"
    let v16 : string = $"{v15}"
    let v19 : unit = ()
    let v20 : (unit -> unit) = closure7(v5, v16)
    let v21 : unit = (fun () -> v20 (); v19) ()
    let v24 : string = " = "
    let v25 : string = $"{v24}"
    let v28 : unit = ()
    let v29 : (unit -> unit) = closure7(v5, v25)
    let v30 : unit = (fun () -> v29 (); v28) ()
    let v33 : string = $"{v0}"
    let v36 : unit = ()
    let v37 : (unit -> unit) = closure7(v5, v33)
    let v38 : unit = (fun () -> v37 (); v36) ()
    let v41 : string = "; "
    let v42 : string = $"{v41}"
    let v45 : unit = ()
    let v46 : (unit -> unit) = closure7(v5, v42)
    let v47 : unit = (fun () -> v46 (); v45) ()
    let v50 : string = "retry"
    let v51 : string = $"{v50}"
    let v54 : unit = ()
    let v55 : (unit -> unit) = closure7(v5, v51)
    let v56 : unit = (fun () -> v55 (); v54) ()
    let v59 : string = $"{v24}"
    let v62 : unit = ()
    let v63 : (unit -> unit) = closure7(v5, v59)
    let v64 : unit = (fun () -> v63 (); v62) ()
    let v67 : string = $"{v1}"
    let v70 : unit = ()
    let v71 : (unit -> unit) = closure7(v5, v67)
    let v72 : unit = (fun () -> v71 (); v70) ()
    let v75 : string = $"{v41}"
    let v78 : unit = ()
    let v79 : (unit -> unit) = closure7(v5, v75)
    let v80 : unit = (fun () -> v79 (); v78) ()
    let v83 : string = "timeout"
    let v84 : string = $"{v83}"
    let v87 : unit = ()
    let v88 : (unit -> unit) = closure7(v5, v84)
    let v89 : unit = (fun () -> v88 (); v87) ()
    let v92 : string = $"{v24}"
    let v95 : unit = ()
    let v96 : (unit -> unit) = closure7(v5, v92)
    let v97 : unit = (fun () -> v96 (); v95) ()
    let v100 : unit = ()
    
#if FABLE_COMPILER || WASM || CONTRACT
    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
    let v101 : string = "format!(\"{:#?}\", $0)"
    let v102 : std_string_String = Fable.Core.RustInterop.emitRustExpr v2 v101 
    let v103 : string = "fable_library_rust::String_::fromString($0)"
    let v104 : string = Fable.Core.RustInterop.emitRustExpr v102 v103 
    let _v100 = v104 
    #endif
#if FABLE_COMPILER_RUST && WASM
    let v105 : string = "format!(\"{:#?}\", $0)"
    let v106 : std_string_String = Fable.Core.RustInterop.emitRustExpr v2 v105 
    let v107 : string = "fable_library_rust::String_::fromString($0)"
    let v108 : string = Fable.Core.RustInterop.emitRustExpr v106 v107 
    let _v100 = v108 
    #endif
#if FABLE_COMPILER_RUST && CONTRACT
    let v109 : string = "format!(\"{:#?}\", $0)"
    let v110 : std_string_String = Fable.Core.RustInterop.emitRustExpr v2 v109 
    let v111 : string = "fable_library_rust::String_::fromString($0)"
    let v112 : string = Fable.Core.RustInterop.emitRustExpr v110 v111 
    let _v100 = v112 
    #endif
#if FABLE_COMPILER_TYPESCRIPT
    let v113 : string = $"%A{v2}"
    let _v100 = v113 
    #endif
#if FABLE_COMPILER_PYTHON
    let v116 : string = $"%A{v2}"
    let _v100 = v116 
    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
    let v119 : string = $"%A{v2}"
    let _v100 = v119 
    #endif
#else
    let v122 : string = $"%A{v2}"
    let _v100 = v122 
    #endif
    let v125 : string = _v100 
    let v130 : string = $"{v125}"
    let v133 : unit = ()
    let v134 : (unit -> unit) = closure7(v5, v130)
    let v135 : unit = (fun () -> v134 (); v133) ()
    let v138 : string = $"{v41}"
    let v141 : unit = ()
    let v142 : (unit -> unit) = closure7(v5, v138)
    let v143 : unit = (fun () -> v142 (); v141) ()
    let v146 : string = "status"
    let v147 : string = $"{v146}"
    let v150 : unit = ()
    let v151 : (unit -> unit) = closure7(v5, v147)
    let v152 : unit = (fun () -> v151 (); v150) ()
    let v155 : string = $"{v24}"
    let v158 : unit = ()
    let v159 : (unit -> unit) = closure7(v5, v155)
    let v160 : unit = (fun () -> v159 (); v158) ()
    let v165 : string =
        if v3 then
            let v163 : string = "true"
            v163
        else
            let v164 : string = "false"
            v164
    let v166 : string = $"{v165}"
    let v169 : unit = ()
    let v170 : (unit -> unit) = closure7(v5, v166)
    let v171 : unit = (fun () -> v170 (); v169) ()
    let v174 : string = " }"
    let v175 : string = $"{v174}"
    let v178 : unit = ()
    let v179 : (unit -> unit) = closure7(v5, v175)
    let v180 : unit = (fun () -> v179 (); v178) ()
    let v183 : string = v5.l0
    v183
and method31 (v0 : Mut0, v1 : Mut1, v2 : Mut2, v3 : Mut3, v4 : Mut4, v5 : int64 option, v6 : string, v7 : string, v8 : int32, v9 : int64, v10 : int32 option, v11 : bool) : string =
    let v12 : string = method32(v8, v9, v10, v11)
    let v13 : int64 = v0.l0
    let v14 : string = "networking.wait_for_port_access"
    let v15 : string = $"{v6} {v7} #{v13} %s{v14} / {v12}"
    method17(v15)
and closure23 (v0 : int32 option, v1 : bool, v2 : int32, v3 : int64) () : unit =
    let v4 : US0 = US0_0
    let v5 : bool = method6(v4)
    if v5 then
        let v6 : unit = ()
        let v7 : (unit -> unit) = closure0()
        let v8 : unit = (fun () -> v7 (); v6) ()
        let struct (v22 : Mut0, v23 : Mut1, v24 : Mut2, v25 : Mut3, v26 : Mut4, v27 : int64 option) = TraceState.trace_state.Value
        let v40 : string = method7(v22, v23, v24, v25, v26, v27)
        let v41 : string = method11()
        let v42 : string = method31(v22, v23, v24, v25, v26, v27, v40, v41, v2, v3, v0, v1)
        method18(v42)
and method29 (v0 : int32 option, v1 : bool, v2 : string, v3 : int32, v4 : int64) : Async<int64> =
    let v5 : unit = ()
    
#if FABLE_COMPILER || WASM || CONTRACT
    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
    let v6 : Async<int64> = null |> unbox<Async<int64>>
    let _v5 = v6 
    #endif
#if FABLE_COMPILER_RUST && WASM
    let v9 : Async<int64> = null |> unbox<Async<int64>>
    let _v5 = v9 
    #endif
#if FABLE_COMPILER_RUST && CONTRACT
    let v12 : Async<int64> = null |> unbox<Async<int64>>
    let _v5 = v12 
    #endif
#if FABLE_COMPILER_TYPESCRIPT
    let v15 : unit = ()
    let _v15 =
        async {
            let v16 : (int32 -> US9) = method30()
            let v17 : US9 option = v0 |> Option.map v16 
            let v28 : US9 = US9_1
            let v29 : US9 = v17 |> Option.defaultValue v28 
            let v37 : Async<bool> =
                match v29 with
                | US9_1 -> (* None *)
                    method5(v2, v3)
                | US9_0(v34) -> (* Some *)
                    method19(v34, v2, v3)
            let! v37 = v37 
            let v38 : bool = v37 
            let v39 : bool = v38 = v1
            if v39 then
                return v4 
                (*
                ()
            else
                *) else
                let v40 : int64 = v4 % 100L
                let v41 : bool = v40 = 0L
                if v41 then
                    let v42 : unit = ()
                    let v43 : (unit -> unit) = closure23(v0, v1, v3, v4)
                    let v44 : unit = (fun () -> v43 (); v42) ()
                    ()
                let v84 : unit = ()
                
#if FABLE_COMPILER || WASM || CONTRACT
                
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                let v85 : (int32 -> Async<unit>) = Async.Sleep
                let v86 : Async<unit> = v85 10
                let _v84 = v86 
                #endif
#if FABLE_COMPILER_RUST && WASM
                let v87 : (int32 -> Async<unit>) = Async.Sleep
                let v88 : Async<unit> = v87 10
                let _v84 = v88 
                #endif
#if FABLE_COMPILER_RUST && CONTRACT
                let v89 : (int32 -> Async<unit>) = Async.Sleep
                let v90 : Async<unit> = v89 10
                let _v84 = v90 
                #endif
#if FABLE_COMPILER_TYPESCRIPT
                let v91 : (int32 -> Async<unit>) = Async.Sleep
                let v92 : Async<unit> = v91 10
                let _v84 = v92 
                #endif
#if FABLE_COMPILER_PYTHON
                let v93 : (int32 -> Async<unit>) = Async.Sleep
                let v94 : Async<unit> = v93 10
                let _v84 = v94 
                #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                let v95 : (int32 -> Async<unit>) = Async.Sleep
                let v96 : Async<unit> = v95 10
                let _v84 = v96 
                #endif
#else
                let v97 : (int32 -> Async<unit>) = Async.Sleep
                let v98 : Async<unit> = v97 10
                let _v84 = v98 
                #endif
                let v99 : Async<unit> = _v84 
                do! v99 
                let v104 : int64 = v4 + 1L
                let v105 : Async<int64> = method29(v0, v1, v2, v3, v104)
                return! v105 
                (*
                ()
            *)
            (*
            ()
        *)
        }
        (*
        ()
    *)
    let v106 : Async<int64> = _v15 
    let _v5 = v106 
    #endif
#if FABLE_COMPILER_PYTHON
    let v107 : unit = ()
    let _v107 =
        async {
            let v108 : (int32 -> US9) = method30()
            let v109 : US9 option = v0 |> Option.map v108 
            let v120 : US9 = US9_1
            let v121 : US9 = v109 |> Option.defaultValue v120 
            let v129 : Async<bool> =
                match v121 with
                | US9_1 -> (* None *)
                    method5(v2, v3)
                | US9_0(v126) -> (* Some *)
                    method19(v126, v2, v3)
            let! v129 = v129 
            let v130 : bool = v129 
            let v131 : bool = v130 = v1
            if v131 then
                return v4 
                (*
                ()
            else
                *) else
                let v132 : int64 = v4 % 100L
                let v133 : bool = v132 = 0L
                if v133 then
                    let v134 : unit = ()
                    let v135 : (unit -> unit) = closure23(v0, v1, v3, v4)
                    let v136 : unit = (fun () -> v135 (); v134) ()
                    ()
                let v176 : unit = ()
                
#if FABLE_COMPILER || WASM || CONTRACT
                
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                let v177 : (int32 -> Async<unit>) = Async.Sleep
                let v178 : Async<unit> = v177 10
                let _v176 = v178 
                #endif
#if FABLE_COMPILER_RUST && WASM
                let v179 : (int32 -> Async<unit>) = Async.Sleep
                let v180 : Async<unit> = v179 10
                let _v176 = v180 
                #endif
#if FABLE_COMPILER_RUST && CONTRACT
                let v181 : (int32 -> Async<unit>) = Async.Sleep
                let v182 : Async<unit> = v181 10
                let _v176 = v182 
                #endif
#if FABLE_COMPILER_TYPESCRIPT
                let v183 : (int32 -> Async<unit>) = Async.Sleep
                let v184 : Async<unit> = v183 10
                let _v176 = v184 
                #endif
#if FABLE_COMPILER_PYTHON
                let v185 : (int32 -> Async<unit>) = Async.Sleep
                let v186 : Async<unit> = v185 10
                let _v176 = v186 
                #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                let v187 : (int32 -> Async<unit>) = Async.Sleep
                let v188 : Async<unit> = v187 10
                let _v176 = v188 
                #endif
#else
                let v189 : (int32 -> Async<unit>) = Async.Sleep
                let v190 : Async<unit> = v189 10
                let _v176 = v190 
                #endif
                let v191 : Async<unit> = _v176 
                do! v191 
                let v196 : int64 = v4 + 1L
                let v197 : Async<int64> = method29(v0, v1, v2, v3, v196)
                return! v197 
                (*
                ()
            *)
            (*
            ()
        *)
        }
        (*
        ()
    *)
    let v198 : Async<int64> = _v107 
    let _v5 = v198 
    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
    let v199 : unit = ()
    let _v199 =
        async {
            let v200 : (int32 -> US9) = method30()
            let v201 : US9 option = v0 |> Option.map v200 
            let v212 : US9 = US9_1
            let v213 : US9 = v201 |> Option.defaultValue v212 
            let v221 : Async<bool> =
                match v213 with
                | US9_1 -> (* None *)
                    method5(v2, v3)
                | US9_0(v218) -> (* Some *)
                    method19(v218, v2, v3)
            let! v221 = v221 
            let v222 : bool = v221 
            let v223 : bool = v222 = v1
            if v223 then
                return v4 
                (*
                ()
            else
                *) else
                let v224 : int64 = v4 % 100L
                let v225 : bool = v224 = 0L
                if v225 then
                    let v226 : unit = ()
                    let v227 : (unit -> unit) = closure23(v0, v1, v3, v4)
                    let v228 : unit = (fun () -> v227 (); v226) ()
                    ()
                let v268 : unit = ()
                
#if FABLE_COMPILER || WASM || CONTRACT
                
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                let v269 : (int32 -> Async<unit>) = Async.Sleep
                let v270 : Async<unit> = v269 10
                let _v268 = v270 
                #endif
#if FABLE_COMPILER_RUST && WASM
                let v271 : (int32 -> Async<unit>) = Async.Sleep
                let v272 : Async<unit> = v271 10
                let _v268 = v272 
                #endif
#if FABLE_COMPILER_RUST && CONTRACT
                let v273 : (int32 -> Async<unit>) = Async.Sleep
                let v274 : Async<unit> = v273 10
                let _v268 = v274 
                #endif
#if FABLE_COMPILER_TYPESCRIPT
                let v275 : (int32 -> Async<unit>) = Async.Sleep
                let v276 : Async<unit> = v275 10
                let _v268 = v276 
                #endif
#if FABLE_COMPILER_PYTHON
                let v277 : (int32 -> Async<unit>) = Async.Sleep
                let v278 : Async<unit> = v277 10
                let _v268 = v278 
                #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                let v279 : (int32 -> Async<unit>) = Async.Sleep
                let v280 : Async<unit> = v279 10
                let _v268 = v280 
                #endif
#else
                let v281 : (int32 -> Async<unit>) = Async.Sleep
                let v282 : Async<unit> = v281 10
                let _v268 = v282 
                #endif
                let v283 : Async<unit> = _v268 
                do! v283 
                let v288 : int64 = v4 + 1L
                let v289 : Async<int64> = method29(v0, v1, v2, v3, v288)
                return! v289 
                (*
                ()
            *)
            (*
            ()
        *)
        }
        (*
        ()
    *)
    let v290 : Async<int64> = _v199 
    let _v5 = v290 
    #endif
#else
    let v291 : unit = ()
    let _v291 =
        async {
            let v292 : (int32 -> US9) = method30()
            let v293 : US9 option = v0 |> Option.map v292 
            let v304 : US9 = US9_1
            let v305 : US9 = v293 |> Option.defaultValue v304 
            let v313 : Async<bool> =
                match v305 with
                | US9_1 -> (* None *)
                    method5(v2, v3)
                | US9_0(v310) -> (* Some *)
                    method19(v310, v2, v3)
            let! v313 = v313 
            let v314 : bool = v313 
            let v315 : bool = v314 = v1
            if v315 then
                return v4 
                (*
                ()
            else
                *) else
                let v316 : int64 = v4 % 100L
                let v317 : bool = v316 = 0L
                if v317 then
                    let v318 : unit = ()
                    let v319 : (unit -> unit) = closure23(v0, v1, v3, v4)
                    let v320 : unit = (fun () -> v319 (); v318) ()
                    ()
                let v360 : unit = ()
                
#if FABLE_COMPILER || WASM || CONTRACT
                
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                let v361 : (int32 -> Async<unit>) = Async.Sleep
                let v362 : Async<unit> = v361 10
                let _v360 = v362 
                #endif
#if FABLE_COMPILER_RUST && WASM
                let v363 : (int32 -> Async<unit>) = Async.Sleep
                let v364 : Async<unit> = v363 10
                let _v360 = v364 
                #endif
#if FABLE_COMPILER_RUST && CONTRACT
                let v365 : (int32 -> Async<unit>) = Async.Sleep
                let v366 : Async<unit> = v365 10
                let _v360 = v366 
                #endif
#if FABLE_COMPILER_TYPESCRIPT
                let v367 : (int32 -> Async<unit>) = Async.Sleep
                let v368 : Async<unit> = v367 10
                let _v360 = v368 
                #endif
#if FABLE_COMPILER_PYTHON
                let v369 : (int32 -> Async<unit>) = Async.Sleep
                let v370 : Async<unit> = v369 10
                let _v360 = v370 
                #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                let v371 : (int32 -> Async<unit>) = Async.Sleep
                let v372 : Async<unit> = v371 10
                let _v360 = v372 
                #endif
#else
                let v373 : (int32 -> Async<unit>) = Async.Sleep
                let v374 : Async<unit> = v373 10
                let _v360 = v374 
                #endif
                let v375 : Async<unit> = _v360 
                do! v375 
                let v380 : int64 = v4 + 1L
                let v381 : Async<int64> = method29(v0, v1, v2, v3, v380)
                return! v381 
                (*
                ()
            *)
            (*
            ()
        *)
        }
        (*
        ()
    *)
    let v382 : Async<int64> = _v291 
    let _v5 = v382 
    #endif
    let v383 : Async<int64> = _v5 
    v383
and method28 (v0 : int32 option, v1 : bool, v2 : string, v3 : int32) : Async<int64> =
    let v4 : int64 = 1L
    method29(v0, v1, v2, v3, v4)
and closure21 (v0 : int32 option, v1 : bool, v2 : string) (v3 : int32) : Async<int64> =
    method28(v0, v1, v2, v3)
and closure20 (v0 : int32 option, v1 : bool) (v2 : string) : (int32 -> Async<int64>) =
    closure21(v0, v1, v2)
and closure19 (v0 : int32 option) (v1 : bool) : (string -> (int32 -> Async<int64>)) =
    closure20(v0, v1)
and closure18 () (v0 : int32 option) : (bool -> (string -> (int32 -> Async<int64>))) =
    closure19(v0)
and method34 (v0 : int32 option, v1 : string, v2 : int32) : Async<int32> =
    let v3 : unit = ()
    
#if FABLE_COMPILER || WASM || CONTRACT
    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
    let v4 : Async<int32> = null |> unbox<Async<int32>>
    let _v3 = v4 
    #endif
#if FABLE_COMPILER_RUST && WASM
    let v7 : Async<int32> = null |> unbox<Async<int32>>
    let _v3 = v7 
    #endif
#if FABLE_COMPILER_RUST && CONTRACT
    let v10 : Async<int32> = null |> unbox<Async<int32>>
    let _v3 = v10 
    #endif
#if FABLE_COMPILER_TYPESCRIPT
    let v13 : unit = ()
    let _v13 =
        async {
            let v14 : (int32 -> US9) = method30()
            let v15 : US9 option = v0 |> Option.map v14 
            let v26 : US9 = US9_1
            let v27 : US9 = v15 |> Option.defaultValue v26 
            let v35 : Async<bool> =
                match v27 with
                | US9_1 -> (* None *)
                    method5(v1, v2)
                | US9_0(v32) -> (* Some *)
                    method19(v32, v1, v2)
            let! v35 = v35 
            let v36 : bool = v35 
            let v37 : bool = v36 = false
            if v37 then
                return v2 
                (*
                ()
            else
                *) else
                let v38 : int32 = v2 + 1
                let v39 : Async<int32> = method34(v0, v1, v38)
                return! v39 
                (*
                ()
            *)
            (*
            ()
        *)
        }
        (*
        ()
    *)
    let v40 : Async<int32> = _v13 
    let _v3 = v40 
    #endif
#if FABLE_COMPILER_PYTHON
    let v41 : unit = ()
    let _v41 =
        async {
            let v42 : (int32 -> US9) = method30()
            let v43 : US9 option = v0 |> Option.map v42 
            let v54 : US9 = US9_1
            let v55 : US9 = v43 |> Option.defaultValue v54 
            let v63 : Async<bool> =
                match v55 with
                | US9_1 -> (* None *)
                    method5(v1, v2)
                | US9_0(v60) -> (* Some *)
                    method19(v60, v1, v2)
            let! v63 = v63 
            let v64 : bool = v63 
            let v65 : bool = v64 = false
            if v65 then
                return v2 
                (*
                ()
            else
                *) else
                let v66 : int32 = v2 + 1
                let v67 : Async<int32> = method34(v0, v1, v66)
                return! v67 
                (*
                ()
            *)
            (*
            ()
        *)
        }
        (*
        ()
    *)
    let v68 : Async<int32> = _v41 
    let _v3 = v68 
    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
    let v69 : unit = ()
    let _v69 =
        async {
            let v70 : (int32 -> US9) = method30()
            let v71 : US9 option = v0 |> Option.map v70 
            let v82 : US9 = US9_1
            let v83 : US9 = v71 |> Option.defaultValue v82 
            let v91 : Async<bool> =
                match v83 with
                | US9_1 -> (* None *)
                    method5(v1, v2)
                | US9_0(v88) -> (* Some *)
                    method19(v88, v1, v2)
            let! v91 = v91 
            let v92 : bool = v91 
            let v93 : bool = v92 = false
            if v93 then
                return v2 
                (*
                ()
            else
                *) else
                let v94 : int32 = v2 + 1
                let v95 : Async<int32> = method34(v0, v1, v94)
                return! v95 
                (*
                ()
            *)
            (*
            ()
        *)
        }
        (*
        ()
    *)
    let v96 : Async<int32> = _v69 
    let _v3 = v96 
    #endif
#else
    let v97 : unit = ()
    let _v97 =
        async {
            let v98 : (int32 -> US9) = method30()
            let v99 : US9 option = v0 |> Option.map v98 
            let v110 : US9 = US9_1
            let v111 : US9 = v99 |> Option.defaultValue v110 
            let v119 : Async<bool> =
                match v111 with
                | US9_1 -> (* None *)
                    method5(v1, v2)
                | US9_0(v116) -> (* Some *)
                    method19(v116, v1, v2)
            let! v119 = v119 
            let v120 : bool = v119 
            let v121 : bool = v120 = false
            if v121 then
                return v2 
                (*
                ()
            else
                *) else
                let v122 : int32 = v2 + 1
                let v123 : Async<int32> = method34(v0, v1, v122)
                return! v123 
                (*
                ()
            *)
            (*
            ()
        *)
        }
        (*
        ()
    *)
    let v124 : Async<int32> = _v97 
    let _v3 = v124 
    #endif
    let v125 : Async<int32> = _v3 
    v125
and method33 (v0 : int32 option, v1 : string, v2 : int32) : Async<int32> =
    method34(v0, v1, v2)
and closure26 (v0 : int32 option, v1 : string) (v2 : int32) : Async<int32> =
    method33(v0, v1, v2)
and closure25 (v0 : int32 option) (v1 : string) : (int32 -> Async<int32>) =
    closure26(v0, v1)
and closure24 () (v0 : int32 option) : (string -> (int32 -> Async<int32>)) =
    closure25(v0)
let v0 : unit = ()
let v1 : (unit -> unit) = closure0()
let v2 : unit = (fun () -> v1 (); v0) ()
let v16 : (string -> (int32 -> Async<bool>)) = closure3()
let test_port_open x = v16 x
let v17 : (int32 -> (string -> (int32 -> Async<bool>))) = closure11()
let test_port_open_timeout x = v17 x
let v18 : (int32 option -> (bool -> (string -> (int32 -> Async<int64>)))) = closure18()
let wait_for_port_access x = v18 x
let v19 : (int32 option -> (string -> (int32 -> Async<int32>))) = closure24()
let get_available_port x = v19 x
()
00:00:00 d #1 writeDibCode / output: Fs / path: DirTreeHtml.dib
00:00:00 d #2 parseDibCode / output: Fs / file: DirTreeHtml.dib
00:00:00 d #1 persistCodeProject / packages: [Argu; Falco.Markup; FSharp.Control.AsyncSeq; ... ] / modules: [lib/spiral/common.fsx; lib/spiral/sm.fsx; lib/spiral/crypto.fsx; ... ] / name: DirTreeHtml / hash:  / code.Length: 4638
00:00:00 d #2 buildProject / fullPath: C:\home\git\polyglot\target\Builder\DirTreeHtml\DirTreeHtml.fsproj
00:00:00 d #1 runtime.execute_with_options_async / { file_name = dotnet; arguments = US5_0
  "publish "C:\home\git\polyglot\target/Builder\DirTreeHtml\DirTreeHtml.fsproj" --configuration Release --output "C:\home\git\polyglot\apps\dir-tree-html\dist" --runtime linux-x64"; options = { command = dotnet publish "C:\home\git\polyglot\target/Builder\DirTreeHtml\DirTreeHtml.fsproj" --configuration Release --output "C:\home\git\polyglot\apps\dir-tree-html\dist" --runtime linux-x64; cancellation_token = None; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = Some "C:\home\git\polyglot\target\Builder\DirTreeHtml" } }
00:00:00 v #2 > MSBuild version 17.10.0-preview-24101-01+07fd5d51f for .NET
00:00:01 v #3 >   Determining projects to restore...
00:00:02 v #4 >   Restored C:\home\git\polyglot\target\Builder\DirTreeHtml\DirTreeHtml.fsproj (in 1.01 sec).
00:00:02 v #5 > C:\Users\i574n\scoop\apps\dotnet-sdk-preview\current\sdk\9.0.100-preview.1.24101.2\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.RuntimeIdentifierInference.targets(313,5): message NETSDK1057: You are using a preview version of .NET. See: https://aka.ms/dotnet-support-policy [C:\home\git\polyglot\target\Builder\DirTreeHtml\DirTreeHtml.fsproj]
00:00:12 v #6 >   DirTreeHtml -> C:\home\git\polyglot\target\Builder\DirTreeHtml\bin\Release\net9.0\linux-x64\DirTreeHtml.dll
00:00:13 v #7 >   DirTreeHtml -> C:\home\git\polyglot\apps\dir-tree-html\dist\
00:00:14 d #8 runtime.execute_with_options_async / { exit_code = 0; output_length = 705 }
00:00:14 d #9 runtime.execute_with_options_async / { file_name = dotnet; arguments = US5_0
  "publish "C:\home\git\polyglot\target/Builder\DirTreeHtml\DirTreeHtml.fsproj" --configuration Release --output "C:\home\git\polyglot\apps\dir-tree-html\dist" --runtime win-x64"; options = { command = dotnet publish "C:\home\git\polyglot\target/Builder\DirTreeHtml\DirTreeHtml.fsproj" --configuration Release --output "C:\home\git\polyglot\apps\dir-tree-html\dist" --runtime win-x64; cancellation_token = None; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = Some "C:\home\git\polyglot\target\Builder\DirTreeHtml" } }
00:00:14 v #10 > MSBuild version 17.10.0-preview-24101-01+07fd5d51f for .NET
00:00:14 v #11 >   Determining projects to restore...
00:00:15 v #12 >   Restored C:\home\git\polyglot\target\Builder\DirTreeHtml\DirTreeHtml.fsproj (in 352 ms).
00:00:15 v #13 > C:\Users\i574n\scoop\apps\dotnet-sdk-preview\current\sdk\9.0.100-preview.1.24101.2\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.RuntimeIdentifierInference.targets(313,5): message NETSDK1057: You are using a preview version of .NET. See: https://aka.ms/dotnet-support-policy [C:\home\git\polyglot\target\Builder\DirTreeHtml\DirTreeHtml.fsproj]
00:00:25 v #14 >   DirTreeHtml -> C:\home\git\polyglot\target\Builder\DirTreeHtml\bin\Release\net9.0\win-x64\DirTreeHtml.dll
00:00:26 v #15 >   DirTreeHtml -> C:\home\git\polyglot\apps\dir-tree-html\dist\
00:00:26 d #16 runtime.execute_with_options_async / { exit_code = 0; output_length = 701 }
In [ ]:
{ pwsh ../lib/spiral/build.ps1 -sequential 1 } | Invoke-Block
00:00:00 v #1 async.run_with_timeout_async / { timeout = 180 }
00:00:00 d #1 runtime.execute_with_options_async / { file_name = dotnet; arguments = US5_0
  ""C:\home\git\polyglot\deps\The-Spiral-Language\The Spiral Language 2\artifacts\bin\The Spiral Language 2\release\Spiral.dll" --port 13805 --default-int i32 --default-float f64"; options = { command = dotnet "C:\home\git\polyglot\deps\The-Spiral-Language\The Spiral Language 2\artifacts\bin\The Spiral Language 2\release\Spiral.dll" --port 13805 --default-int i32 --default-float f64; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = Some <fun:main@595-7>; stdin = None; trace = true; working_directory = Some "C:\home\git\polyglot" } }
00:00:00 v #2 > 00:00:00 d #1 pwd: C:\home\git\polyglot
00:00:00 v #3 > 00:00:00 d #2 dllPath: C:\home\git\polyglot\deps\The-Spiral-Language\The Spiral Language 2\artifacts\bin\The Spiral Language 2\release
00:00:00 v #4 > 00:00:00 d #3 targetDir: C:\home\git\polyglot\target/spiral_Eval
00:00:01 v #2 async.run_with_timeout_async / { timeout = 100 }
00:00:01 v #3 async.run_with_timeout_async / { timeout = 100 }
00:00:01 v #5 > Starting the Spiral Server. It is bound to: http://localhost:13805
00:00:01 v #4 async.run_with_timeout_async / { timeout = 100 }
00:00:01 v #1 Supervisor.sendJson / port: 13805 / json: {"Ping":true} / result:
00:00:01 v #2 Supervisor.awaitCompiler / Ping / result: 'Some null' / port: 13805 / retry: 1
00:00:01 v #6 > Server bound to: http://localhost:13805
00:00:01 d #7 runtime.execute_with_options_async / { file_name = ../../workspace/target/release/spiral_builder.exe; arguments = US5_0 "dib --path parsing.dib --retries 3"; options = { command = ../../workspace/target/release/spiral_builder.exe dib --path parsing.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:00:01 v #8 > 00:00:00 d #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "parsing.dib", "--retries", "3"])) }
00:00:01 v #9 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/polyglot/lib/spiral/parsing.dib", "--output-path", "c:/home/git/polyglot/lib/spiral/parsing.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/polyglot/lib/spiral/parsing.dib" --output-path "c:/home/git/polyglot/lib/spiral/parsing.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:00:03 v #10 > >
00:00:03 v #11 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:03 v #12 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:03 v #13 > > │ # parsing                                                                    │
00:00:03 v #14 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 v #15 > >
00:00:07 v #16 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:07 v #17 > > //// test
00:00:07 v #18 > >
00:00:07 v #19 > > open testing
00:00:12 v #20 > >
00:00:12 v #21 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:12 v #22 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:12 v #23 > > │ ## fparsec                                                                   │
00:00:12 v #24 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:12 v #25 > >
00:00:12 v #26 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:12 v #27 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:12 v #28 > > │ <div><div></div><div><strong>Installing                                      │
00:00:12 v #29 > > │ Packages</strong><ul><li><span>FParsec</span></li></ul></div><div></div></di │
00:00:12 v #30 > > │ v>                                                                           │
00:00:12 v #31 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:12 v #32 > >
00:00:12 v #33 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:12 v #34 > > │ <div><div></div><div><strong>Installing                                      │
00:00:12 v #35 > > │ Packages</strong><ul><li><span>FParsec.</span></li></ul></div><div></div></d │
00:00:12 v #36 > > │ iv>                                                                          │
00:00:12 v #37 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:13 v #38 > >
00:00:13 v #39 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:13 v #40 > > │ <div><div></div><div><strong>Installing                                      │
00:00:13 v #41 > > │ Packages</strong><ul><li><span>FParsec..</span></li></ul></div><div></div></ │
00:00:13 v #42 > > │ div>                                                                         │
00:00:13 v #43 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:13 v #44 > >
00:00:13 v #45 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:13 v #46 > > │ <div><div></div><div><strong>Installing                                      │
00:00:13 v #47 > > │ Packages</strong><ul><li><span>FParsec...</span></li></ul></div><div></div>< │
00:00:13 v #48 > > │ /div>                                                                        │
00:00:13 v #49 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:14 v #50 > >
00:00:14 v #51 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:14 v #52 > > │ <div><div></div><div><strong>Installing                                      │
00:00:14 v #53 > > │ Packages</strong><ul><li><span>FParsec....</span></li></ul></div><div></div> │
00:00:14 v #54 > > │ </div>                                                                       │
00:00:14 v #55 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:14 v #56 > >
00:00:14 v #57 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:14 v #58 > > │ <div><div></div><div><strong>Installing                                      │
00:00:14 v #59 > > │ Packages</strong><ul><li><span>FParsec.....</span></li></ul></div><div></div │
00:00:14 v #60 > > │ ></div>                                                                      │
00:00:14 v #61 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:14 v #62 > >
00:00:14 v #63 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:14 v #64 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:14 v #65 > > │  Package added: fsharp.core,4.3.4                                            │
00:00:14 v #66 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:14 v #67 > >
00:00:14 v #68 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:14 v #69 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:14 v #70 > > │  Package added: FParsec,1.1.1                                                │
00:00:14 v #71 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:14 v #72 > >
00:00:14 v #73 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:14 v #74 > > │ <div><div></div><div></div><div><strong>Installed                            │
00:00:14 v #75 > > │ Packages</strong><ul><li><span>FParsec, 1.1.1</span></li></ul></div></div>   │
00:00:14 v #76 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:15 v #77 > >
00:00:15 v #78 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:15 v #79 > > //// test
00:00:15 v #80 > >
00:00:15 v #81 > > nominal position_ = $'FParsec.Position'
00:00:15 v #82 > > nominal parser_error_ = $'FParsec.Error.ParserError'
00:00:15 v #83 > >
00:00:15 v #84 > > nominal reply_ t = $'FParsec.Reply<`t>'
00:00:15 v #85 > >
00:00:15 v #86 > > nominal char_stream_ t = $'FParsec.CharStream<`t>'
00:00:15 v #87 > >
00:00:15 v #88 > > // nominal parser t u = char_stream u -> reply t
00:00:15 v #89 > > nominal parser_ t u = $'FParsec.Primitives.Parser<`t, `u>'
00:00:15 v #90 > >
00:00:15 v #91 > > inl p_char_ forall t. (x : char) : parser_ char t =
00:00:15 v #92 > >     x |> $'FParsec.CharParsers.pchar'
00:00:15 v #93 > >
00:00:15 v #94 > > inl p_string_ forall t. (x : string) : parser_ string t =
00:00:15 v #95 > >     x |> $'FParsec.CharParsers.pstring'
00:00:15 v #96 > >
00:00:15 v #97 > > inl (>>.$) forall t u v. (a : parser_ t v) (b : parser_ u v) : parser_ u v =
00:00:15 v #98 > >     b |> $'FParsec.Primitives.(>>.)' a
00:00:15 v #99 > >
00:00:15 v #100 > > inl (.>>$) forall t u v. (a : parser_ t v) (b : parser_ u v) : parser_ t v =
00:00:15 v #101 > >     b |> $'FParsec.Primitives.(.>>)' a
00:00:15 v #102 > >
00:00:15 v #103 > > inl (.>>.$) forall t u v. (a : parser_ t v) (b : parser_ u v) : parser_ (pair t
00:00:15 v #104 > > u) v =
00:00:15 v #105 > >     b |> $'FParsec.Primitives.(.>>.)' a
00:00:15 v #106 > >
00:00:15 v #107 > > inl (>>%$) forall t u v. (a : parser_ t v) (b : u) : parser_ u v =
00:00:15 v #108 > >     b |> $'FParsec.Primitives.(>>%)' a
00:00:15 v #109 > >
00:00:15 v #110 > > inl (>>=$) forall t u v. (a : parser_ t v) (b : t -> parser_ u v) : parser_ u v
00:00:15 v #111 > > =
00:00:15 v #112 > >     b |> $'FParsec.Primitives.(>>=)' a
00:00:15 v #113 > >
00:00:15 v #114 > > inl (|>>$) forall t u v. (a : parser_ t v) (b : t -> u) : parser_ u v =
00:00:15 v #115 > >     inl b = fun x => x |> b
00:00:15 v #116 > >     b |> $'FParsec.Primitives.(|>>)' a
00:00:15 v #117 > >
00:00:15 v #118 > > inl any_char_ () : parser_ char _ =
00:00:15 v #119 > >     $'FParsec.CharParsers.anyChar'
00:00:15 v #120 > >
00:00:15 v #121 > > inl any_string_ () : parser_ string _ =
00:00:15 v #122 > >     $'FParsec.CharParsers.anyString'
00:00:15 v #123 > >
00:00:15 v #124 > > inl any_string__ (n : i32) : parser_ string _ =
00:00:15 v #125 > >     n |> $'FParsec.CharParsers.anyString'
00:00:15 v #126 > >
00:00:15 v #127 > > inl eof_ () : parser_ () _ =
00:00:15 v #128 > >     $'FParsec.CharParsers.eof'
00:00:15 v #129 > >
00:00:15 v #130 > > inl spaces_ () : parser_ () () =
00:00:15 v #131 > >     $'FParsec.CharParsers.spaces'
00:00:15 v #132 > >
00:00:15 v #133 > > inl spaces1_ () : parser_ () () =
00:00:15 v #134 > >     $'FParsec.CharParsers.spaces1'
00:00:15 v #135 > >
00:00:15 v #136 > > inl (<|>$) forall t u. (a : parser_ t u) (b : parser_ t u) : parser_ t u =
00:00:15 v #137 > >     b |> $'FParsec.Primitives.(<|>)' a
00:00:15 v #138 > >
00:00:15 v #139 > > inl many_satisfy_ forall t. (x : char -> bool) : parser_ string t =
00:00:15 v #140 > >     x |> $'FParsec.CharParsers.manySatisfy'
00:00:15 v #141 > >
00:00:15 v #142 > > inl satisfy_ forall t. (x : char -> bool) : parser_ char t =
00:00:15 v #143 > >     x |> $'FParsec.CharParsers.satisfy'
00:00:15 v #144 > >
00:00:15 v #145 > > inl none_of_ (x : list char) : parser_ char () =
00:00:15 v #146 > >     x
00:00:15 v #147 > >     |> listm'.box
00:00:15 v #148 > >     |> listm'.to_array'
00:00:15 v #149 > >     |> $'FParsec.CharParsers.noneOf'
00:00:15 v #150 > >
00:00:15 v #151 > > inl any_of_ (x : list char) : parser_ char () =
00:00:15 v #152 > >     x
00:00:15 v #153 > >     |> listm'.box
00:00:15 v #154 > >     |> listm'.to_array'
00:00:15 v #155 > >     |> $'FParsec.CharParsers.anyOf'
00:00:15 v #156 > >
00:00:15 v #157 > > inl skip_any_of_ (x : list char) : parser_ () () =
00:00:15 v #158 > >     x
00:00:15 v #159 > >     |> listm'.box
00:00:15 v #160 > >     |> listm'.to_array'
00:00:15 v #161 > >     |> $'FParsec.CharParsers.skipAnyOf'
00:00:15 v #162 > >
00:00:15 v #163 > > inl between_ forall t u v x. (a : parser_ t x) (b : parser_ u x) (c : parser_ v
00:00:15 v #164 > > x) : parser_ v x =
00:00:15 v #165 > >     c |> $'FParsec.Primitives.between' a b
00:00:15 v #166 > >
00:00:15 v #167 > > inl many_chars_ forall t. (x : parser_ char t) : parser_ string t =
00:00:15 v #168 > >     x |> $'FParsec.CharParsers.manyChars'
00:00:15 v #169 > >
00:00:15 v #170 > > inl many1_chars_ forall t. (x : parser_ char t) : parser_ string t =
00:00:15 v #171 > >     x |> $'FParsec.CharParsers.many1Chars'
00:00:15 v #172 > >
00:00:15 v #173 > > inl many_strings_ forall t. (x : parser_ string t) : parser_ string t =
00:00:15 v #174 > >     x |> $'FParsec.CharParsers.manyStrings'
00:00:15 v #175 > >
00:00:15 v #176 > > inl skip_any_string_ forall t. (n : i32) : parser_ () t =
00:00:15 v #177 > >     n |> $'FParsec.CharParsers.skipAnyString'
00:00:15 v #178 > >
00:00:15 v #179 > > inl many1_strings_ forall t. (x : parser_ string t) : parser_ string t =
00:00:15 v #180 > >     x |> $'FParsec.CharParsers.many1Strings'
00:00:15 v #181 > >
00:00:15 v #182 > > inl opt_ forall t u. (a : parser_ t u) : parser_ (optionm'.option' t) u =
00:00:15 v #183 > >     a |> $'FParsec.Primitives.opt'
00:00:15 v #184 > >
00:00:15 v #185 > > inl choice_ forall t u. (a : list (parser_ t u)) : parser_ t u =
00:00:15 v #186 > >     a
00:00:15 v #187 > >     |> listm'.box
00:00:15 v #188 > >     |> seq.of_list'
00:00:15 v #189 > >     |> $'FParsec.Primitives.choice'
00:00:15 v #190 > >
00:00:15 v #191 > > inl delay_ forall t u. (fn : () -> parser_ t u) : parser_ t u =
00:00:15 v #192 > >     fn |> $'FParsec.Primitives.parse.Delay'
00:00:15 v #193 > >
00:00:15 v #194 > > inl peek_ forall t u. (a : parser_ t u) : parser_ char u =
00:00:15 v #195 > >     $'!a.Peek ()'
00:00:15 v #196 > >
00:00:15 v #197 > > inl not_followed_by_ forall t u. (a : parser_ t u) : parser_ () u =
00:00:15 v #198 > >     a |> $'FParsec.Primitives.notFollowedBy'
00:00:15 v #199 > >
00:00:15 v #200 > > inl sep_by_ forall t u v. (a : parser_ t v) (b : parser_ u v) : parser_
00:00:15 v #201 > > (listm'.list' t) v =
00:00:15 v #202 > >     b |> $'FParsec.Primitives.sepBy' a
00:00:15 v #203 > >
00:00:15 v #204 > > inl sep_by1_ forall t u v. (a : parser_ t v) (b : parser_ u v) : parser_
00:00:15 v #205 > > (listm'.list' t) v =
00:00:15 v #206 > >     b |> $'FParsec.Primitives.sepBy1' a
00:00:15 v #207 > >
00:00:15 v #208 > > inl sep_end_by_ forall t u v. (a : parser_ t v) (b : parser_ u v) : parser_
00:00:15 v #209 > > (listm'.list' t) v =
00:00:15 v #210 > >     b |> $'FParsec.Primitives.sepEndBy' a
00:00:15 v #211 > >
00:00:15 v #212 > > inl many_ forall t u. (a : parser_ t u) : parser_ (listm'.list' t) u =
00:00:15 v #213 > >     a |> $'FParsec.Primitives.many'
00:00:15 v #214 > >
00:00:15 v #215 > > inl many1_ forall t u. (a : parser_ t u) : parser_ (listm'.list' t) u =
00:00:15 v #216 > >     a |> $'FParsec.Primitives.many1'
00:00:15 v #217 > >
00:00:15 v #218 > > inl many1_satisfy_ forall t. (x : char -> bool) : parser_ string t =
00:00:15 v #219 > >     x |> $'FParsec.CharParsers.many1Satisfy'
00:00:15 v #220 > >
00:00:15 v #221 > > nominal parser_result'_ t u = $'FParsec.CharParsers.ParserResult<`t, `u>'
00:00:15 v #222 > >
00:00:15 v #223 > > inl run_ forall t. (parser : parser_ t ()) (x : string) : parser_result'_ t () =
00:00:15 v #224 > >     x |> $'FParsec.CharParsers.run' parser
00:00:15 v #225 > >
00:00:15 v #226 > > union parser_result_ t u =
00:00:15 v #227 > >     | Success : t * u * position_
00:00:15 v #228 > >     | Failure : string * parser_error_ * u
00:00:15 v #229 > >
00:00:15 v #230 > > inl parser_result_ forall t u. = function
00:00:15 v #231 > >     | Success (a, b, c) => $'`(parser_result'_ t u).Success (!a, !b, !c)' :
00:00:15 v #232 > > parser_result'_ t u
00:00:15 v #233 > >     | Failure (a, b, c) => $'`(parser_result'_ t u).Failure (!a, !b, !c)' :
00:00:15 v #234 > > parser_result'_ t u
00:00:15 v #235 > >
00:00:15 v #236 > > inl parser_result'_ forall t u. (x : parser_result'_ t u) : parser_result_ t u =
00:00:15 v #237 > >     $'let mutable _!x = None '
00:00:15 v #238 > >     $'match !x with'
00:00:15 v #239 > >     $'| FParsec.CharParsers.Success (a, b, c) -> (' : ()
00:00:15 v #240 > >     $'(fun () ->'
00:00:15 v #241 > >     $'(fun () ->'
00:00:15 v #242 > >     (Success ((dyn $'a'), dyn $'b', dyn $'c') : _ t u) |> emit_unit
00:00:15 v #243 > >     $')'
00:00:15 v #244 > >     $'|> fun x -> x ()'
00:00:15 v #245 > >     $') () ) | FParsec.CharParsers.Failure (a, b, c) -> (' : ()
00:00:15 v #246 > >     $'(fun () ->'
00:00:15 v #247 > >     $'(fun () ->'
00:00:15 v #248 > >     (Failure ((dyn $'a'), dyn $'b', dyn $'c') : _ t u) |> emit_unit
00:00:15 v #249 > >     $')'
00:00:15 v #250 > >     $'|> fun x -> x ()'
00:00:15 v #251 > >     $') () )' : ()
00:00:15 v #252 > >     $'|> fun x -> _!x <- Some x'
00:00:15 v #253 > >     $'match _!x with Some x -> x | None -> failwith "??? / _!x=None"'
00:00:15 v #254 > >
00:00:15 v #255 > > inl parse_ parser input : result _ _ =
00:00:15 v #256 > >     match input |> run_ parser |> parser_result'_ with
00:00:15 v #257 > >     | Success (result, b, c) => Ok (result, c)
00:00:15 v #258 > >     | Failure (error_msg, b, c) => Error (error_msg, b)
00:00:16 v #259 > >
00:00:16 v #260 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:16 v #261 > > //// test
00:00:16 v #262 > >
00:00:16 v #263 > > inl split_args (args : string) : result (array_base (string * position_))
00:00:16 v #264 > > (string * parser_error_) =
00:00:16 v #265 > >     inl esc = [[ '\\'; '`' ]]
00:00:16 v #266 > >     inl quotes = [[ '"' ]]
00:00:16 v #267 > >     inl special = esc ++ quotes
00:00:16 v #268 > >     inl p_esc_char c =
00:00:16 v #269 > >         p_char_ c >>.$ any_char_ () |>>$ fun c' => $'$"{!c}{!c'}"'
00:00:16 v #270 > >     inl p_word = special |> none_of_ |>>$ sm'.obj_to_string
00:00:16 v #271 > >     inl p_plain = special ++ [[ ' ' ]] |> none_of_ |> many1_chars_
00:00:16 v #272 > >     inl p_text = p_word |> many1_strings_
00:00:16 v #273 > >     inl p_esc = esc |> listm.map p_esc_char |> choice_
00:00:16 v #274 > >     inl p_quoted = (p_word <|>$ p_esc) |> many_ |>>$ (seq.of_list' >> sm'.concat
00:00:16 v #275 > > "")
00:00:16 v #276 > >     inl p_quoted_all = p_quoted |> between_ (p_char_ '"') (p_char_ '"')
00:00:16 v #277 > >     inl p_esc_root = p_esc |>>$ (fun _ => "") >>.$ (p_word |> many_) |>>$
00:00:16 v #278 > > (seq.of_list' >> sm'.concat "")
00:00:16 v #279 > >     inl p_content = p_plain <|>$ p_quoted_all <|>$ p_esc_root
00:00:16 v #280 > >     inl p_args = spaces1_ () |> sep_by_ p_content
00:00:16 v #281 > >     args
00:00:16 v #282 > >     |> parse_ p_args
00:00:16 v #283 > >     |> resultm.map fun (a', b') =>
00:00:16 v #284 > >         (
00:00:16 v #285 > >             (
00:00:16 v #286 > >                 a'
00:00:16 v #287 > >                 |> listm'.to_array'
00:00:16 v #288 > >                 |> a
00:00:16 v #289 > >                 |> am.map fun x => x, b'
00:00:16 v #290 > >                 |> fun (a x : _ i32 _) => x
00:00:16 v #291 > >             )
00:00:16 v #292 > >         )
00:00:16 v #293 > >
00:00:16 v #294 > > [[
00:00:16 v #295 > >     "a b c",
00:00:16 v #296 > >     ;[[ "a"; "b"; "c" ]]
00:00:16 v #297 > >
00:00:16 v #298 > >     "e f \"g h\" i",
00:00:16 v #299 > >     ;[[ "e"; "f"; "g h"; "i" ]]
00:00:16 v #300 > >
00:00:16 v #301 > >     "\"j k\" \"l\" \"m\"",
00:00:16 v #302 > >     ;[[ "j k"; "l"; "m" ]]
00:00:16 v #303 > >
00:00:16 v #304 > >     "s -t \"u \`\"v\`\" w\"",
00:00:16 v #305 > >     ;[[ "s"; "-t"; "u \`\"v\`\" w" ]]
00:00:16 v #306 > >
00:00:16 v #307 > >     "n -o \"p \\\"q\\\" r\"",
00:00:16 v #308 > >     ;[[ "n"; "-o"; "p \\\"q\\\" r" ]]
00:00:16 v #309 > >
00:00:16 v #310 > >     "r -s \"t \\\"u\\\"\"",
00:00:16 v #311 > >     ;[[ "r"; "-s"; "t \\\"u\\\"" ]]
00:00:16 v #312 > >
00:00:16 v #313 > >     $'$"x -y \\\"$z -a \'(b=\\\\\\"c-id=)[[a-fA-F0-9]]{{8}}\', {{ \`$_[[1]] +
00:00:16 v #314 > > \`$d++ }}\\\""',
00:00:16 v #315 > >     ;[[ "x"; "-y"; "$z -a '(b=\\\"c-id=)[[a-fA-F0-9]]{8}', { `$_[[1]] + `$d++ }"
00:00:16 v #316 > > ]]
00:00:16 v #317 > >
00:00:16 v #318 > >     "e -f \"$g -h '(i=`\"j-id=)[[a-fA-F0-9]]{8}', { `$_[[1]] + `$k++ }\"",
00:00:16 v #319 > >     ;[[ "e"; "-f"; "$g -h '(i=`\"j-id=)[[a-fA-F0-9]]{8}', { `$_[[1]] + `$k++ }"
00:00:16 v #320 > > ]]
00:00:16 v #321 > >
00:00:16 v #322 > >     $'$"--l \\\\\\"\'\'\' m \'\'\'\\\\\\" "',
00:00:16 v #323 > >     ;[[ "--l"; "''' m '''" ]]
00:00:16 v #324 > >
00:00:16 v #325 > >     $'$"n --o --p q --r \\\"s:/t u/v.w\\\" --x \\\"y:/z.a\\\" --b c.d
00:00:16 v #326 > > \\\"\\\\e{{f-g}}\\\" h.i \\\"j (k)\\\""',
00:00:16 v #327 > >     ;[[ "n"; "--o"; "--p"; "q"; "--r"; "s:/t u/v.w"; "--x"; "y:/z.a"; "--b";
00:00:16 v #328 > > "c.d"; "\\e{f-g}"; "h.i"; "j (k)" ]]
00:00:16 v #329 > >
00:00:16 v #330 > >     $'\@$"l ""m n:\\o.p"""',
00:00:16 v #331 > >     ;[[ "l"; "m n:\\o.p" ]]
00:00:16 v #332 > > ]]
00:00:16 v #333 > > |> listm.rev
00:00:16 v #334 > > |> listm.map fun input, expected =>
00:00:16 v #335 > >     input
00:00:16 v #336 > >     |> split_args
00:00:16 v #337 > >     |> fun x =>
00:00:16 v #338 > >         try
00:00:16 v #339 > >             fun () =>
00:00:16 v #340 > >                 ($'$"\ninput: {!input}"' : string)
00:00:16 v #341 > >                 |> console.write_line
00:00:16 v #342 > >                 x
00:00:16 v #343 > >                 |> resultm.get
00:00:16 v #344 > >                 |> am'.map_base fst
00:00:16 v #345 > >                 |> _assert_eq' expected
00:00:16 v #346 > >                 false
00:00:16 v #347 > >             fun ex =>
00:00:16 v #348 > >                 ($'$"error / expected: %A{!expected} / ex: %A{!ex}"' : string)
00:00:16 v #349 > >                 |> console.write_line
00:00:16 v #350 > >                 Some true
00:00:16 v #351 > >         |> optionm.value
00:00:16 v #352 > > |> listm'.filter id
00:00:16 v #353 > > |> function
00:00:16 v #354 > >     | [[]] => ()
00:00:16 v #355 > >     | x => failwith $'$"{!x}"'
00:00:20 v #356 > >
00:00:20 v #357 > > ╭─[ 3.97s - stdout ]───────────────────────────────────────────────────────────╮
00:00:20 v #358 > > │                                                                              │
00:00:20 v #359 > > │ input: a b c                                                                 │
00:00:20 v #360 > > │ __assert_eq' / actual: [|"a"; "b"; "c"|] / expected: [|"a"; "b"; "c"|]       │
00:00:20 v #361 > > │                                                                              │
00:00:20 v #362 > > │ input: e f "g h" i                                                           │
00:00:20 v #363 > > │ __assert_eq' / actual: [|"e"; "f"; "g h"; "i"|] / expected: [|"e"; "f"; "g   │
00:00:20 v #364 > > │ h"; "i"|]                                                                    │
00:00:20 v #365 > > │                                                                              │
00:00:20 v #366 > > │ input: "j k" "l" "m"                                                         │
00:00:20 v #367 > > │ __assert_eq' / actual: [|"j k"; "l"; "m"|] / expected: [|"j k"; "l"; "m"|]   │
00:00:20 v #368 > > │                                                                              │
00:00:20 v #369 > > │ input: s -t "u `"v`" w"                                                      │
00:00:20 v #370 > > │ __assert_eq' / actual: [|"s"; "-t"; "u `"v`" w"|] / expected: [|"s"; "-t";   │
00:00:20 v #371 > > │ "u `"v`" w"|]                                                                │
00:00:20 v #372 > > │                                                                              │
00:00:20 v #373 > > │ input: n -o "p \"q\" r"                                                      │
00:00:20 v #374 > > │ __assert_eq' / actual: [|"n"; "-o"; "p \"q\" r"|] / expected: [|"n"; "-o";   │
00:00:20 v #375 > > │ "p \"q\" r"|]                                                                │
00:00:20 v #376 > > │                                                                              │
00:00:20 v #377 > > │ input: r -s "t \"u\""                                                        │
00:00:20 v #378 > > │ __assert_eq' / actual: [|"r"; "-s"; "t \"u\""|] / expected: [|"r"; "-s"; "t  │
00:00:20 v #379 > > │ \"u\""|]                                                                     │
00:00:20 v #380 > > │                                                                              │
00:00:20 v #381 > > │ input: x -y "$z -a '(b=\"c-id=)[a-fA-F0-9]{8}', { `$_[1] + `$d++ }"          │
00:00:20 v #382 > > │ __assert_eq' / actual: [|"x"; "-y"; "$z -a '(b=\"c-id=)[a-fA-F0-9]{8}', {    │
00:00:20 v #383 > > │ `$_[1] + `$d++ }"|] / expected: [|"x"; "-y"; "$z -a '(b=\"c-id=)[            │
00:00:20 v #384 > > │ a-fA-F0-9]{8}', { `$_[1] + `$d++ }"|]                                        │
00:00:20 v #385 > > │                                                                              │
00:00:20 v #386 > > │ input: e -f "$g -h '(i=`"j-id=)[a-fA-F0-9]{8}', { `$_[1] + `$k++ }"          │
00:00:20 v #387 > > │ __assert_eq' / actual: [|"e"; "-f"; "$g -h '(i=`"j-id=)[a-fA-F0-9]{8}', {    │
00:00:20 v #388 > > │ `$_[1] + `$k++ }"|] / expected: [|"e"; "-f"; "$g -h '(i=`"j-id=)[            │
00:00:20 v #389 > > │ a-fA-F0-9]{8}', { `$_[1] + `$k++ }"|]                                        │
00:00:20 v #390 > > │                                                                              │
00:00:20 v #391 > > │ input: --l \"''' m '''\"                                                     │
00:00:20 v #392 > > │ __assert_eq' / actual: [|"--l"; "''' m '''"|] / expected: [|"--l"; "''' m    │
00:00:20 v #393 > > │ '''"|]                                                                       │
00:00:20 v #394 > > │                                                                              │
00:00:20 v #395 > > │ input: n --o --p q --r "s:/t u/v.w" --x "y:/z.a" --b c.d "\e{f-g}" h.i "j    │
00:00:20 v #396 > > │ (k)"                                                                         │
00:00:20 v #397 > > │ __assert_eq' / actual: [|"n"; "--o"; "--p"; "q"; "--r"; "s:/t u/v.w"; "--x"; │
00:00:20 v #398 > > │ "y:/z.a"; "--b"; "c.d";                                                      │
00:00:20 v #399 > > │   "\e{f-g}"; "h.i"; "j (k)"|] / expected: [|"n"; "--o"; "--p"; "q"; "--r";   │
00:00:20 v #400 > > │ "s:/t u/v.w"; "--x"; "y:/z.a"; "--b"; "c.d";                                 │
00:00:20 v #401 > > │   "\e{f-g}"; "h.i"; "j (k)"|]                                                │
00:00:20 v #402 > > │                                                                              │
00:00:20 v #403 > > │ input: l "m n:\o.p"                                                          │
00:00:20 v #404 > > │ __assert_eq' / actual: [|"l"; "m n:\o.p"|] / expected: [|"l"; "m n:\o.p"|]   │
00:00:20 v #405 > > │                                                                              │
00:00:20 v #406 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:20 v #407 > >
00:00:20 v #408 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:20 v #409 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:20 v #410 > > │ ## parsing                                                                   │
00:00:20 v #411 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:20 v #412 > >
00:00:20 v #413 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:20 v #414 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:20 v #415 > > │ ### range                                                                    │
00:00:20 v #416 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:20 v #417 > >
00:00:20 v #418 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:20 v #419 > > type range =
00:00:20 v #420 > >     {
00:00:20 v #421 > >         from : int
00:00:20 v #422 > >         to : int
00:00:20 v #423 > >     }
00:00:20 v #424 > >
00:00:20 v #425 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:20 v #426 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:20 v #427 > > │ ### position                                                                 │
00:00:20 v #428 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:20 v #429 > >
00:00:20 v #430 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:20 v #431 > > type position =
00:00:20 v #432 > >     {
00:00:20 v #433 > >         line : int
00:00:20 v #434 > >         col : int
00:00:20 v #435 > >     }
00:00:20 v #436 > >
00:00:20 v #437 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:20 v #438 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:20 v #439 > > │ ### parser_state                                                             │
00:00:20 v #440 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:20 v #441 > >
00:00:20 v #442 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:20 v #443 > > nominal parser_state =
00:00:20 v #444 > >     {
00:00:20 v #445 > >         line_text : sm'.string_builder
00:00:20 v #446 > >         position : position
00:00:20 v #447 > >     }
00:00:21 v #448 > >
00:00:21 v #449 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:21 v #450 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:21 v #451 > > │ ### parser                                                                   │
00:00:21 v #452 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:21 v #453 > >
00:00:21 v #454 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:21 v #455 > > type parser t = string * parser_state -> result (t * string * parser_state)
00:00:21 v #456 > > string
00:00:21 v #457 > >
00:00:21 v #458 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:21 v #459 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:21 v #460 > > │ ### parse                                                                    │
00:00:21 v #461 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:21 v #462 > >
00:00:21 v #463 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:21 v #464 > > inl parse forall t. (p : parser t) (input : string) : result (t * string *
00:00:21 v #465 > > parser_state) string =
00:00:21 v #466 > >     inl input =
00:00:21 v #467 > >         input
00:00:21 v #468 > >         |> optionm'.of_obj
00:00:21 v #469 > >         |> optionm'.default_value' ""
00:00:21 v #470 > >     p (input, { line_text = "" |> sm'.string_builder; position = { line = 1; col
00:00:21 v #471 > > = 1 } } |> parser_state)
00:00:22 v #472 > >
00:00:22 v #473 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:22 v #474 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:22 v #475 > > │ ### inc                                                                      │
00:00:22 v #476 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:22 v #477 > >
00:00:22 v #478 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:22 v #479 > > inl inc (parser_state s) = function
00:00:22 v #480 > >     | '\n' => { line = s.position.line + 1; col = 1 }
00:00:22 v #481 > >     | _ => { s.position with col = s.position.col + 1 }.position
00:00:22 v #482 > >
00:00:22 v #483 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:22 v #484 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:22 v #485 > > │ ### update                                                                   │
00:00:22 v #486 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:22 v #487 > >
00:00:22 v #488 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:22 v #489 > > inl update result s =
00:00:22 v #490 > >     (s, result |> sm'.to_char_array |> am'.to_list_base' |> listm'.unbox)
00:00:22 v #491 > >     ||> listm.fold fun (parser_state s as s') c =>
00:00:22 v #492 > >         { s with
00:00:22 v #493 > >             position = c |> inc s'
00:00:22 v #494 > >             line_text =
00:00:22 v #495 > >                 match c with
00:00:22 v #496 > >                 | '\n' => s.line_text |> sm'.builder_clear
00:00:22 v #497 > >                 | c => s.line_text |> sm'.builder_append (c |>
00:00:22 v #498 > > sm'.obj_to_string)
00:00:22 v #499 > >         } |> parser_state
00:00:22 v #500 > >
00:00:22 v #501 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:22 v #502 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:22 v #503 > > │ ### any_char                                                                 │
00:00:22 v #504 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:22 v #505 > >
00:00:22 v #506 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:22 v #507 > > inl any_char () : parser char = function
00:00:22 v #508 > >     | "", s =>
00:00:22 v #509 > >         backend_switch {
00:00:22 v #510 > >             Fsharp = fun () => $'$"parsing.any_char / unexpected end of input
00:00:22 v #511 > > s: %A{!s}"' : string
00:00:22 v #512 > >             Python = fun () => $'f"parsing.any_char / unexpected end of input
00:00:22 v #513 > > s: {!s}"' : string
00:00:22 v #514 > >         }
00:00:22 v #515 > >         |> Error
00:00:22 v #516 > >     | x, s =>
00:00:22 v #517 > >         inl first_char = x |> sm'.index 0i32
00:00:22 v #518 > >         Ok (
00:00:22 v #519 > >             first_char,
00:00:22 v #520 > >             x |> sm'.range (am'.Start 1i32) (am'.End id),
00:00:22 v #521 > >             s |> update (first_char |> sm'.obj_to_string)
00:00:22 v #522 > >         )
00:00:23 v #523 > >
00:00:23 v #524 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:23 v #525 > > //// test
00:00:23 v #526 > > ///! fsharp
00:00:23 v #527 > > ///! cuda
00:00:23 v #528 > > ///! typescript
00:00:23 v #529 > >
00:00:23 v #530 > > "abc"
00:00:23 v #531 > > |> parse (any_char ())
00:00:23 v #532 > > |> resultm.get
00:00:23 v #533 > > |> sm'.format_debug
00:00:23 v #534 > > |> _assert_eq (
00:00:23 v #535 > >     ('a', "bc", { line_text = "a" |> sm'.string_builder; position = { line =
00:00:23 v #536 > > 1i32; col = 2i32 } })
00:00:23 v #537 > >     |> sm'.format_debug
00:00:23 v #538 > > )
00:00:26 v #539 > >
00:00:26 v #540 > > ╭─[ 3.24s - return value ]─────────────────────────────────────────────────────╮
00:00:26 v #541 > > │ .py output (Cuda):                                                           │
00:00:26 v #542 > > │ __assert_eq / actual: ('a', 'bc', a, 1, 2) / expected: ('a', 'bc', a, 1, 2)  │
00:00:26 v #543 > > │                                                                              │
00:00:26 v #544 > > │ .ts output:                                                                  │
00:00:26 v #545 > > │ __assert_eq / actual: a,bc,a,1,2 / expected: a,bc,a,1,2                      │
00:00:26 v #546 > > │                                                                              │
00:00:26 v #547 > > │                                                                              │
00:00:26 v #548 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:26 v #549 > >
00:00:26 v #550 > > ╭─[ 3.24s - stdout ]───────────────────────────────────────────────────────────╮
00:00:26 v #551 > > │ .fsx output:                                                                 │
00:00:26 v #552 > > │ __assert_eq / actual: "struct ('a', "bc", a, 1, 2)" / expected: "struct      │
00:00:26 v #553 > > │ ('a', "bc", a, 1, 2)"                                                        │
00:00:26 v #554 > > │                                                                              │
00:00:26 v #555 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:26 v #556 > >
00:00:26 v #557 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:26 v #558 > > //// test
00:00:26 v #559 > >
00:00:26 v #560 > > "abc"
00:00:26 v #561 > > |> parse_ (any_char_ ())
00:00:26 v #562 > > |> resultm.get
00:00:26 v #563 > > |> sm'.format_debug
00:00:26 v #564 > > |> _assert_eq' (('a', ($'FParsec.Position (null, 0, 1, 2)' : position_)) |>
00:00:26 v #565 > > sm'.format_debug)
00:00:27 v #566 > >
00:00:27 v #567 > > ╭─[ 435.44ms - stdout ]────────────────────────────────────────────────────────╮
00:00:27 v #568 > > │ __assert_eq' / actual: "struct ('a', (Ln: 1, Col: 2))" / expected: "struct   │
00:00:27 v #569 > > │ ('a', (Ln: 1, Col: 2))"                                                      │
00:00:27 v #570 > > │                                                                              │
00:00:27 v #571 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:27 v #572 > >
00:00:27 v #573 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:27 v #574 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:27 v #575 > > │ ### p_char                                                                   │
00:00:27 v #576 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:27 v #577 > >
00:00:27 v #578 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:27 v #579 > > inl p_char (c : char) : parser char = function
00:00:27 v #580 > >     | "", s =>
00:00:27 v #581 > >         backend_switch {
00:00:27 v #582 > >             Fsharp = fun () => $'$"parsing.p_char / unexpected end of input / c:
00:00:27 v #583 > > \'{!c}\' / s: %A{!s}"' : string
00:00:27 v #584 > >             Python = fun () => $'f"parsing.p_char / unexpected end of input / c:
00:00:27 v #585 > > \'{!c}\' / s: {!s}"' : string
00:00:27 v #586 > >         }
00:00:27 v #587 > >         |> Error
00:00:27 v #588 > >     | input, (parser_state ({ line_text position = { line col } } as s) as s')
00:00:27 v #589 > > =>
00:00:27 v #590 > >         inl first_char = input |> sm'.index 0i32
00:00:27 v #591 > >         if first_char = c then
00:00:27 v #592 > >             Ok (
00:00:27 v #593 > >                 first_char,
00:00:27 v #594 > >                 input |> sm'.range (am'.Start 1i32) (am'.End id),
00:00:27 v #595 > >                 s' |> update (first_char |> sm'.obj_to_string)
00:00:27 v #596 > >             )
00:00:27 v #597 > >         else
00:00:27 v #598 > >             inl message : string =
00:00:27 v #599 > >                 inl rest =
00:00:27 v #600 > >                     input
00:00:27 v #601 > >                     |> sm'.range
00:00:27 v #602 > >                         (am'.Start 0i32)
00:00:27 v #603 > >                         (am'.End fun l =>
00:00:27 v #604 > >                             match (input |> sm'.index_of "\n") - 1 with
00:00:27 v #605 > >                             | -2 => l + 1
00:00:27 v #606 > >                             | i => i + 1
00:00:27 v #607 > >                         )
00:00:27 v #608 > >                 backend_switch {
00:00:27 v #609 > >                     Fsharp = fun () => $'$"parsing.p_char / expected: \'{!c}\'
00:00:27 v #610 > > line: {!line} / col: {!col}\n{!line_text}{!rest}"' : string
00:00:27 v #611 > >                     Python = fun () => $'f"""parsing.p_char / expected: \'{!c}\'
00:00:27 v #612 > > / line: {!line} / col: {!col}\n{!line_text}{!rest}"""' : string
00:00:27 v #613 > >                 }
00:00:27 v #614 > >             inl pointer_line = (sm'.replicate (col - 1) " ") +. "^"
00:00:27 v #615 > >             backend_switch {
00:00:27 v #616 > >                 Fsharp = fun () => $'$"{!message}\n{!pointer_line}\n"' : string
00:00:27 v #617 > >                 Python = fun () => $'f"""{!message}\n{!pointer_line}\n"""' :
00:00:27 v #618 > > string
00:00:27 v #619 > >             }
00:00:27 v #620 > >             |> Error
00:00:27 v #621 > >
00:00:27 v #622 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:27 v #623 > > //// test
00:00:27 v #624 > > ///! fsharp
00:00:27 v #625 > > ///! cuda
00:00:27 v #626 > > ///! typescript
00:00:27 v #627 > >
00:00:27 v #628 > > "abc"
00:00:27 v #629 > > |> parse (p_char 'a')
00:00:27 v #630 > > |> resultm.get
00:00:27 v #631 > > |> sm'.format_debug
00:00:27 v #632 > > |> _assert_eq (
00:00:27 v #633 > >     ('a', "bc", { line_text = "a" |> sm'.string_builder; position = { line =
00:00:27 v #634 > > 1i32; col = 2i32 } })
00:00:27 v #635 > >     |> sm'.format_debug
00:00:27 v #636 > > )
00:00:29 v #637 > >
00:00:29 v #638 > > ╭─[ 2.32s - return value ]─────────────────────────────────────────────────────╮
00:00:29 v #639 > > │ .py output (Cuda):                                                           │
00:00:29 v #640 > > │ __assert_eq / actual: ('a', 'bc', a, 1, 2) / expected: ('a', 'bc', a, 1, 2)  │
00:00:29 v #641 > > │                                                                              │
00:00:29 v #642 > > │ .ts output:                                                                  │
00:00:29 v #643 > > │ __assert_eq / actual: a,bc,a,1,2 / expected: a,bc,a,1,2                      │
00:00:29 v #644 > > │                                                                              │
00:00:29 v #645 > > │                                                                              │
00:00:29 v #646 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:29 v #647 > >
00:00:29 v #648 > > ╭─[ 2.32s - stdout ]───────────────────────────────────────────────────────────╮
00:00:29 v #649 > > │ .fsx output:                                                                 │
00:00:29 v #650 > > │ __assert_eq / actual: "struct ('a', "bc", a, 1, 2)" / expected: "struct      │
00:00:29 v #651 > > │ ('a', "bc", a, 1, 2)"                                                        │
00:00:29 v #652 > > │                                                                              │
00:00:29 v #653 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:29 v #654 > >
00:00:29 v #655 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:29 v #656 > > //// test
00:00:29 v #657 > >
00:00:29 v #658 > > "abc"
00:00:29 v #659 > > |> parse_ (p_char_ 'a')
00:00:29 v #660 > > |> resultm.get
00:00:29 v #661 > > |> sm'.format_debug
00:00:29 v #662 > > |> _assert_eq' (('a', ($'FParsec.Position (null, 0, 1, 2)' : position_)) |>
00:00:29 v #663 > > sm'.format_debug)
00:00:30 v #664 > >
00:00:30 v #665 > > ╭─[ 448.12ms - stdout ]────────────────────────────────────────────────────────╮
00:00:30 v #666 > > │ __assert_eq' / actual: "struct ('a', (Ln: 1, Col: 2))" / expected: "struct   │
00:00:30 v #667 > > │ ('a', (Ln: 1, Col: 2))"                                                      │
00:00:30 v #668 > > │                                                                              │
00:00:30 v #669 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:30 v #670 > >
00:00:30 v #671 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:30 v #672 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:30 v #673 > > │ ### any_string                                                               │
00:00:30 v #674 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:30 v #675 > >
00:00:30 v #676 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:30 v #677 > > inl any_string length : parser string = fun input, s =>
00:00:30 v #678 > >     if sm'.length input < length then
00:00:30 v #679 > >         backend_switch {
00:00:30 v #680 > >             Fsharp = fun () => $'$"parsing.any_string / unexpected end of input
00:00:30 v #681 > > / s: %A{!s}"' : string
00:00:30 v #682 > >             Python = fun () => $'f"parsing.any_string / unexpected end of input
00:00:30 v #683 > > / s: {!s}"' : string
00:00:30 v #684 > >         }
00:00:30 v #685 > >         |> Error
00:00:30 v #686 > >     else
00:00:30 v #687 > >         inl result = input |> sm'.range (am'.Start 0i32) (am'.End fun _ =>
00:00:30 v #688 > > length)
00:00:30 v #689 > >         Ok (
00:00:30 v #690 > >             result,
00:00:30 v #691 > >             input |> sm'.range (am'.Start length) (am'.End id),
00:00:30 v #692 > >             s |> update result
00:00:30 v #693 > >         )
00:00:30 v #694 > >
00:00:30 v #695 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:30 v #696 > > //// test
00:00:30 v #697 > > ///! fsharp
00:00:30 v #698 > > ///! cuda
00:00:30 v #699 > > ///! typescript
00:00:30 v #700 > >
00:00:30 v #701 > > "abcdef"
00:00:30 v #702 > > |> parse (any_string 3i32)
00:00:30 v #703 > > |> resultm.get
00:00:30 v #704 > > |> sm'.format_debug
00:00:30 v #705 > > |> _assert_eq (
00:00:30 v #706 > >     ("abc", "def", { line_text = "abc" |> sm'.string_builder; position = { line
00:00:30 v #707 > > = 1i32; col = 4i32 } })
00:00:30 v #708 > >     |> sm'.format_debug
00:00:30 v #709 > > )
00:00:32 v #710 > >
00:00:32 v #711 > > ╭─[ 2.31s - return value ]─────────────────────────────────────────────────────╮
00:00:32 v #712 > > │ .py output (Cuda):                                                           │
00:00:32 v #713 > > │ __assert_eq / actual: ('abc', 'def', abc, 1, 4) / expected: ('abc', 'def',   │
00:00:32 v #714 > > │ abc, 1, 4)                                                                   │
00:00:32 v #715 > > │                                                                              │
00:00:32 v #716 > > │ .ts output:                                                                  │
00:00:32 v #717 > > │ __assert_eq / actual: abc,def,abc,1,4 / expected: abc,def,abc,1,4            │
00:00:32 v #718 > > │                                                                              │
00:00:32 v #719 > > │                                                                              │
00:00:32 v #720 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:32 v #721 > >
00:00:32 v #722 > > ╭─[ 2.31s - stdout ]───────────────────────────────────────────────────────────╮
00:00:32 v #723 > > │ .fsx output:                                                                 │
00:00:32 v #724 > > │ __assert_eq / actual: "struct ("abc", "def", abc, 1, 4)" / expected: "struct │
00:00:32 v #725 > > │ ("abc", "def", abc, 1, 4)"                                                   │
00:00:32 v #726 > > │                                                                              │
00:00:32 v #727 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:32 v #728 > >
00:00:32 v #729 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:32 v #730 > > //// test
00:00:32 v #731 > >
00:00:32 v #732 > > "abcdef"
00:00:32 v #733 > > |> parse_ (any_string__ 3)
00:00:32 v #734 > > |> resultm.get
00:00:32 v #735 > > |> sm'.obj_to_string
00:00:32 v #736 > > |> _assert_eq' (("abc", ($'FParsec.Position (null, 0, 1, 4)' : position_)) |>
00:00:32 v #737 > > sm'.obj_to_string)
00:00:33 v #738 > >
00:00:33 v #739 > > ╭─[ 464.14ms - stdout ]────────────────────────────────────────────────────────╮
00:00:33 v #740 > > │ __assert_eq' / actual: "(abc, (Ln: 1, Col: 4))" / expected: "(abc, (Ln: 1,   │
00:00:33 v #741 > > │ Col: 4))"                                                                    │
00:00:33 v #742 > > │                                                                              │
00:00:33 v #743 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:33 v #744 > >
00:00:33 v #745 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:33 v #746 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:33 v #747 > > │ ### skip_any_string                                                          │
00:00:33 v #748 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:33 v #749 > >
00:00:33 v #750 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:33 v #751 > > inl skip_any_string length : parser () = fun input, s =>
00:00:33 v #752 > >     if sm'.length input < length then
00:00:33 v #753 > >         backend_switch {
00:00:33 v #754 > >             Fsharp = fun () => $'$"parsing.skip_any_string / unexpected end of
00:00:33 v #755 > > input / s: %A{!s}"' : string
00:00:33 v #756 > >             Python = fun () => $'f"parsing.skip_any_string / unexpected end of
00:00:33 v #757 > > input / s: {!s}"' : string
00:00:33 v #758 > >         }
00:00:33 v #759 > >         |> Error
00:00:33 v #760 > >     else
00:00:33 v #761 > >         Ok (
00:00:33 v #762 > >             (),
00:00:33 v #763 > >             input |> sm'.range (am'.Start length) (am'.End id),
00:00:33 v #764 > >             s |> update (input |> sm'.range (am'.Start 0i32) (am'.End fun _ =>
00:00:33 v #765 > > length))
00:00:33 v #766 > >         )
00:00:33 v #767 > >
00:00:33 v #768 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:33 v #769 > > //// test
00:00:33 v #770 > > ///! fsharp
00:00:33 v #771 > > ///! cuda
00:00:33 v #772 > > ///! typescript
00:00:33 v #773 > >
00:00:33 v #774 > > "abcdef"
00:00:33 v #775 > > |> parse (skip_any_string 3i32)
00:00:33 v #776 > > |> resultm.get
00:00:33 v #777 > > |> sm'.format_debug
00:00:33 v #778 > > |> _assert_eq (
00:00:33 v #779 > >     ((), "def", { line_text = "abc" |> sm'.string_builder; position = { line =
00:00:33 v #780 > > 1i32; col = 4i32 } })
00:00:33 v #781 > >     |> sm'.format_debug
00:00:33 v #782 > > )
00:00:35 v #783 > >
00:00:35 v #784 > > ╭─[ 2.11s - return value ]─────────────────────────────────────────────────────╮
00:00:35 v #785 > > │ .py output (Cuda):                                                           │
00:00:35 v #786 > > │ __assert_eq / actual: ('def', abc, 1, 4) / expected: ('def', abc, 1, 4)      │
00:00:35 v #787 > > │                                                                              │
00:00:35 v #788 > > │ .ts output:                                                                  │
00:00:35 v #789 > > │ __assert_eq / actual: def,abc,1,4 / expected: def,abc,1,4                    │
00:00:35 v #790 > > │                                                                              │
00:00:35 v #791 > > │                                                                              │
00:00:35 v #792 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:35 v #793 > >
00:00:35 v #794 > > ╭─[ 2.11s - stdout ]───────────────────────────────────────────────────────────╮
00:00:35 v #795 > > │ .fsx output:                                                                 │
00:00:35 v #796 > > │ __assert_eq / actual: "struct ("def", abc, 1, 4)" / expected: "struct        │
00:00:35 v #797 > > │ ("def", abc, 1, 4)"                                                          │
00:00:35 v #798 > > │                                                                              │
00:00:35 v #799 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:35 v #800 > >
00:00:35 v #801 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:35 v #802 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:35 v #803 > > │ ### (>>.)                                                                    │
00:00:35 v #804 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:35 v #805 > >
00:00:35 v #806 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:35 v #807 > > inl (>>.) forall t u. (a : parser t) (b : parser u) : parser u = fun input, s =>
00:00:35 v #808 > >     match a (input, s) with
00:00:35 v #809 > >     | Ok (_, rest, s) => b (rest, s)
00:00:35 v #810 > >     | Error e => Error e
00:00:36 v #811 > >
00:00:36 v #812 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:36 v #813 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:36 v #814 > > │ ### (>>.)                                                                    │
00:00:36 v #815 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:36 v #816 > >
00:00:36 v #817 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:36 v #818 > > inl (.>>) forall t u. (a : parser t) (b : parser u) : parser t = fun input, s =>
00:00:36 v #819 > >     match a (input, s) with
00:00:36 v #820 > >     | Ok (result, rest, s) =>
00:00:36 v #821 > >         b (rest, s)
00:00:36 v #822 > >         |> resultm.map fun _, rest, s =>
00:00:36 v #823 > >             result, rest, s
00:00:36 v #824 > >     | Error e => Error e
00:00:36 v #825 > >
00:00:36 v #826 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:36 v #827 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:36 v #828 > > │ ### (.>>.)                                                                   │
00:00:36 v #829 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:36 v #830 > >
00:00:36 v #831 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:36 v #832 > > inl (.>>.) forall t u. (a : parser t) (b : parser u) : parser (t * u) = fun
00:00:36 v #833 > > input, s =>
00:00:36 v #834 > >     match a (input, s) with
00:00:36 v #835 > >     | Ok (result_a, rest, s) =>
00:00:36 v #836 > >         b (rest, s)
00:00:36 v #837 > >         |> resultm.map fun result_b, rest, s =>
00:00:36 v #838 > >             (result_a, result_b), rest, s
00:00:36 v #839 > >     | Error e => Error e
00:00:37 v #840 > >
00:00:37 v #841 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:37 v #842 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:37 v #843 > > │ ### (>>%)                                                                    │
00:00:37 v #844 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:37 v #845 > >
00:00:37 v #846 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:37 v #847 > > inl (>>%) forall t u. (a : parser t) (b : u) : parser u =
00:00:37 v #848 > >     a >> resultm.map fun _, rest, s =>
00:00:37 v #849 > >         b, rest, s
00:00:37 v #850 > >
00:00:37 v #851 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:37 v #852 > > //// test
00:00:37 v #853 > > ///! fsharp
00:00:37 v #854 > > ///! cuda
00:00:37 v #855 > > ///! typescript
00:00:37 v #856 > >
00:00:37 v #857 > > "abc"
00:00:37 v #858 > > |> parse (p_char 'a' >>. p_char 'b')
00:00:37 v #859 > > |> resultm.get
00:00:37 v #860 > > |> sm'.format_debug
00:00:37 v #861 > > |> _assert_eq (
00:00:37 v #862 > >     ('b', "c", { line_text = "ab" |> sm'.string_builder; position = { line =
00:00:37 v #863 > > 1i32; col = 3i32 } })
00:00:37 v #864 > >     |> sm'.format_debug
00:00:37 v #865 > > )
00:00:37 v #866 > >
00:00:37 v #867 > > "abc\ndef\nghi"
00:00:37 v #868 > > |> parse (skip_any_string 5i32 >>. p_char 'a')
00:00:37 v #869 > > |> _assert_eq (Error "parsing.p_char / expected: 'a' / line: 2 / col: 2\ndef\n
00:00:37 v #870 > > ^\n")
00:00:39 v #871 > >
00:00:39 v #872 > > ╭─[ 2.23s - return value ]─────────────────────────────────────────────────────╮
00:00:39 v #873 > > │                                                                              │
00:00:39 v #874 > > │ .py output (Cuda):                                                           │
00:00:39 v #875 > > │ __assert_eq / actual: ('b', 'c', ab, 1, 3) / expected: ('b', 'c', ab, 1, 3)  │
00:00:39 v #876 > > │ __assert_eq / actual: US0_1(v0="parsing.p_char / expected: 'a' / line: 2 /   │
00:00:39 v #877 > > │ col: 2\ndef\n ^\n") / expected: US0_1(v0="parsing.p_char / expected: 'a' /   │
00:00:39 v #878 > > │ line: 2 / col: 2\ndef\n ^\n")                                                │
00:00:39 v #879 > > │                                                                              │
00:00:39 v #880 > > │                                                                              │
00:00:39 v #881 > > │ .ts output:                                                                  │
00:00:39 v #882 > > │ __assert_eq / actual: b,c,ab,1,3 / expected: b,c,ab,1,3                      │
00:00:39 v #883 > > │ __assert_eq / actual: US0_1 (parsing.p_char / expected: 'a' / line: 2 / col: │
00:00:39 v #884 > > │ 2                                                                            │
00:00:39 v #885 > > │ def                                                                          │
00:00:39 v #886 > > │  ^                                                                           │
00:00:39 v #887 > > │ ) / expected: US0_1 (parsing.p_char / expected: 'a' / line: 2 / col: 2       │
00:00:39 v #888 > > │ def                                                                          │
00:00:39 v #889 > > │  ^                                                                           │
00:00:39 v #890 > > │ )                                                                            │
00:00:39 v #891 > > │                                                                              │
00:00:39 v #892 > > │                                                                              │
00:00:39 v #893 > > │                                                                              │
00:00:39 v #894 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:39 v #895 > >
00:00:39 v #896 > > ╭─[ 2.23s - stdout ]───────────────────────────────────────────────────────────╮
00:00:39 v #897 > > │ .fsx output:                                                                 │
00:00:39 v #898 > > │ __assert_eq / actual: "struct ('b', "c", ab, 1, 3)" / expected: "struct      │
00:00:39 v #899 > > │ ('b', "c", ab, 1, 3)"                                                        │
00:00:39 v #900 > > │ __assert_eq / actual: US0_1 "parsing.p_char / expected: 'a' / line: 2 / col: │
00:00:39 v #901 > > │ 2                                                                            │
00:00:39 v #902 > > │ def                                                                          │
00:00:39 v #903 > > │  ^                                                                           │
00:00:39 v #904 > > │ " / expected: US0_1 "parsing.p_char / expected: 'a' / line: 2 / col: 2       │
00:00:39 v #905 > > │ def                                                                          │
00:00:39 v #906 > > │  ^                                                                           │
00:00:39 v #907 > > │ "                                                                            │
00:00:39 v #908 > > │                                                                              │
00:00:39 v #909 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:39 v #910 > >
00:00:39 v #911 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:39 v #912 > > //// test
00:00:39 v #913 > >
00:00:39 v #914 > > "abc"
00:00:39 v #915 > > |> parse_ (p_char_ 'a' >>.$ p_char_ 'b')
00:00:39 v #916 > > |> resultm.get
00:00:39 v #917 > > |> sm'.obj_to_string
00:00:39 v #918 > > |> _assert_eq' (('b', ($'FParsec.Position (null, 0, 1, 3)' : position_)) |>
00:00:39 v #919 > > sm'.obj_to_string)
00:00:40 v #920 > >
00:00:40 v #921 > > ╭─[ 453.12ms - stdout ]────────────────────────────────────────────────────────╮
00:00:40 v #922 > > │ __assert_eq' / actual: "(b, (Ln: 1, Col: 3))" / expected: "(b, (Ln: 1, Col:  │
00:00:40 v #923 > > │ 3))"                                                                         │
00:00:40 v #924 > > │                                                                              │
00:00:40 v #925 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:40 v #926 > >
00:00:40 v #927 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:40 v #928 > > //// test
00:00:40 v #929 > >
00:00:40 v #930 > > "abc\ndef\nghi"
00:00:40 v #931 > > |> parse_ (skip_any_string_ 5 >>.$ p_char_ 'a')
00:00:40 v #932 > > |> resultm.unwrap_err
00:00:40 v #933 > > |> sm'.obj_to_string
00:00:40 v #934 > > |> sm'.replace "\r\n" "\n"
00:00:40 v #935 > > |> _assert_eq "(Error in Ln: 2 Col: 2\ndef\n ^\nExpecting: 'a'\n, Error in Ln: 2
00:00:40 v #936 > > Col: 2\nExpecting: 'a'\n)"
00:00:40 v #937 > >
00:00:40 v #938 > > ╭─[ 498.44ms - stdout ]────────────────────────────────────────────────────────╮
00:00:40 v #939 > > │ __assert_eq / actual: "(Error in Ln: 2 Col: 2                                │
00:00:40 v #940 > > │ def                                                                          │
00:00:40 v #941 > > │  ^                                                                           │
00:00:40 v #942 > > │ Expecting: 'a'                                                               │
00:00:40 v #943 > > │ , Error in Ln: 2 Col: 2                                                      │
00:00:40 v #944 > > │ Expecting: 'a'                                                               │
00:00:40 v #945 > > │ )" / expected: "(Error in Ln: 2 Col: 2                                       │
00:00:40 v #946 > > │ def                                                                          │
00:00:40 v #947 > > │  ^                                                                           │
00:00:40 v #948 > > │ Expecting: 'a'                                                               │
00:00:40 v #949 > > │ , Error in Ln: 2 Col: 2                                                      │
00:00:40 v #950 > > │ Expecting: 'a'                                                               │
00:00:40 v #951 > > │ )"                                                                           │
00:00:40 v #952 > > │                                                                              │
00:00:40 v #953 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:40 v #954 > >
00:00:40 v #955 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:40 v #956 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:40 v #957 > > │ ### none_of                                                                  │
00:00:40 v #958 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:40 v #959 > >
00:00:40 v #960 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:40 v #961 > > inl none_of (chars : list char) : parser char = function
00:00:40 v #962 > >     | "", s =>
00:00:40 v #963 > >         inl chars = chars |> listm'.box |> listm'.to_array'
00:00:40 v #964 > >         backend_switch {
00:00:40 v #965 > >             Fsharp = fun () => $'$"parsing.none_of / unexpected end of input
00:00:40 v #966 > > chars: %A{!chars} / s: %A{!s}"' : string
00:00:40 v #967 > >             Python = fun () => $'f"parsing.none_of / unexpected end of input
00:00:40 v #968 > > chars: {!chars} / s: {!s}"' : string
00:00:40 v #969 > >         }
00:00:40 v #970 > >         |> Error
00:00:40 v #971 > >     | x, s =>
00:00:40 v #972 > >         inl first_char = x |> sm'.index 0i32
00:00:40 v #973 > >         if chars |> listm'.exists' ((=) first_char) |> not then
00:00:40 v #974 > >             Ok (
00:00:40 v #975 > >                 first_char,
00:00:40 v #976 > >                 x |> sm'.range (am'.Start 1i32) (am'.End id),
00:00:40 v #977 > >                 s |> update (first_char |> sm'.obj_to_string)
00:00:40 v #978 > >             )
00:00:40 v #979 > >         else
00:00:40 v #980 > >             inl chars = chars |> listm'.box |> listm'.to_array'
00:00:40 v #981 > >             backend_switch {
00:00:40 v #982 > >                 Fsharp = fun () => $'$"parsing.none_of / unexpected char:
00:00:40 v #983 > > \'{!first_char}\' / chars: %A{!chars} / s: %A{!s}"' : string
00:00:40 v #984 > >                 Python = fun () => $'f"parsing.none_of / unexpected char:
00:00:40 v #985 > > \'{!first_char}\' / chars: {!chars} / s: {!s}"' : string
00:00:40 v #986 > >             }
00:00:40 v #987 > >             |> Error
00:00:41 v #988 > >
00:00:41 v #989 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:41 v #990 > > //// test
00:00:41 v #991 > > ///! fsharp
00:00:41 v #992 > > ///! cuda
00:00:41 v #993 > > ///! typescript
00:00:41 v #994 > >
00:00:41 v #995 > > "abc"
00:00:41 v #996 > > |> parse (none_of [['a'; 'b'; 'c']])
00:00:41 v #997 > > |> _assert_eq (
00:00:41 v #998 > >     backend_switch {
00:00:41 v #999 > >         Fsharp = fun () =>
00:00:41 v #1000 > >             run_target function
00:00:41 v #1001 > >             | TypeScript _ => fun () => "parsing.none_of / unexpected char:
00:00:41 v #1002 > > \'a\' / chars: a,b,c / s: ,1,1" : string
00:00:41 v #1003 > >             | _ => fun () => join "parsing.none_of / unexpected char: \'a\'
00:00:41 v #1004 > > chars: [[|'a'; 'b'; 'c'|]] / s: struct (, 1, 1)" : string
00:00:41 v #1005 > >         Python = fun () => "parsing.none_of / unexpected char: \'a\' / chars:
00:00:41 v #1006 > > [['a' 'b' 'c']] / s: (, 1, 1)" : string
00:00:41 v #1007 > >     }
00:00:41 v #1008 > >     |> Error
00:00:41 v #1009 > > )
00:00:41 v #1010 > >
00:00:41 v #1011 > > "def"
00:00:41 v #1012 > > |> parse (none_of [['a'; 'b'; 'c']])
00:00:41 v #1013 > > |> resultm.get
00:00:41 v #1014 > > |> sm'.format_debug
00:00:41 v #1015 > > |> _assert_eq (
00:00:41 v #1016 > >     ('d', "ef", { line_text = "d" |> sm'.string_builder; position = { line =
00:00:41 v #1017 > > 1i32; col = 2i32 } })
00:00:41 v #1018 > >     |> sm'.format_debug
00:00:41 v #1019 > > )
00:00:43 v #1020 > >
00:00:43 v #1021 > > ╭─[ 2.18s - return value ]─────────────────────────────────────────────────────╮
00:00:43 v #1022 > > │                                                                              │
00:00:43 v #1023 > > │ .py output (Cuda):                                                           │
00:00:43 v #1024 > > │ __assert_eq / actual: US0_1(v0="parsing.none_of / unexpected char: 'a' /     │
00:00:43 v #1025 > > │ chars: ['a' 'b' 'c'] / s: (, 1, 1)") / expected: US0_1(v0="parsing.none_of / │
00:00:43 v #1026 > > │ unexpected char: 'a' / chars: ['a' 'b' 'c'] / s: (, 1, 1)")                  │
00:00:43 v #1027 > > │ __assert_eq / actual: ('d', 'ef', d, 1, 2) / expected: ('d', 'ef', d, 1, 2)  │
00:00:43 v #1028 > > │                                                                              │
00:00:43 v #1029 > > │                                                                              │
00:00:43 v #1030 > > │ .ts output:                                                                  │
00:00:43 v #1031 > > │ __assert_eq / actual: US0_1 (parsing.none_of / unexpected char: 'a' / chars: │
00:00:43 v #1032 > > │ a,b,c / s: ,1,1) / expected: US0_1 (parsing.none_of / unexpected char: 'a' / │
00:00:43 v #1033 > > │ chars: a,b,c / s: ,1,1)                                                      │
00:00:43 v #1034 > > │ __assert_eq / actual: d,ef,d,1,2 / expected: d,ef,d,1,2                      │
00:00:43 v #1035 > > │                                                                              │
00:00:43 v #1036 > > │                                                                              │
00:00:43 v #1037 > > │                                                                              │
00:00:43 v #1038 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:43 v #1039 > >
00:00:43 v #1040 > > ╭─[ 2.19s - stdout ]───────────────────────────────────────────────────────────╮
00:00:43 v #1041 > > │ .fsx output:                                                                 │
00:00:43 v #1042 > > │ __assert_eq / actual: US0_1                                                  │
00:00:43 v #1043 > > │   "parsing.none_of / unexpected char: 'a' / chars: [|'a'; 'b'; 'c'|] / s:    │
00:00:43 v #1044 > > │ struct (, 1, 1)" / expected: US0_1                                           │
00:00:43 v #1045 > > │   "parsing.none_of / unexpected char: 'a' / chars: [|'a'; 'b'; 'c'|] / s:    │
00:00:43 v #1046 > > │ struct (, 1, 1)"                                                             │
00:00:43 v #1047 > > │ __assert_eq / actual: "struct ('d', "ef", d, 1, 2)" / expected: "struct      │
00:00:43 v #1048 > > │ ('d', "ef", d, 1, 2)"                                                        │
00:00:43 v #1049 > > │                                                                              │
00:00:43 v #1050 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:43 v #1051 > >
00:00:43 v #1052 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:43 v #1053 > > //// test
00:00:43 v #1054 > >
00:00:43 v #1055 > > "abc"
00:00:43 v #1056 > > |> parse_ (none_of_ [['a'; 'b'; 'c']])
00:00:43 v #1057 > > |> resultm.unwrap_err
00:00:43 v #1058 > > |> sm'.obj_to_string
00:00:43 v #1059 > > |> sm'.replace "\r\n" "\n"
00:00:43 v #1060 > > |> _assert_eq ($'"(Error in Ln: 1 Col: 1\nabc\n^\nExpecting: any char not in
00:00:43 v #1061 > > ‘abc’\n, Error in Ln: 1 Col: 1\nExpecting: any char not in ‘abc’\n)"')
00:00:43 v #1062 > >
00:00:43 v #1063 > > "def"
00:00:43 v #1064 > > |> parse_ (none_of_ [['a'; 'b'; 'c']])
00:00:43 v #1065 > > |> resultm.get
00:00:43 v #1066 > > |> sm'.obj_to_string
00:00:43 v #1067 > > |> _assert_eq' (('d', ($'FParsec.Position (null, 0, 1, 2)' : position_)) |>
00:00:43 v #1068 > > sm'.obj_to_string)
00:00:44 v #1069 > >
00:00:44 v #1070 > > ╭─[ 473.93ms - stdout ]────────────────────────────────────────────────────────╮
00:00:44 v #1071 > > │ __assert_eq / actual: "(Error in Ln: 1 Col: 1                                │
00:00:44 v #1072 > > │ abc                                                                          │
00:00:44 v #1073 > > │ ^                                                                            │
00:00:44 v #1074 > > │ Expecting: any char not in ‘abc’                                             │
00:00:44 v #1075 > > │ , Error in Ln: 1 Col: 1                                                      │
00:00:44 v #1076 > > │ Expecting: any char not in ‘abc’                                             │
00:00:44 v #1077 > > │ )" / expected: "(Error in Ln: 1 Col: 1                                       │
00:00:44 v #1078 > > │ abc                                                                          │
00:00:44 v #1079 > > │ ^                                                                            │
00:00:44 v #1080 > > │ Expecting: any char not in ‘abc’                                             │
00:00:44 v #1081 > > │ , Error in Ln: 1 Col: 1                                                      │
00:00:44 v #1082 > > │ Expecting: any char not in ‘abc’                                             │
00:00:44 v #1083 > > │ )"                                                                           │
00:00:44 v #1084 > > │ __assert_eq' / actual: "(d, (Ln: 1, Col: 2))" / expected: "(d, (Ln: 1, Col:  │
00:00:44 v #1085 > > │ 2))"                                                                         │
00:00:44 v #1086 > > │                                                                              │
00:00:44 v #1087 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:44 v #1088 > >
00:00:44 v #1089 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:44 v #1090 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:44 v #1091 > > │ ### (<|>)                                                                    │
00:00:44 v #1092 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:44 v #1093 > >
00:00:44 v #1094 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:44 v #1095 > > inl (<|>) forall t. (a : parser t) (b : parser t) : parser t = fun input, s =>
00:00:44 v #1096 > >     match a (input, s) with
00:00:44 v #1097 > >     | Ok _ as result => result
00:00:44 v #1098 > >     | Error _ => b (input, s)
00:00:44 v #1099 > >
00:00:44 v #1100 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:44 v #1101 > > //// test
00:00:44 v #1102 > > ///! fsharp
00:00:44 v #1103 > > ///! cuda
00:00:44 v #1104 > > ///! typescript
00:00:44 v #1105 > >
00:00:44 v #1106 > > "abc"
00:00:44 v #1107 > > |> parse (p_char 'a' <|> p_char 'b')
00:00:44 v #1108 > > |> resultm.get
00:00:44 v #1109 > > |> sm'.format_debug
00:00:44 v #1110 > > |> _assert_eq (
00:00:44 v #1111 > >     ('a', "bc", { line_text = "a" |> sm'.string_builder; position = { line =
00:00:44 v #1112 > > 1i32; col = 2i32 } })
00:00:44 v #1113 > >     |> sm'.format_debug
00:00:44 v #1114 > > )
00:00:44 v #1115 > >
00:00:44 v #1116 > > "cba"
00:00:44 v #1117 > > |> parse (p_char 'a' <|> p_char 'b')
00:00:44 v #1118 > > |> _assert_eq (Error "parsing.p_char / expected: 'b' / line: 1 / col:
00:00:44 v #1119 > > 1\ncba\n^\n")
00:00:46 v #1120 > >
00:00:46 v #1121 > > ╭─[ 2.26s - return value ]─────────────────────────────────────────────────────╮
00:00:46 v #1122 > > │                                                                              │
00:00:46 v #1123 > > │ .py output (Cuda):                                                           │
00:00:46 v #1124 > > │ __assert_eq / actual: ('a', 'bc', a, 1, 2) / expected: ('a', 'bc', a, 1, 2)  │
00:00:46 v #1125 > > │ __assert_eq / actual: US0_1(v0="parsing.p_char / expected: 'b' / line: 1 /   │
00:00:46 v #1126 > > │ col: 1\ncba\n^\n") / expected: US0_1(v0="parsing.p_char / expected: 'b' /    │
00:00:46 v #1127 > > │ line: 1 / col: 1\ncba\n^\n")                                                 │
00:00:46 v #1128 > > │                                                                              │
00:00:46 v #1129 > > │                                                                              │
00:00:46 v #1130 > > │ .ts output:                                                                  │
00:00:46 v #1131 > > │ __assert_eq / actual: a,bc,a,1,2 / expected: a,bc,a,1,2                      │
00:00:46 v #1132 > > │ __assert_eq / actual: US0_1 (parsing.p_char / expected: 'b' / line: 1 / col: │
00:00:46 v #1133 > > │ 1                                                                            │
00:00:46 v #1134 > > │ cba                                                                          │
00:00:46 v #1135 > > │ ^                                                                            │
00:00:46 v #1136 > > │ ) / expected: US0_1 (parsing.p_char / expected: 'b' / line: 1 / col: 1       │
00:00:46 v #1137 > > │ cba                                                                          │
00:00:46 v #1138 > > │ ^                                                                            │
00:00:46 v #1139 > > │ )                                                                            │
00:00:46 v #1140 > > │                                                                              │
00:00:46 v #1141 > > │                                                                              │
00:00:46 v #1142 > > │                                                                              │
00:00:46 v #1143 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:46 v #1144 > >
00:00:46 v #1145 > > ╭─[ 2.27s - stdout ]───────────────────────────────────────────────────────────╮
00:00:46 v #1146 > > │ .fsx output:                                                                 │
00:00:46 v #1147 > > │ __assert_eq / actual: "struct ('a', "bc", a, 1, 2)" / expected: "struct      │
00:00:46 v #1148 > > │ ('a', "bc", a, 1, 2)"                                                        │
00:00:46 v #1149 > > │ __assert_eq / actual: US0_1 "parsing.p_char / expected: 'b' / line: 1 / col: │
00:00:46 v #1150 > > │ 1                                                                            │
00:00:46 v #1151 > > │ cba                                                                          │
00:00:46 v #1152 > > │ ^                                                                            │
00:00:46 v #1153 > > │ " / expected: US0_1 "parsing.p_char / expected: 'b' / line: 1 / col: 1       │
00:00:46 v #1154 > > │ cba                                                                          │
00:00:46 v #1155 > > │ ^                                                                            │
00:00:46 v #1156 > > │ "                                                                            │
00:00:46 v #1157 > > │                                                                              │
00:00:46 v #1158 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:46 v #1159 > >
00:00:46 v #1160 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:46 v #1161 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:46 v #1162 > > │ ### (|>>)                                                                    │
00:00:46 v #1163 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:46 v #1164 > >
00:00:46 v #1165 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:46 v #1166 > > inl (|>>) p f : parser _ =
00:00:46 v #1167 > >     p >> resultm.map fun result, rest =>
00:00:46 v #1168 > >         f result, rest
00:00:47 v #1169 > >
00:00:47 v #1170 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:47 v #1171 > > //// test
00:00:47 v #1172 > > ///! fsharp
00:00:47 v #1173 > > ///! cuda
00:00:47 v #1174 > > ///! typescript
00:00:47 v #1175 > >
00:00:47 v #1176 > > "abc"
00:00:47 v #1177 > > |> parse (p_char 'a' |>> sm'.char_to_upper)
00:00:47 v #1178 > > |> resultm.get
00:00:47 v #1179 > > |> sm'.format_debug
00:00:47 v #1180 > > |> _assert_eq (
00:00:47 v #1181 > >     ('A', "bc", { line_text = "a" |> sm'.string_builder; position = { line =
00:00:47 v #1182 > > 1i32; col = 2i32 } })
00:00:47 v #1183 > >     |> sm'.format_debug
00:00:47 v #1184 > > )
00:00:49 v #1185 > >
00:00:49 v #1186 > > ╭─[ 2.08s - return value ]─────────────────────────────────────────────────────╮
00:00:49 v #1187 > > │ .py output (Cuda):                                                           │
00:00:49 v #1188 > > │ __assert_eq / actual: ('A', 'bc', a, 1, 2) / expected: ('A', 'bc', a, 1, 2)  │
00:00:49 v #1189 > > │                                                                              │
00:00:49 v #1190 > > │ .ts output:                                                                  │
00:00:49 v #1191 > > │ __assert_eq / actual: A,bc,a,1,2 / expected: A,bc,a,1,2                      │
00:00:49 v #1192 > > │                                                                              │
00:00:49 v #1193 > > │                                                                              │
00:00:49 v #1194 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:49 v #1195 > >
00:00:49 v #1196 > > ╭─[ 2.08s - stdout ]───────────────────────────────────────────────────────────╮
00:00:49 v #1197 > > │ .fsx output:                                                                 │
00:00:49 v #1198 > > │ __assert_eq / actual: "struct ('A', "bc", a, 1, 2)" / expected: "struct      │
00:00:49 v #1199 > > │ ('A', "bc", a, 1, 2)"                                                        │
00:00:49 v #1200 > > │                                                                              │
00:00:49 v #1201 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:49 v #1202 > >
00:00:49 v #1203 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:49 v #1204 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:49 v #1205 > > │ ### many                                                                     │
00:00:49 v #1206 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:49 v #1207 > >
00:00:49 v #1208 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:49 v #1209 > > inl many p : parser (list _) = fun input =>
00:00:49 v #1210 > >     let rec loop acc input =
00:00:49 v #1211 > >         match p input with
00:00:49 v #1212 > >         | Ok (result, rest) => loop (result :: acc) rest
00:00:49 v #1213 > >         | Error _ => Ok (acc |> listm.rev, input)
00:00:49 v #1214 > >     loop [[]] input
00:00:49 v #1215 > >
00:00:49 v #1216 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:49 v #1217 > > //// test
00:00:49 v #1218 > > ///! fsharp
00:00:49 v #1219 > > ///! cuda
00:00:49 v #1220 > > ///! typescript
00:00:49 v #1221 > >
00:00:49 v #1222 > > "aaabbc"
00:00:49 v #1223 > > |> parse (many (p_char 'a' <|> p_char 'b'))
00:00:49 v #1224 > > |> resultm.get
00:00:49 v #1225 > > |> sm'.format_debug
00:00:49 v #1226 > > |> _assert_eq (
00:00:49 v #1227 > >     (
00:00:49 v #1228 > >         [['a'; 'a'; 'a'; 'b'; 'b']],
00:00:49 v #1229 > >         "c",
00:00:49 v #1230 > >         { line_text = "aaabb" |> sm'.string_builder; position = { line = 1i32;
00:00:49 v #1231 > > col = 6i32 } }
00:00:49 v #1232 > >     )
00:00:49 v #1233 > >     |> sm'.format_debug
00:00:49 v #1234 > > )
00:00:51 v #1235 > >
00:00:51 v #1236 > > ╭─[ 2.32s - return value ]─────────────────────────────────────────────────────╮
00:00:51 v #1237 > > │ .py output (Cuda):                                                           │
00:00:51 v #1238 > > │ __assert_eq / actual: (UH0_1(v0='a', v1=UH0_1(v0='a', v1=UH0_1(v0='a',       │
00:00:51 v #1239 > > │ v1=UH0_1(v0='b', v1=UH0_1(v0='b', v1=UH0_0()))))), 'c', aaabb, 1, 6) /       │
00:00:51 v #1240 > > │ expected: (UH0_1(v0='a', v1=UH0_1(v0='a', v1=UH0_1(v0='a', v1=UH0_1(v0='b',  │
00:00:51 v #1241 > > │ v1=UH0_1(v0='b', v1=UH0_0()))))), 'c', aaabb, 1, 6)                          │
00:00:51 v #1242 > > │                                                                              │
00:00:51 v #1243 > > │ .ts output:                                                                  │
00:00:51 v #1244 > > │ __assert_eq / actual: UH0_1 (a, UH0_1 (a, UH0_1 (a, UH0_1 (b, UH0_1 (b,      │
00:00:51 v #1245 > > │ UH0_0))))),c,aaabb,1,6 / expected: UH0_1 (a, UH0_1 (a, UH0_1 (a, UH0_1 (b,   │
00:00:51 v #1246 > > │ UH0_1 (b, UH0_0))))),c,aaabb,1,6                                             │
00:00:51 v #1247 > > │                                                                              │
00:00:51 v #1248 > > │                                                                              │
00:00:51 v #1249 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:51 v #1250 > >
00:00:51 v #1251 > > ╭─[ 2.32s - stdout ]───────────────────────────────────────────────────────────╮
00:00:51 v #1252 > > │ .fsx output:                                                                 │
00:00:51 v #1253 > > │ __assert_eq / actual: "struct (UH0_1 ('a', UH0_1 ('a', UH0_1 ('a', UH0_1     │
00:00:51 v #1254 > > │ ('b', UH0_1 ('b', UH0_0))))),                                                │
00:00:51 v #1255 > > │         "c", aaabb, 1, 6)" / expected: "struct (UH0_1 ('a', UH0_1 ('a',      │
00:00:51 v #1256 > > │ UH0_1 ('a', UH0_1 ('b', UH0_1 ('b', UH0_0))))),                              │
00:00:51 v #1257 > > │         "c", aaabb, 1, 6)"                                                   │
00:00:51 v #1258 > > │                                                                              │
00:00:51 v #1259 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:51 v #1260 > >
00:00:51 v #1261 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:51 v #1262 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:51 v #1263 > > │ ### many1_chars                                                              │
00:00:51 v #1264 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:51 v #1265 > >
00:00:51 v #1266 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:51 v #1267 > > inl many1_chars p : parser string =
00:00:51 v #1268 > >     p >> resultm.map fun first_result, rest =>
00:00:51 v #1269 > >         let rec loop acc input =
00:00:51 v #1270 > >             match p input with
00:00:51 v #1271 > >             | Ok (result, rest) => loop (acc +. sm'.obj_to_string result) rest
00:00:51 v #1272 > >             | Error _ => acc, input
00:00:51 v #1273 > >         loop (first_result |> sm'.obj_to_string) rest
00:00:52 v #1274 > >
00:00:52 v #1275 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:52 v #1276 > > //// test
00:00:52 v #1277 > > ///! fsharp
00:00:52 v #1278 > > ///! cuda
00:00:52 v #1279 > > ///! typescript
00:00:52 v #1280 > >
00:00:52 v #1281 > > "aaabbc"
00:00:52 v #1282 > > |> parse (many1_chars (p_char 'a' <|> p_char 'b'))
00:00:52 v #1283 > > |> resultm.get
00:00:52 v #1284 > > |> sm'.format_debug
00:00:52 v #1285 > > |> _assert_eq (
00:00:52 v #1286 > >     ("aaabb", "c", { line_text = "aaabb" |> sm'.string_builder; position = {
00:00:52 v #1287 > > line = 1i32; col = 6i32 } })
00:00:52 v #1288 > >     |> sm'.format_debug
00:00:52 v #1289 > > )
00:00:54 v #1290 > >
00:00:54 v #1291 > > ╭─[ 2.27s - return value ]─────────────────────────────────────────────────────╮
00:00:54 v #1292 > > │ .py output (Cuda):                                                           │
00:00:54 v #1293 > > │ __assert_eq / actual: ('aaabb', 'c', aaabb, 1, 6) / expected: ('aaabb', 'c', │
00:00:54 v #1294 > > │ aaabb, 1, 6)                                                                 │
00:00:54 v #1295 > > │                                                                              │
00:00:54 v #1296 > > │ .ts output:                                                                  │
00:00:54 v #1297 > > │ __assert_eq / actual: aaabb,c,aaabb,1,6 / expected: aaabb,c,aaabb,1,6        │
00:00:54 v #1298 > > │                                                                              │
00:00:54 v #1299 > > │                                                                              │
00:00:54 v #1300 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:54 v #1301 > >
00:00:54 v #1302 > > ╭─[ 2.27s - stdout ]───────────────────────────────────────────────────────────╮
00:00:54 v #1303 > > │ .fsx output:                                                                 │
00:00:54 v #1304 > > │ __assert_eq / actual: "struct ("aaabb", "c", aaabb, 1, 6)" / expected:       │
00:00:54 v #1305 > > │ "struct ("aaabb", "c", aaabb, 1, 6)"                                         │
00:00:54 v #1306 > > │                                                                              │
00:00:54 v #1307 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:54 v #1308 > >
00:00:54 v #1309 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:54 v #1310 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:54 v #1311 > > │ ### many_chars                                                               │
00:00:54 v #1312 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:54 v #1313 > >
00:00:54 v #1314 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:54 v #1315 > > inl many_chars p : parser string = fun input =>
00:00:54 v #1316 > >     match many1_chars p input with
00:00:54 v #1317 > >     | Ok (result, rest) => Ok (result, rest)
00:00:54 v #1318 > >     | Error e => Ok ("", input)
00:00:55 v #1319 > >
00:00:55 v #1320 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:55 v #1321 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:55 v #1322 > > │ ### many_chars_till                                                          │
00:00:55 v #1323 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:55 v #1324 > >
00:00:55 v #1325 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:55 v #1326 > > inl many_chars_till p end_p : parser string = fun input =>
00:00:55 v #1327 > >     match end_p input with
00:00:55 v #1328 > >     | Ok _ => Ok ("", input)
00:00:55 v #1329 > >     | Error _ => many_chars p input
00:00:55 v #1330 > >
00:00:55 v #1331 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:55 v #1332 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:55 v #1333 > > │ ### many1                                                                    │
00:00:55 v #1334 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:55 v #1335 > >
00:00:55 v #1336 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:55 v #1337 > > inl many1 p : parser (list _) =
00:00:55 v #1338 > >     p >> resultm.map fun first_result, rest =>
00:00:55 v #1339 > >         let rec loop acc input =
00:00:55 v #1340 > >             match p input with
00:00:55 v #1341 > >             | Ok (result, rest) => loop (result :: acc) rest
00:00:55 v #1342 > >             | Error _ => acc |> listm.rev, input
00:00:55 v #1343 > >         loop [[ first_result ]] rest
00:00:56 v #1344 > >
00:00:56 v #1345 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:56 v #1346 > > //// test
00:00:56 v #1347 > > ///! fsharp
00:00:56 v #1348 > > ///! cuda
00:00:56 v #1349 > > ///! typescript
00:00:56 v #1350 > >
00:00:56 v #1351 > > "aaabbc"
00:00:56 v #1352 > > |> parse (many1 (p_char 'a' <|> p_char 'b'))
00:00:56 v #1353 > > |> resultm.get
00:00:56 v #1354 > > |> sm'.format_debug
00:00:56 v #1355 > > |> _assert_eq (
00:00:56 v #1356 > >     ([['a'; 'a'; 'a'; 'b'; 'b']], "c", { line_text = "aaabb" |>
00:00:56 v #1357 > > sm'.string_builder; position = { line = 1i32; col = 6i32 } })
00:00:56 v #1358 > >     |> sm'.format_debug
00:00:56 v #1359 > > )
00:00:56 v #1360 > >
00:00:56 v #1361 > > "bcc"
00:00:56 v #1362 > > |> parse (many1 (p_char 'a' <|> p_char 'b'))
00:00:56 v #1363 > > |> resultm.get
00:00:56 v #1364 > > |> sm'.format_debug
00:00:56 v #1365 > > |> _assert_eq (
00:00:56 v #1366 > >     ([['b']], "cc", { line_text = "b" |> sm'.string_builder; position = { line =
00:00:56 v #1367 > > 1i32; col = 2i32 } })
00:00:56 v #1368 > >     |> sm'.format_debug
00:00:56 v #1369 > > )
00:00:56 v #1370 > >
00:00:56 v #1371 > > "cba"
00:00:56 v #1372 > > |> parse (many1 (p_char 'a' <|> p_char 'b'))
00:00:56 v #1373 > > |> _assert_eq (Error "parsing.p_char / expected: 'b' / line: 1 / col:
00:00:56 v #1374 > > 1\ncba\n^\n")
00:00:58 v #1375 > >
00:00:58 v #1376 > > ╭─[ 2.40s - return value ]─────────────────────────────────────────────────────╮
00:00:58 v #1377 > > │                                                                              │
00:00:58 v #1378 > > │ .py output (Cuda):                                                           │
00:00:58 v #1379 > > │ __assert_eq / actual: (UH0_1(v0='a', v1=UH0_1(v0='a', v1=UH0_1(v0='a',       │
00:00:58 v #1380 > > │ v1=UH0_1(v0='b', v1=UH0_1(v0='b', v1=UH0_0()))))), 'c', aaabb, 1, 6) /       │
00:00:58 v #1381 > > │ expected: (UH0_1(v0='a', v1=UH0_1(v0='a', v1=UH0_1(v0='a', v1=UH0_1(v0='b',  │
00:00:58 v #1382 > > │ v1=UH0_1(v0='b', v1=UH0_0()))))), 'c', aaabb, 1, 6)                          │
00:00:58 v #1383 > > │ __assert_eq / actual: (UH0_1(v0='b', v1=UH0_0()), 'cc', b, 1, 2) / expected: │
00:00:58 v #1384 > > │ (UH0_1(v0='b', v1=UH0_0()), 'cc', b, 1, 2)                                   │
00:00:58 v #1385 > > │ __assert_eq / actual: US1_1(v0="parsing.p_char / expected: 'b' / line: 1 /   │
00:00:58 v #1386 > > │ col: 1\ncba\n^\n") / expected: US1_1(v0="parsing.p_char / expected: 'b' /    │
00:00:58 v #1387 > > │ line: 1 / col: 1\ncba\n^\n")                                                 │
00:00:58 v #1388 > > │                                                                              │
00:00:58 v #1389 > > │                                                                              │
00:00:58 v #1390 > > │ .ts output:                                                                  │
00:00:58 v #1391 > > │ __assert_eq / actual: UH0_1 (a, UH0_1 (a, UH0_1 (a, UH0_1 (b, UH0_1 (b,      │
00:00:58 v #1392 > > │ UH0_0))))),c,aaabb,1,6 / expected: UH0_1 (a, UH0_1 (a, UH0_1 (a, UH0_1 (b,   │
00:00:58 v #1393 > > │ UH0_1 (b, UH0_0))))),c,aaabb,1,6                                             │
00:00:58 v #1394 > > │ __assert_eq / actual: UH0_1 (b, UH0_0),cc,b,1,2 / expected: UH0_1 (b,        │
00:00:58 v #1395 > > │ UH0_0),cc,b,1,2                                                              │
00:00:58 v #1396 > > │ __assert_eq / actual: US1_1 (parsing.p_char / expected: 'b' / line: 1 / col: │
00:00:58 v #1397 > > │ 1                                                                            │
00:00:58 v #1398 > > │ cba                                                                          │
00:00:58 v #1399 > > │ ^                                                                            │
00:00:58 v #1400 > > │ ) / expected: US1_1 (parsing.p_char / expected: 'b' / line: 1 / col: 1       │
00:00:58 v #1401 > > │ cba                                                                          │
00:00:58 v #1402 > > │ ^                                                                            │
00:00:58 v #1403 > > │ )                                                                            │
00:00:58 v #1404 > > │                                                                              │
00:00:58 v #1405 > > │                                                                              │
00:00:58 v #1406 > > │                                                                              │
00:00:58 v #1407 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:58 v #1408 > >
00:00:58 v #1409 > > ╭─[ 2.40s - stdout ]───────────────────────────────────────────────────────────╮
00:00:58 v #1410 > > │ .fsx output:                                                                 │
00:00:58 v #1411 > > │ __assert_eq / actual: "struct (UH0_1 ('a', UH0_1 ('a', UH0_1 ('a', UH0_1     │
00:00:58 v #1412 > > │ ('b', UH0_1 ('b', UH0_0))))),                                                │
00:00:58 v #1413 > > │         "c", aaabb, 1, 6)" / expected: "struct (UH0_1 ('a', UH0_1 ('a',      │
00:00:58 v #1414 > > │ UH0_1 ('a', UH0_1 ('b', UH0_1 ('b', UH0_0))))),                              │
00:00:58 v #1415 > > │         "c", aaabb, 1, 6)"                                                   │
00:00:58 v #1416 > > │ __assert_eq / actual: "struct (UH0_1 ('b', UH0_0), "cc", b, 1, 2)" /         │
00:00:58 v #1417 > > │ expected: "struct (UH0_1 ('b', UH0_0), "cc", b, 1, 2)"                       │
00:00:58 v #1418 > > │ __assert_eq / actual: US1_1 "parsing.p_char / expected: 'b' / line: 1 / col: │
00:00:58 v #1419 > > │ 1                                                                            │
00:00:58 v #1420 > > │ cba                                                                          │
00:00:58 v #1421 > > │ ^                                                                            │
00:00:58 v #1422 > > │ " / expected: US1_1 "parsing.p_char / expected: 'b' / line: 1 / col: 1       │
00:00:58 v #1423 > > │ cba                                                                          │
00:00:58 v #1424 > > │ ^                                                                            │
00:00:58 v #1425 > > │ "                                                                            │
00:00:58 v #1426 > > │                                                                              │
00:00:58 v #1427 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:58 v #1428 > >
00:00:58 v #1429 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:58 v #1430 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:58 v #1431 > > │ ### many1_strings                                                            │
00:00:58 v #1432 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:58 v #1433 > >
00:00:58 v #1434 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:58 v #1435 > > inl many1_strings p : parser string =
00:00:58 v #1436 > >     many1 p >> resultm.map fun results, rest =>
00:00:58 v #1437 > >         results
00:00:58 v #1438 > >         |> listm.map sm'.obj_to_string
00:00:58 v #1439 > >         |> listm'.box
00:00:58 v #1440 > >         |> seq.of_list'
00:00:58 v #1441 > >         |> sm'.concat "",
00:00:58 v #1442 > >         rest
00:00:58 v #1443 > >
00:00:58 v #1444 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:58 v #1445 > > //// test
00:00:58 v #1446 > > ///! fsharp
00:00:58 v #1447 > > ///! cuda
00:00:58 v #1448 > > ///! typescript
00:00:58 v #1449 > >
00:00:58 v #1450 > > "aaabbc"
00:00:58 v #1451 > > |> parse (many1_strings (p_char 'a' <|> p_char 'b'))
00:00:58 v #1452 > > |> resultm.get
00:00:58 v #1453 > > |> sm'.format_debug
00:00:58 v #1454 > > |> _assert_eq (
00:00:58 v #1455 > >     ("aaabb", "c", { line_text = "aaabb" |> sm'.string_builder; position = {
00:00:58 v #1456 > > line = 1i32; col = 6i32 } })
00:00:58 v #1457 > >     |> sm'.format_debug
00:00:58 v #1458 > > )
00:01:01 v #1459 > >
00:01:01 v #1460 > > ╭─[ 2.36s - return value ]─────────────────────────────────────────────────────╮
00:01:01 v #1461 > > │ .py output (Cuda):                                                           │
00:01:01 v #1462 > > │ __assert_eq / actual: ('aaabb', 'c', aaabb, 1, 6) / expected: ('aaabb', 'c', │
00:01:01 v #1463 > > │ aaabb, 1, 6)                                                                 │
00:01:01 v #1464 > > │                                                                              │
00:01:01 v #1465 > > │ .ts output:                                                                  │
00:01:01 v #1466 > > │ __assert_eq / actual: aaabb,c,aaabb,1,6 / expected: aaabb,c,aaabb,1,6        │
00:01:01 v #1467 > > │                                                                              │
00:01:01 v #1468 > > │                                                                              │
00:01:01 v #1469 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:01 v #1470 > >
00:01:01 v #1471 > > ╭─[ 2.36s - stdout ]───────────────────────────────────────────────────────────╮
00:01:01 v #1472 > > │ .fsx output:                                                                 │
00:01:01 v #1473 > > │ __assert_eq / actual: "struct ("aaabb", "c", aaabb, 1, 6)" / expected:       │
00:01:01 v #1474 > > │ "struct ("aaabb", "c", aaabb, 1, 6)"                                         │
00:01:01 v #1475 > > │                                                                              │
00:01:01 v #1476 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:01 v #1477 > >
00:01:01 v #1478 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:01 v #1479 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:01 v #1480 > > │ ### many_strings                                                             │
00:01:01 v #1481 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:01 v #1482 > >
00:01:01 v #1483 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:01 v #1484 > > inl many_strings p : parser string = fun input =>
00:01:01 v #1485 > >     match many p input with
00:01:01 v #1486 > >     | Ok (results, rest) =>
00:01:01 v #1487 > >         Ok (results |> listm.map sm'.obj_to_string |> listm'.box |> seq.of_list'
00:01:01 v #1488 > > |> sm'.concat "", rest)
00:01:01 v #1489 > >     | Error e => Ok ("", input)
00:01:01 v #1490 > >
00:01:01 v #1491 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:01 v #1492 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:01 v #1493 > > │ ### choice                                                                   │
00:01:01 v #1494 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:01 v #1495 > >
00:01:01 v #1496 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:01 v #1497 > > inl choice parsers : parser _ = fun input =>
00:01:01 v #1498 > >     let rec loop = function
00:01:01 v #1499 > >         | [[]] => Error "parsing.choice / no parsers succeeded"
00:01:01 v #1500 > >         | p :: ps =>
00:01:01 v #1501 > >             match p input with
00:01:01 v #1502 > >             | Ok _ as result => result
00:01:01 v #1503 > >             | Error _ => loop ps
00:01:01 v #1504 > >     loop parsers
00:01:02 v #1505 > >
00:01:02 v #1506 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:02 v #1507 > > //// test
00:01:02 v #1508 > > ///! fsharp
00:01:02 v #1509 > > ///! cuda
00:01:02 v #1510 > > ///! typescript
00:01:02 v #1511 > >
00:01:02 v #1512 > > "bca"
00:01:02 v #1513 > > |> parse (choice [[ p_char 'a'; p_char 'b'; p_char 'c' ]])
00:01:02 v #1514 > > |> resultm.get
00:01:02 v #1515 > > |> sm'.format_debug
00:01:02 v #1516 > > |> _assert_eq (
00:01:02 v #1517 > >     ('b', "ca", { line_text = "b" |> sm'.string_builder; position = { line =
00:01:02 v #1518 > > 1i32; col = 2i32 } })
00:01:02 v #1519 > >     |> sm'.format_debug
00:01:02 v #1520 > > )
00:01:02 v #1521 > >
00:01:02 v #1522 > > "cba"
00:01:02 v #1523 > > |> parse (choice [[ p_char 'a'; p_char 'b'; p_char 'c' ]])
00:01:02 v #1524 > > |> resultm.get
00:01:02 v #1525 > > |> sm'.format_debug
00:01:02 v #1526 > > |> _assert_eq (
00:01:02 v #1527 > >     ('c', "ba", { line_text = "c" |> sm'.string_builder; position = { line =
00:01:02 v #1528 > > 1i32; col = 2i32 } })
00:01:02 v #1529 > >     |> sm'.format_debug
00:01:02 v #1530 > > )
00:01:04 v #1531 > >
00:01:04 v #1532 > > ╭─[ 2.23s - return value ]─────────────────────────────────────────────────────╮
00:01:04 v #1533 > > │                                                                              │
00:01:04 v #1534 > > │ .py output (Cuda):                                                           │
00:01:04 v #1535 > > │ __assert_eq / actual: ('b', 'ca', b, 1, 2) / expected: ('b', 'ca', b, 1, 2)  │
00:01:04 v #1536 > > │ __assert_eq / actual: ('c', 'ba', c, 1, 2) / expected: ('c', 'ba', c, 1, 2)  │
00:01:04 v #1537 > > │                                                                              │
00:01:04 v #1538 > > │                                                                              │
00:01:04 v #1539 > > │ .ts output:                                                                  │
00:01:04 v #1540 > > │ __assert_eq / actual: b,ca,b,1,2 / expected: b,ca,b,1,2                      │
00:01:04 v #1541 > > │ __assert_eq / actual: c,ba,c,1,2 / expected: c,ba,c,1,2                      │
00:01:04 v #1542 > > │                                                                              │
00:01:04 v #1543 > > │                                                                              │
00:01:04 v #1544 > > │                                                                              │
00:01:04 v #1545 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:04 v #1546 > >
00:01:04 v #1547 > > ╭─[ 2.23s - stdout ]───────────────────────────────────────────────────────────╮
00:01:04 v #1548 > > │ .fsx output:                                                                 │
00:01:04 v #1549 > > │ __assert_eq / actual: "struct ('b', "ca", b, 1, 2)" / expected: "struct      │
00:01:04 v #1550 > > │ ('b', "ca", b, 1, 2)"                                                        │
00:01:04 v #1551 > > │ __assert_eq / actual: "struct ('c', "ba", c, 1, 2)" / expected: "struct      │
00:01:04 v #1552 > > │ ('c', "ba", c, 1, 2)"                                                        │
00:01:04 v #1553 > > │                                                                              │
00:01:04 v #1554 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:04 v #1555 > >
00:01:04 v #1556 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:04 v #1557 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:04 v #1558 > > │ ### between                                                                  │
00:01:04 v #1559 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:04 v #1560 > >
00:01:04 v #1561 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:04 v #1562 > > inl between p_open p_close p_content : parser _ = fun input =>
00:01:04 v #1563 > >     match p_open input with
00:01:04 v #1564 > >     | Ok (_, rest1) =>
00:01:04 v #1565 > >         match p_content rest1 with
00:01:04 v #1566 > >         | Ok (result, rest2) =>
00:01:04 v #1567 > >             match p_close rest2 with
00:01:04 v #1568 > >             | Ok (_, rest3) => Ok (result, rest3)
00:01:04 v #1569 > >             | Error e =>
00:01:04 v #1570 > >                 backend_switch {
00:01:04 v #1571 > >                     Fsharp = fun () => $'$"parsing.between / expected closing
00:01:04 v #1572 > > delimiter / e: %A{!e} / input: %A{!input} / rest1: %A{!rest1} / rest2:
00:01:04 v #1573 > > %A{!rest2}"' : string
00:01:04 v #1574 > >                     Python = fun () => $'f"parsing.between / expected closing
00:01:04 v #1575 > > delimiter / e: {!e} / input: {!input} / rest1: {!rest1} / rest2: {!rest2}"' :
00:01:04 v #1576 > > string
00:01:04 v #1577 > >                 }
00:01:04 v #1578 > >                 |> Error
00:01:04 v #1579 > >         | Error _ => Error "parsing.between / expected content"
00:01:04 v #1580 > >     | Error e => Error e
00:01:04 v #1581 > >
00:01:04 v #1582 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:04 v #1583 > > //// test
00:01:04 v #1584 > >
00:01:04 v #1585 > > "[[aaabb"
00:01:04 v #1586 > > |> parse_ (between_ (p_char_ '[[') (p_char_ ']]') (many1_chars_ (p_char_ 'a'
00:01:04 v #1587 > > <|>$ p_char_ 'b')))
00:01:04 v #1588 > > |> resultm.unwrap_err
00:01:04 v #1589 > > |> sm'.format_debug
00:01:05 v #1590 > >
00:01:05 v #1591 > > ╭─[ 531.71ms - return value ]──────────────────────────────────────────────────╮
00:01:05 v #1592 > > │ struct ("Error in Ln: 1 Col: 7                                               │
00:01:05 v #1593 > > │ [aaabb                                                                       │
00:01:05 v #1594 > > │       ^                                                                      │
00:01:05 v #1595 > > │ Note: The error occurred at the end of the input stream.                     │
00:01:05 v #1596 > > │ Expecting: ']', 'a' or 'b'                                                   │
00:01:05 v #1597 > > │ ",                                                                           │
00:01:05 v #1598 > > │         Error in Ln: 1 Col: 7                                                │
00:01:05 v #1599 > > │ Expecting: ']', 'a' or 'b'                                                   │
00:01:05 v #1600 > > │ )                                                                            │
00:01:05 v #1601 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:05 v #1602 > >
00:01:05 v #1603 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:05 v #1604 > > //// test
00:01:05 v #1605 > > ///! fsharp
00:01:05 v #1606 > > ///! cuda
00:01:05 v #1607 > > ///! typescript
00:01:05 v #1608 > >
00:01:05 v #1609 > > "[[aaabb]]"
00:01:05 v #1610 > > |> parse (between (p_char '[[') (p_char ']]') (many1_chars (p_char 'a' <|>
00:01:05 v #1611 > > p_char 'b')))
00:01:05 v #1612 > > |> resultm.get
00:01:05 v #1613 > > |> sm'.format_debug
00:01:05 v #1614 > > |> _assert_eq (
00:01:05 v #1615 > >     ("aaabb", "", { line_text = "[[aaabb]]" |> sm'.string_builder; position = {
00:01:05 v #1616 > > line = 1i32; col = 8i32 } })
00:01:05 v #1617 > >     |> sm'.format_debug
00:01:05 v #1618 > > )
00:01:05 v #1619 > >
00:01:05 v #1620 > > "[[aaabb"
00:01:05 v #1621 > > |> parse (between (p_char '[[') (p_char ']]') (many1_chars (p_char 'a' <|>
00:01:05 v #1622 > > p_char 'b')))
00:01:05 v #1623 > > |> resultm.unwrap_err
00:01:05 v #1624 > > |> sm'.format_debug
00:01:05 v #1625 > > |> _assert_eq (
00:01:05 v #1626 > >     backend_switch {
00:01:05 v #1627 > >         Fsharp = fun () =>
00:01:05 v #1628 > >             run_target function
00:01:05 v #1629 > >             | TypeScript _ => fun () => "parsing.between / expected closing
00:01:05 v #1630 > > delimiter / e: parsing.p_char / unexpected end of input / c: ']]' / s:
00:01:05 v #1631 > > [[aaabb,1,7 / input: [[aaabb,[[aaabb,1,1 / rest1: aaabb,[[aaabb,1,2 / rest2:
00:01:05 v #1632 > > ,[[aaabb,1,7" : string
00:01:05 v #1633 > >             | _ => fun () => join "\"parsing.between / expected closing
00:01:05 v #1634 > > delimiter / e: \"parsing.p_char / unexpected end of input / c: ']]' / s: struct
00:01:05 v #1635 > > ([[aaabb, 1, 7)\" / input: struct (\"[[aaabb\", [[aaabb, 1, 1) / rest1: struct
00:01:05 v #1636 > > (\"aaabb\", [[aaabb, 1, 2) / rest2: struct (\"\", [[aaabb, 1, 7)\"" : string
00:01:05 v #1637 > >         Python = fun () => "parsing.between / expected closing delimiter / e:
00:01:05 v #1638 > > parsing.p_char / unexpected end of input / c: ']]' / s: ([[aaabb, 1, 7) / input:
00:01:05 v #1639 > > ('[[aaabb', [[aaabb, 1, 1) / rest1: ('aaabb', [[aaabb, 1, 2) / rest2: ('',
00:01:05 v #1640 > > [[aaabb, 1, 7)" : string
00:01:05 v #1641 > >     }
00:01:05 v #1642 > > )
00:01:08 v #1643 > >
00:01:08 v #1644 > > ╭─[ 2.51s - return value ]─────────────────────────────────────────────────────╮
00:01:08 v #1645 > > │                                                                              │
00:01:08 v #1646 > > │ .py output (Cuda):                                                           │
00:01:08 v #1647 > > │ __assert_eq / actual: ('aaabb', '', [aaabb], 1, 8) / expected: ('aaabb', '', │
00:01:08 v #1648 > > │ [aaabb], 1, 8)                                                               │
00:01:08 v #1649 > > │ __assert_eq / actual: parsing.between / expected closing delimiter / e:      │
00:01:08 v #1650 > > │ parsing.p_char / unexpected end of input / c: ']' / s: ([aaabb, 1, 7) /      │
00:01:08 v #1651 > > │ input: ('[aaabb', [aaabb, 1, 1) / rest1: ('aaabb', [aaabb, 1, 2) / rest2:    │
00:01:08 v #1652 > > │ ('', [aaabb, 1, 7) / expected: parsing.between / expected closing delimiter  │
00:01:08 v #1653 > > │ / e: parsing.p_char / unexpected end of input / c: ']' / s: ([aaabb, 1, 7) / │
00:01:08 v #1654 > > │ input: ('[aaabb', [aaabb, 1, 1) / rest1: ('aaabb', [aaabb, 1, 2) / rest2:    │
00:01:08 v #1655 > > │ ('', [aaabb, 1, 7)                                                           │
00:01:08 v #1656 > > │                                                                              │
00:01:08 v #1657 > > │                                                                              │
00:01:08 v #1658 > > │ .ts output:                                                                  │
00:01:08 v #1659 > > │ __assert_eq / actual: aaabb,,[aaabb],1,8 / expected: aaabb,,[aaabb],1,8      │
00:01:08 v #1660 > > │ __assert_eq / actual: parsing.between / expected closing delimiter / e:      │
00:01:08 v #1661 > > │ parsing.p_char / unexpected end of input / c: ']' / s: [aaabb,1,7 / input: [ │
00:01:08 v #1662 > > │ aaabb,[aaabb,1,1 / rest1: aaabb,[aaabb,1,2 / rest2: ,[aaabb,1,7 / expected:  │
00:01:08 v #1663 > > │ parsing.between / expected closing delimiter / e: parsing.p_char /           │
00:01:08 v #1664 > > │ unexpected end of input / c: ']' / s: [aaabb,1,7 / input: [aaabb,[aaabb,1,1  │
00:01:08 v #1665 > > │ / rest1: aaabb,[aaabb,1,2 / rest2: ,[aaabb,1,7                               │
00:01:08 v #1666 > > │                                                                              │
00:01:08 v #1667 > > │                                                                              │
00:01:08 v #1668 > > │                                                                              │
00:01:08 v #1669 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:08 v #1670 > >
00:01:08 v #1671 > > ╭─[ 2.51s - stdout ]───────────────────────────────────────────────────────────╮
00:01:08 v #1672 > > │ .fsx output:                                                                 │
00:01:08 v #1673 > > │ __assert_eq / actual: "struct ("aaabb", "", [aaabb], 1, 8)" / expected:      │
00:01:08 v #1674 > > │ "struct ("aaabb", "", [aaabb], 1, 8)"                                        │
00:01:08 v #1675 > > │ __assert_eq / actual: ""parsing.between / expected closing delimiter / e:    │
00:01:08 v #1676 > > │ "parsing.p_char / unexpected end of input / c: ']' / s: struct ([aaabb, 1,   │
00:01:08 v #1677 > > │ 7)" / input: struct ("[aaabb", [aaabb, 1, 1) / rest1: struct ("aaabb", [     │
00:01:08 v #1678 > > │ aaabb, 1, 2) / rest2: struct ("", [aaabb, 1, 7)"" / expected:                │
00:01:08 v #1679 > > │ ""parsing.between / expected closing delimiter / e: "parsing.p_char /        │
00:01:08 v #1680 > > │ unexpected end of input / c: ']' / s: struct ([aaabb, 1, 7)" / input: struct │
00:01:08 v #1681 > > │ ("[aaabb", [aaabb, 1, 1) / rest1: struct ("aaabb", [aaabb, 1, 2) / rest2:    │
00:01:08 v #1682 > > │ struct ("", [aaabb, 1, 7)""                                                  │
00:01:08 v #1683 > > │                                                                              │
00:01:08 v #1684 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:08 v #1685 > >
00:01:08 v #1686 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:08 v #1687 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:08 v #1688 > > │ ### sep_by                                                                   │
00:01:08 v #1689 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:08 v #1690 > >
00:01:08 v #1691 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:08 v #1692 > > inl sep_by p sep : parser (list _) = fun input, s =>
00:01:08 v #1693 > >     let rec loop acc input s =
00:01:08 v #1694 > >         match p (input, s) with
00:01:08 v #1695 > >         | Ok (result, rest, s) =>
00:01:08 v #1696 > >             match sep (rest, s) with
00:01:08 v #1697 > >             | Ok (_, rest, s) => loop (result :: acc) rest s
00:01:08 v #1698 > >             | Error _ => Ok ((result :: acc) |> listm.rev, rest, s)
00:01:08 v #1699 > >         | Error _ => Ok (acc |> listm.rev, input, s)
00:01:08 v #1700 > >     loop [[]] input s
00:01:08 v #1701 > >
00:01:08 v #1702 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:08 v #1703 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:08 v #1704 > > │ ### span                                                                     │
00:01:08 v #1705 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:08 v #1706 > >
00:01:08 v #1707 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:08 v #1708 > > inl span pred str =
00:01:08 v #1709 > >     let rec loop i =
00:01:08 v #1710 > >         if i >= sm'.length str
00:01:08 v #1711 > >         then i
00:01:08 v #1712 > >         elif pred (str |> sm'.index i)
00:01:08 v #1713 > >         then loop (i + 1)
00:01:08 v #1714 > >         else i
00:01:08 v #1715 > >     loop 0
00:01:08 v #1716 > >
00:01:08 v #1717 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:08 v #1718 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:08 v #1719 > > │ ### spaces1                                                                  │
00:01:08 v #1720 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:08 v #1721 > >
00:01:08 v #1722 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:08 v #1723 > > inl spaces1 () : parser () = fun input, s =>
00:01:08 v #1724 > >     match input |> span ((=) ' ') with
00:01:08 v #1725 > >     | 0i32 => Error "parsing.spaces1 / expected at least one space"
00:01:08 v #1726 > >     | n => Ok ((), input |> sm'.range (am'.Start n) (am'.End id), s)
00:01:09 v #1727 > >
00:01:09 v #1728 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:09 v #1729 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:09 v #1730 > > │ ### spaces                                                                   │
00:01:09 v #1731 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:09 v #1732 > >
00:01:09 v #1733 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:09 v #1734 > > inl spaces () : parser () = fun input, s =>
00:01:09 v #1735 > >     input
00:01:09 v #1736 > >     |> span ((=) ' ')
00:01:09 v #1737 > >     |> fun (n : i32) =>
00:01:09 v #1738 > >         Ok ((), input |> sm'.range (am'.Start n) (am'.End id), s)
00:01:09 v #1739 > >
00:01:09 v #1740 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:09 v #1741 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:09 v #1742 > > │ ### p_digit                                                                  │
00:01:09 v #1743 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:09 v #1744 > >
00:01:09 v #1745 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:09 v #1746 > > inl p_digit () : parser char = fun input, s =>
00:01:09 v #1747 > >     match input |> sm'.index 0i32 with
00:01:09 v #1748 > >     | ('0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9') as c =>
00:01:09 v #1749 > >         Ok (c, input |> sm'.range (am'.Start 1i32) (am'.End id), s)
00:01:09 v #1750 > >     | c =>
00:01:09 v #1751 > >         backend_switch {
00:01:09 v #1752 > >             Fsharp = fun () => $'$"parsing.p_digit / unexpected char: {!c}"' :
00:01:09 v #1753 > > string
00:01:09 v #1754 > >             Python = fun () => $'f"parsing.p_digit / unexpected char: {!c}"' :
00:01:09 v #1755 > > string
00:01:09 v #1756 > >         }
00:01:09 v #1757 > >         |> Error
00:01:10 v #1758 > >
00:01:10 v #1759 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:10 v #1760 > > //// test
00:01:10 v #1761 > > ///! fsharp
00:01:10 v #1762 > > ///! cuda
00:01:10 v #1763 > > ///! typescript
00:01:10 v #1764 > >
00:01:10 v #1765 > > "1 2 3"
00:01:10 v #1766 > > |> parse (sep_by (p_digit ()) (spaces1 ()))
00:01:10 v #1767 > > |> resultm.get
00:01:10 v #1768 > > |> sm'.format_debug
00:01:10 v #1769 > > |> _assert_eq (
00:01:10 v #1770 > >     ([['1'; '2'; '3']], "", { line_text = "" |> sm'.string_builder; position = {
00:01:10 v #1771 > > col = 1i32; line = 1i32 } })
00:01:10 v #1772 > >     |> sm'.format_debug
00:01:10 v #1773 > > )
00:01:12 v #1774 > >
00:01:12 v #1775 > > ╭─[ 2.30s - return value ]─────────────────────────────────────────────────────╮
00:01:12 v #1776 > > │ .py output (Cuda):                                                           │
00:01:12 v #1777 > > │ __assert_eq / actual: (UH0_1(v0='1', v1=UH0_1(v0='2', v1=UH0_1(v0='3',       │
00:01:12 v #1778 > > │ v1=UH0_0()))), '', , 1, 1) / expected: (UH0_1(v0='1', v1=UH0_1(v0='2',       │
00:01:12 v #1779 > > │ v1=UH0_1(v0='3', v1=UH0_0()))), '', , 1, 1)                                  │
00:01:12 v #1780 > > │                                                                              │
00:01:12 v #1781 > > │ .ts output:                                                                  │
00:01:12 v #1782 > > │ __assert_eq / actual: UH0_1 (1, UH0_1 (2, UH0_1 (3, UH0_0))),,,1,1 /         │
00:01:12 v #1783 > > │ expected: UH0_1 (1, UH0_1 (2, UH0_1 (3, UH0_0))),,,1,1                       │
00:01:12 v #1784 > > │                                                                              │
00:01:12 v #1785 > > │                                                                              │
00:01:12 v #1786 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:12 v #1787 > >
00:01:12 v #1788 > > ╭─[ 2.30s - stdout ]───────────────────────────────────────────────────────────╮
00:01:12 v #1789 > > │ .fsx output:                                                                 │
00:01:12 v #1790 > > │ __assert_eq / actual: "struct (UH0_1 ('1', UH0_1 ('2', UH0_1 ('3', UH0_0))), │
00:01:12 v #1791 > > │ "", , 1, 1)" / expected: "struct (UH0_1 ('1', UH0_1 ('2', UH0_1 ('3',        │
00:01:12 v #1792 > > │ UH0_0))), "", , 1, 1)"                                                       │
00:01:12 v #1793 > > │                                                                              │
00:01:12 v #1794 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:12 v #1795 > >
00:01:12 v #1796 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:12 v #1797 > > //// test
00:01:12 v #1798 > > ///! fsharp
00:01:12 v #1799 > > ///! cuda
00:01:12 v #1800 > > ///! typescript
00:01:12 v #1801 > >
00:01:12 v #1802 > > "1 a 2"
00:01:12 v #1803 > > |> parse (sep_by (p_digit ()) (spaces1 ()))
00:01:12 v #1804 > > |> resultm.get
00:01:12 v #1805 > > |> sm'.format_debug
00:01:12 v #1806 > > |> _assert_eq (
00:01:12 v #1807 > >     ([['1']], "a 2", { line_text = "" |> sm'.string_builder; position = { col =
00:01:12 v #1808 > > 1i32; line = 1i32 } })
00:01:12 v #1809 > >     |> sm'.format_debug
00:01:12 v #1810 > > )
00:01:14 v #1811 > >
00:01:14 v #1812 > > ╭─[ 2.10s - return value ]─────────────────────────────────────────────────────╮
00:01:14 v #1813 > > │ .py output (Cuda):                                                           │
00:01:14 v #1814 > > │ __assert_eq / actual: (UH0_1(v0='1', v1=UH0_0()), 'a 2', , 1, 1) / expected: │
00:01:14 v #1815 > > │ (UH0_1(v0='1', v1=UH0_0()), 'a 2', , 1, 1)                                   │
00:01:14 v #1816 > > │                                                                              │
00:01:14 v #1817 > > │ .ts output:                                                                  │
00:01:14 v #1818 > > │ __assert_eq / actual: UH0_1 (1, UH0_0),a 2,,1,1 / expected: UH0_1 (1,        │
00:01:14 v #1819 > > │ UH0_0),a 2,,1,1                                                              │
00:01:14 v #1820 > > │                                                                              │
00:01:14 v #1821 > > │                                                                              │
00:01:14 v #1822 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:14 v #1823 > >
00:01:14 v #1824 > > ╭─[ 2.10s - stdout ]───────────────────────────────────────────────────────────╮
00:01:14 v #1825 > > │ .fsx output:                                                                 │
00:01:14 v #1826 > > │ __assert_eq / actual: "struct (UH0_1 ('1', UH0_0), "a 2", , 1, 1)" /         │
00:01:14 v #1827 > > │ expected: "struct (UH0_1 ('1', UH0_0), "a 2", , 1, 1)"                       │
00:01:14 v #1828 > > │                                                                              │
00:01:14 v #1829 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:14 v #1830 > >
00:01:14 v #1831 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:14 v #1832 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:14 v #1833 > > │ ### opt                                                                      │
00:01:14 v #1834 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:14 v #1835 > >
00:01:14 v #1836 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:14 v #1837 > > inl opt p : parser (option _) = fun input, s =>
00:01:14 v #1838 > >     match p (input, s) with
00:01:14 v #1839 > >     | Ok (result, rest, s) => Ok (Some result, rest, s)
00:01:14 v #1840 > >     | Error _ => Ok (None, input, s)
00:01:15 v #1841 > >
00:01:15 v #1842 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:15 v #1843 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:15 v #1844 > > │ ### rest_of_line                                                             │
00:01:15 v #1845 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:15 v #1846 > >
00:01:15 v #1847 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:15 v #1848 > > inl rest_of_line () : parser string = fun input, s =>
00:01:15 v #1849 > >     inl i : i32 = input |> span ((<>) '\n')
00:01:15 v #1850 > >     inl result = input |> sm'.range (am'.Start i) (am'.End id)
00:01:15 v #1851 > >     Ok (result, result, s)
00:01:15 v #1852 > >
00:01:15 v #1853 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:15 v #1854 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:15 v #1855 > > │ ### eof                                                                      │
00:01:15 v #1856 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:15 v #1857 > >
00:01:15 v #1858 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:15 v #1859 > > inl eof () : parser () = fun input, s =>
00:01:15 v #1860 > >     if sm'.length input = 0i32
00:01:15 v #1861 > >     then Ok ((), input, s)
00:01:15 v #1862 > >     else
00:01:15 v #1863 > >         backend_switch {
00:01:15 v #1864 > >             Fsharp = fun () => $'$"parsing.eof / expected end of input / input:
00:01:15 v #1865 > > %A{!input}"' : string
00:01:15 v #1866 > >             Python = fun () => $'f"parsing.eof / expected end of input / input:
00:01:15 v #1867 > > {!input}"' : string
00:01:15 v #1868 > >         }
00:01:15 v #1869 > >         |> Error
00:01:16 v #1870 > 00:01:14 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 90184 }
00:01:16 v #1871 > 00:01:14 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/polyglot/lib/spiral/parsing.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/polyglot/lib/spiral/parsing.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:01:17 v #1872 > 00:01:15 v #5 ! [NbConvertApp] Converting notebook c:/home/git/polyglot/lib/spiral/parsing.dib.ipynb to html
00:01:17 v #1873 > 00:01:15 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:01:17 v #1874 > 00:01:15 v #7 !   validate(nb)
00:01:18 v #1875 > 00:01:16 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:01:18 v #1876 > 00:01:16 v #9 !   return _pygments_highlight(
00:01:20 v #1877 > 00:01:18 v #10 ! [NbConvertApp] Writing 503269 bytes to c:\home\git\polyglot\lib\spiral\parsing.dib.html
00:01:20 v #1878 > 00:01:18 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 856 }
00:01:20 v #1879 > 00:01:18 d #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 856 }
00:01:20 v #1880 > 00:01:18 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/parsing.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/parsing.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:01:20 v #1881 > 00:01:18 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:01:20 v #1882 > 00:01:18 d #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:01:20 v #1883 > 00:01:18 d #16 spiral_builder.run / dib / { exit_code = 0; result_length = 91099 }
00:01:20 d #1884 runtime.execute_with_options_async / { exit_code = 0; output_length = 97395 }
00:01:20 d #3 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder.exe dib --path parsing.dib --retries 3
00:01:20 d #1885 runtime.execute_with_options_async / { file_name = ../../workspace/target/release/spiral_builder.exe; arguments = US5_0 "dib --path sm'.dib --retries 3"; options = { command = ../../workspace/target/release/spiral_builder.exe dib --path sm'.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:01:20 v #1886 > 00:00:00 d #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "sm'.dib", "--retries", "3"])) }
00:01:20 v #1887 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/polyglot/lib/spiral/sm'.dib", "--output-path", "c:/home/git/polyglot/lib/spiral/sm'.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/polyglot/lib/spiral/sm'.dib" --output-path "c:/home/git/polyglot/lib/spiral/sm'.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:01:22 v #1888 > >
00:01:22 v #1889 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:22 v #1890 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:22 v #1891 > > │ # sm'                                                                        │
00:01:22 v #1892 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:25 v #1893 > >
00:01:25 v #1894 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:25 v #1895 > > //// test
00:01:25 v #1896 > >
00:01:25 v #1897 > > open testing
00:01:27 v #1898 > >
00:01:27 v #1899 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:27 v #1900 > > open rust
00:01:27 v #1901 > > open rust_operators
00:01:27 v #1902 > > open sm'_real
00:01:27 v #1903 > >
00:01:27 v #1904 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:27 v #1905 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:27 v #1906 > > │ ## rust                                                                      │
00:01:27 v #1907 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:27 v #1908 > >
00:01:27 v #1909 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:27 v #1910 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:27 v #1911 > > │ ### std_string                                                               │
00:01:27 v #1912 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:27 v #1913 > >
00:01:27 v #1914 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:27 v #1915 > > //// real
00:01:27 v #1916 > >
00:01:27 v #1917 > > nominal std_string =
00:01:27 v #1918 > >     `(
00:01:27 v #1919 > >         backend_switch `(()) `({}) {
00:01:27 v #1920 > >             Fsharp =
00:01:27 v #1921 > >                 (fun () =>
00:01:27 v #1922 > >                     global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:01:27 v #1923 > > Fable.Core.Emit(\"std::string::String\")>]]\ntype std_string_String = class
00:01:27 v #1924 > > end\n#else\ntype std_string_String = string\n#endif\n"
00:01:27 v #1925 > >                 ) : () -> ()
00:01:27 v #1926 > >         }
00:01:27 v #1927 > >         $'' : $'std_string_String'
00:01:27 v #1928 > >     )
00:01:27 v #1929 > >
00:01:27 v #1930 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:27 v #1931 > > type std_string = sm'_real.std_string
00:01:28 v #1932 > >
00:01:28 v #1933 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:28 v #1934 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:28 v #1935 > > │ ### to_string'                                                               │
00:01:28 v #1936 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:28 v #1937 > >
00:01:28 v #1938 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:28 v #1939 > > inl to_string' forall t. (x : t) : std_string =
00:01:28 v #1940 > >     !\($'$"!x.to_string()"')
00:01:28 v #1941 > >
00:01:28 v #1942 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:28 v #1943 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:28 v #1944 > > │ ### from_std_string                                                          │
00:01:28 v #1945 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:28 v #1946 > >
00:01:28 v #1947 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:28 v #1948 > > //// real
00:01:28 v #1949 > >
00:01:28 v #1950 > > inl from_std_string (str : std_string) : string =
00:01:28 v #1951 > >     open rust
00:01:28 v #1952 > >     rust.emit_expr `std_string `string str
00:01:28 v #1953 > > ($'"fable_library_rust::String_::fromString($0)"' : string)
00:01:29 v #1954 > >
00:01:29 v #1955 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:29 v #1956 > > inl from_std_string (str : std_string) : string =
00:01:29 v #1957 > >     real sm'_real.from_std_string str
00:01:29 v #1958 > >
00:01:29 v #1959 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:29 v #1960 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:29 v #1961 > > │ ## sm'                                                                       │
00:01:29 v #1962 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:29 v #1963 > >
00:01:29 v #1964 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:29 v #1965 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:29 v #1966 > > │ ### symbol_to_string                                                         │
00:01:29 v #1967 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:29 v #1968 > >
00:01:29 v #1969 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:29 v #1970 > > //// real
00:01:29 v #1971 > >
00:01:29 v #1972 > > inl symbol_to_string forall t {symbol}. : string =
00:01:29 v #1973 > >     // inl x = real_core.type_lit_to_lit `t
00:01:29 v #1974 > >     // inl x = real_core.type_to_symbol `t
00:01:29 v #1975 > >     // inl x = real_core.type_lit_to_lit `t
00:01:29 v #1976 > >     // !!!!SymbolToString (`(`t))
00:01:29 v #1977 > >     inl x = real_core.type_to_symbol `t
00:01:29 v #1978 > >     !!!!SymbolToString (x)
00:01:29 v #1979 > >
00:01:29 v #1980 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:29 v #1981 > > inl symbol_to_string forall t {symbol}. (x : t) : string =
00:01:29 v #1982 > >     real symbol_to_string `t
00:01:30 v #1983 > >
00:01:30 v #1984 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:30 v #1985 > > //// test
00:01:30 v #1986 > > ///! fsharp
00:01:30 v #1987 > > ///! cuda
00:01:30 v #1988 > >
00:01:30 v #1989 > > .test
00:01:30 v #1990 > > |> symbol_to_string
00:01:30 v #1991 > > |> _assert_eq "test"
00:01:32 v #1992 > >
00:01:32 v #1993 > > ╭─[ 1.95s - return value ]─────────────────────────────────────────────────────╮
00:01:32 v #1994 > > │ .py output (Cuda):                                                           │
00:01:32 v #1995 > > │ __assert_eq / actual: test / expected: test                                  │
00:01:32 v #1996 > > │                                                                              │
00:01:32 v #1997 > > │                                                                              │
00:01:32 v #1998 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:32 v #1999 > >
00:01:32 v #2000 > > ╭─[ 1.95s - stdout ]───────────────────────────────────────────────────────────╮
00:01:32 v #2001 > > │ .fsx output:                                                                 │
00:01:32 v #2002 > > │ __assert_eq / actual: "test" / expected: "test"                              │
00:01:32 v #2003 > > │                                                                              │
00:01:32 v #2004 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:32 v #2005 > >
00:01:32 v #2006 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:32 v #2007 > > //// test
00:01:32 v #2008 > > //// real
00:01:32 v #2009 > > ///! fsharp
00:01:32 v #2010 > > ///! cuda
00:01:32 v #2011 > >
00:01:32 v #2012 > > open testing
00:01:32 v #2013 > > inl x = .test
00:01:32 v #2014 > > inl x = symbol_to_string `(`x)
00:01:32 v #2015 > > _assert_eq `string "test" x
00:01:33 v #2016 > >
00:01:33 v #2017 > > ╭─[ 1.17s - return value ]─────────────────────────────────────────────────────╮
00:01:33 v #2018 > > │ .py output (Cuda):                                                           │
00:01:33 v #2019 > > │ __assert_eq / actual: test / expected: test                                  │
00:01:33 v #2020 > > │                                                                              │
00:01:33 v #2021 > > │                                                                              │
00:01:33 v #2022 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:33 v #2023 > >
00:01:33 v #2024 > > ╭─[ 1.17s - stdout ]───────────────────────────────────────────────────────────╮
00:01:33 v #2025 > > │ .fsx output:                                                                 │
00:01:33 v #2026 > > │ __assert_eq / actual: "test" / expected: "test"                              │
00:01:33 v #2027 > > │                                                                              │
00:01:33 v #2028 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:33 v #2029 > >
00:01:33 v #2030 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:33 v #2031 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:33 v #2032 > > │ ### index                                                                    │
00:01:33 v #2033 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:33 v #2034 > >
00:01:33 v #2035 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:33 v #2036 > > inl index i (str : string) : char =
00:01:33 v #2037 > >     sm.index str i
00:01:33 v #2038 > >
00:01:33 v #2039 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:33 v #2040 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:33 v #2041 > > │ ### length                                                                   │
00:01:33 v #2042 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:33 v #2043 > >
00:01:33 v #2044 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:33 v #2045 > > inl length forall dim {int}. (input : string) : dim =
00:01:33 v #2046 > >     input |> sm.length
00:01:34 v #2047 > >
00:01:34 v #2048 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:34 v #2049 > > //// test
00:01:34 v #2050 > > ///! fsharp
00:01:34 v #2051 > > ///! cuda
00:01:34 v #2052 > >
00:01:34 v #2053 > > "abc"
00:01:34 v #2054 > > |> length
00:01:34 v #2055 > > |> _assert_eq 3i32
00:01:35 v #2056 > >
00:01:35 v #2057 > > ╭─[ 1.13s - return value ]─────────────────────────────────────────────────────╮
00:01:35 v #2058 > > │ .py output (Cuda):                                                           │
00:01:35 v #2059 > > │ __assert_eq / actual: 3 / expected: 3                                        │
00:01:35 v #2060 > > │                                                                              │
00:01:35 v #2061 > > │                                                                              │
00:01:35 v #2062 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:35 v #2063 > >
00:01:35 v #2064 > > ╭─[ 1.13s - stdout ]───────────────────────────────────────────────────────────╮
00:01:35 v #2065 > > │ .fsx output:                                                                 │
00:01:35 v #2066 > > │ __assert_eq / actual: 3 / expected: 3                                        │
00:01:35 v #2067 > > │                                                                              │
00:01:35 v #2068 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:35 v #2069 > >
00:01:35 v #2070 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:35 v #2071 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:35 v #2072 > > │ ### to_char_array                                                            │
00:01:35 v #2073 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:35 v #2074 > >
00:01:35 v #2075 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:35 v #2076 > > inl to_char_array (str : string) : array_base char =
00:01:35 v #2077 > >     am.init (str |> length) (fun i => str |> index i)
00:01:35 v #2078 > >     |> fun (a x : _ int _) => x
00:01:35 v #2079 > >
00:01:35 v #2080 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:35 v #2081 > > //// test
00:01:35 v #2082 > > ///! fsharp
00:01:35 v #2083 > > ///! cuda
00:01:35 v #2084 > >
00:01:35 v #2085 > > "abc"
00:01:35 v #2086 > > |> to_char_array
00:01:35 v #2087 > > |> sm'.format
00:01:35 v #2088 > > |> _assert_eq (;[[ 'a'; 'b'; 'c' ]] |> sm'.format)
00:01:37 v #2089 > >
00:01:37 v #2090 > > ╭─[ 1.59s - return value ]─────────────────────────────────────────────────────╮
00:01:37 v #2091 > > │ .py output (Cuda):                                                           │
00:01:37 v #2092 > > │ __assert_eq / actual: ['a' 'b' 'c'] / expected: ['a' 'b' 'c']                │
00:01:37 v #2093 > > │                                                                              │
00:01:37 v #2094 > > │                                                                              │
00:01:37 v #2095 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:37 v #2096 > >
00:01:37 v #2097 > > ╭─[ 1.59s - stdout ]───────────────────────────────────────────────────────────╮
00:01:37 v #2098 > > │ .fsx output:                                                                 │
00:01:37 v #2099 > > │ __assert_eq / actual: "[|'a'; 'b'; 'c'|]" / expected: "[|'a'; 'b'; 'c'|]"    │
00:01:37 v #2100 > > │                                                                              │
00:01:37 v #2101 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:37 v #2102 > >
00:01:37 v #2103 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:37 v #2104 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:37 v #2105 > > │ ### to_char_list                                                             │
00:01:37 v #2106 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:37 v #2107 > >
00:01:37 v #2108 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:37 v #2109 > > inl to_char_list (str : string) : list char =
00:01:37 v #2110 > >     listm.init (str |> length) (fun (i : i64) => str |> index i)
00:01:37 v #2111 > >
00:01:37 v #2112 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:37 v #2113 > > //// test
00:01:37 v #2114 > > ///! fsharp
00:01:37 v #2115 > > ///! cuda
00:01:37 v #2116 > >
00:01:37 v #2117 > > "abc"
00:01:37 v #2118 > > |> to_char_list
00:01:37 v #2119 > > |> _assert_eq [[ 'a'; 'b'; 'c' ]]
00:01:38 v #2120 > >
00:01:38 v #2121 > > ╭─[ 1.31s - return value ]─────────────────────────────────────────────────────╮
00:01:38 v #2122 > > │ .py output (Cuda):                                                           │
00:01:38 v #2123 > > │ __assert_eq / actual: UH0_1(v0='a', v1=UH0_1(v0='b', v1=UH0_1(v0='c',        │
00:01:38 v #2124 > > │ v1=UH0_0()))) / expected: UH0_1(v0='a', v1=UH0_1(v0='b', v1=UH0_1(v0='c',    │
00:01:38 v #2125 > > │ v1=UH0_0())))                                                                │
00:01:38 v #2126 > > │                                                                              │
00:01:38 v #2127 > > │                                                                              │
00:01:38 v #2128 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:38 v #2129 > >
00:01:38 v #2130 > > ╭─[ 1.31s - stdout ]───────────────────────────────────────────────────────────╮
00:01:38 v #2131 > > │ .fsx output:                                                                 │
00:01:38 v #2132 > > │ __assert_eq / actual: UH0_1 ('a', UH0_1 ('b', UH0_1 ('c', UH0_0))) /         │
00:01:38 v #2133 > > │ expected: UH0_1 ('a', UH0_1 ('b', UH0_1 ('c', UH0_0)))                       │
00:01:38 v #2134 > > │                                                                              │
00:01:38 v #2135 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:38 v #2136 > >
00:01:38 v #2137 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:38 v #2138 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:38 v #2139 > > │ ### is_empty                                                                 │
00:01:38 v #2140 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:38 v #2141 > >
00:01:38 v #2142 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:38 v #2143 > > inl is_empty (input : string) : bool =
00:01:38 v #2144 > >     length input = 0i32
00:01:39 v #2145 > >
00:01:39 v #2146 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:39 v #2147 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:39 v #2148 > > │ ### slice                                                                    │
00:01:39 v #2149 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:39 v #2150 > >
00:01:39 v #2151 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:39 v #2152 > > inl slice forall t {number; int}. (from : t) (to : t) s : string =
00:01:39 v #2153 > >     backend_switch {
00:01:39 v #2154 > >         Fsharp = fun () => sm.slice s { from to } : string
00:01:39 v #2155 > >         Python = fun () => sm.slice s { from to = if var_is s || var_is to then
00:01:39 v #2156 > > to + 1 else to } : string
00:01:39 v #2157 > >     }
00:01:39 v #2158 > >
00:01:39 v #2159 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:39 v #2160 > > //// test
00:01:39 v #2161 > > ///! fsharp
00:01:39 v #2162 > > ///! cuda
00:01:39 v #2163 > >
00:01:39 v #2164 > > "abcdef"
00:01:39 v #2165 > > |> slice 1i32 3i32
00:01:39 v #2166 > > |> _assert_eq "bcd"
00:01:39 v #2167 > >
00:01:39 v #2168 > > (join "abcde")
00:01:39 v #2169 > > |> slice 1i32 3i32
00:01:39 v #2170 > > |> _assert_eq "bcd"
00:01:39 v #2171 > >
00:01:39 v #2172 > > "abcde"
00:01:39 v #2173 > > |> slice 1i32 (join 3i32)
00:01:39 v #2174 > > |> _assert_eq "bcd"
00:01:39 v #2175 > >
00:01:39 v #2176 > > (join "abcde")
00:01:39 v #2177 > > |> slice 1i32 (join 3i32)
00:01:39 v #2178 > > |> _assert_eq "bcd"
00:01:40 v #2179 > >
00:01:40 v #2180 > > ╭─[ 1.15s - return value ]─────────────────────────────────────────────────────╮
00:01:40 v #2181 > > │                                                                              │
00:01:40 v #2182 > > │ .py output (Cuda):                                                           │
00:01:40 v #2183 > > │ __assert_eq / actual: bcd / expected: bcd                                    │
00:01:40 v #2184 > > │ __assert_eq / actual: bcd / expected: bcd                                    │
00:01:40 v #2185 > > │ __assert_eq / actual: bcd / expected: bcd                                    │
00:01:40 v #2186 > > │ __assert_eq / actual: bcd / expected: bcd                                    │
00:01:40 v #2187 > > │                                                                              │
00:01:40 v #2188 > > │                                                                              │
00:01:40 v #2189 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:40 v #2190 > >
00:01:40 v #2191 > > ╭─[ 1.15s - stdout ]───────────────────────────────────────────────────────────╮
00:01:40 v #2192 > > │ .fsx output:                                                                 │
00:01:40 v #2193 > > │ __assert_eq / actual: "bcd" / expected: "bcd"                                │
00:01:40 v #2194 > > │ __assert_eq / actual: "bcd" / expected: "bcd"                                │
00:01:40 v #2195 > > │ __assert_eq / actual: "bcd" / expected: "bcd"                                │
00:01:40 v #2196 > > │ __assert_eq / actual: "bcd" / expected: "bcd"                                │
00:01:40 v #2197 > > │                                                                              │
00:01:40 v #2198 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:40 v #2199 > >
00:01:40 v #2200 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:40 v #2201 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:40 v #2202 > > │ ### format_debug                                                             │
00:01:40 v #2203 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:40 v #2204 > >
00:01:40 v #2205 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:40 v #2206 > > //// real
00:01:40 v #2207 > >
00:01:40 v #2208 > > inl format_debug forall t. (x : t) : string =
00:01:40 v #2209 > >     backend_switch `string `({}) {
00:01:40 v #2210 > >         Fsharp = (fun () => $'$"%A{!x}"' : string) : () -> string
00:01:40 v #2211 > >         Python = (fun () => $'f"{!x}"' : string) : () -> string
00:01:40 v #2212 > >     }
00:01:41 v #2213 > >
00:01:41 v #2214 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:41 v #2215 > > inl format_debug forall t. (x : t) : string =
00:01:41 v #2216 > >     real format_debug `t x
00:01:41 v #2217 > >
00:01:41 v #2218 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:41 v #2219 > > //// test
00:01:41 v #2220 > > ///! fsharp
00:01:41 v #2221 > > ///! cuda
00:01:41 v #2222 > >
00:01:41 v #2223 > > { c = "1"; a = "2"; b = "3" }
00:01:41 v #2224 > > |> format_debug
00:01:41 v #2225 > > |> _assert_eq (
00:01:41 v #2226 > >     backend_switch {
00:01:41 v #2227 > >         Fsharp = fun () => "struct (\"1\", \"2\", \"3\")" : string
00:01:41 v #2228 > >         Python = fun () => "('1', '2', '3')" : string
00:01:41 v #2229 > >     }
00:01:41 v #2230 > > )
00:01:42 v #2231 > >
00:01:42 v #2232 > > ╭─[ 1.19s - return value ]─────────────────────────────────────────────────────╮
00:01:42 v #2233 > > │ .py output (Cuda):                                                           │
00:01:42 v #2234 > > │ __assert_eq / actual: ('1', '2', '3') / expected: ('1', '2', '3')            │
00:01:42 v #2235 > > │                                                                              │
00:01:42 v #2236 > > │                                                                              │
00:01:42 v #2237 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:42 v #2238 > >
00:01:42 v #2239 > > ╭─[ 1.19s - stdout ]───────────────────────────────────────────────────────────╮
00:01:42 v #2240 > > │ .fsx output:                                                                 │
00:01:42 v #2241 > > │ __assert_eq / actual: "struct ("1", "2", "3")" / expected: "struct ("1",     │
00:01:42 v #2242 > > │ "2", "3")"                                                                   │
00:01:42 v #2243 > > │                                                                              │
00:01:42 v #2244 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:42 v #2245 > >
00:01:42 v #2246 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:42 v #2247 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:42 v #2248 > > │ ### format_pretty                                                            │
00:01:42 v #2249 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:42 v #2250 > >
00:01:42 v #2251 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:42 v #2252 > > //// real
00:01:42 v #2253 > >
00:01:42 v #2254 > > inl format_pretty forall t. (x : t) : string =
00:01:42 v #2255 > >     run_target_args `string `t (fun () => x) function
00:01:42 v #2256 > >         | Rust _ => fun x =>
00:01:42 v #2257 > >             open rust
00:01:42 v #2258 > >             inl result = rust.emit_expr `t `std_string x
00:01:42 v #2259 > > ($'"format\!(\\\"{:#?}\\\", $0)"' : string)
00:01:42 v #2260 > >             from_std_string result
00:01:42 v #2261 > >         | _ => fun _ => format_debug `t x
00:01:43 v #2262 > >
00:01:43 v #2263 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:43 v #2264 > > inl format_pretty forall t. (x : t) : string =
00:01:43 v #2265 > >     real sm'_real.format_pretty `t x
00:01:43 v #2266 > >
00:01:43 v #2267 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:43 v #2268 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:43 v #2269 > > │ ### prim                                                                     │
00:01:43 v #2270 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:43 v #2271 > >
00:01:43 v #2272 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:43 v #2273 > > inl prim x = real
00:01:43 v #2274 > >     match x with
00:01:43 v #2275 > >     | (x : i8) | (x : i16) | (x : i32) | (x : i64) => "%d", x
00:01:43 v #2276 > >     | (x : u8) | (x : u16) | (x : u32) | (x : u64) => "%u", x
00:01:43 v #2277 > >     | (x : f32) | (x : f64) => "%f", x
00:01:43 v #2278 > >     | (x : string) => "%s", x
00:01:43 v #2279 > >     | (x : char) => "%c", x
00:01:44 v #2280 > >
00:01:44 v #2281 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:44 v #2282 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:44 v #2283 > > │ ### printable                                                                │
00:01:44 v #2284 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:44 v #2285 > >
00:01:44 v #2286 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:44 v #2287 > > //// real
00:01:44 v #2288 > >
00:01:44 v #2289 > > prototype printable t : t -> ()
00:01:44 v #2290 > >
00:01:44 v #2291 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:44 v #2292 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:44 v #2293 > > │ ### format_real                                                              │
00:01:44 v #2294 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:44 v #2295 > >
00:01:44 v #2296 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:44 v #2297 > > //// real
00:01:44 v #2298 > >
00:01:44 v #2299 > > let format_real forall t. (x : t) : string =
00:01:44 v #2300 > >     inl result = mut `string (join "")
00:01:44 v #2301 > >     inl rec write x =
00:01:44 v #2302 > >         inl p ((a : string), b) =
00:01:44 v #2303 > >             inl s : string =
00:01:44 v #2304 > >                 backend_switch `string `({}) {
00:01:44 v #2305 > >                     Fsharp =
00:01:44 v #2306 > >                         (fun () =>
00:01:44 v #2307 > >                             match b with
00:01:44 v #2308 > >                             | (_ : f32) | (_ : f64) => $'$"%+.6f{!b}"' : string
00:01:44 v #2309 > >                             | _ => $'$"{!b}"' : string
00:01:44 v #2310 > >                         ) : () -> string
00:01:44 v #2311 > >                     Python =
00:01:44 v #2312 > >                         (fun () =>
00:01:44 v #2313 > >                             match b with
00:01:44 v #2314 > >                             | (_ : f32) | (_ : f64) => $'"{:.6f}".format(!b)' :
00:01:44 v #2315 > > string
00:01:44 v #2316 > >                             | _ => $'f"{!b}"' : string
00:01:44 v #2317 > >                         ) : () -> string
00:01:44 v #2318 > >                 }
00:01:44 v #2319 > >             exec_unit ((fun () => result <- (+.) `string ((~*) `string result)
00:01:44 v #2320 > > s) : () -> ())
00:01:44 v #2321 > >
00:01:44 v #2322 > >         match x with // According to Bing it shouldn't matter whether these are
00:01:44 v #2323 > > %d or %lld in printf.
00:01:44 v #2324 > >         | () => ()
00:01:44 v #2325 > >         | (x : i8) | (x : i16) | (x : i32) | (x : i64) => p ("%d", x)
00:01:44 v #2326 > >         | (x : u8) | (x : u16) | (x : u32) | (x : u64) => p ("%u", x)
00:01:44 v #2327 > >         | (x : f32) | (x : f64) => p ("%f", x)
00:01:44 v #2328 > >         | (x : string) => p ("%s", x)
00:01:44 v #2329 > >         | (x : char) => p ("%c", x)
00:01:44 v #2330 > >         | (x : bool) => p ("%s", if x then "true" else "false")
00:01:44 v #2331 > >         | (a,b) => write a . write ", " . write b
00:01:44 v #2332 > >         | {} as x =>
00:01:44 v #2333 > >             write "{ "
00:01:44 v #2334 > >             inl _result =
00:01:44 v #2335 > >                 real_core.record_fold
00:01:44 v #2336 > >                     fun { state = separator key value } =>
00:01:44 v #2337 > >                         write separator
00:01:44 v #2338 > >                         write (symbol_to_string `(`key)) . write " = " . write
00:01:44 v #2339 > > value
00:01:44 v #2340 > >                         "; "
00:01:44 v #2341 > >                     () x
00:01:44 v #2342 > >             write " }"
00:01:44 v #2343 > >         | x when real_core.symbol_is x => write (symbol_to_string `(`x))
00:01:44 v #2344 > >         | x when real_core.function_is x => write (x ())
00:01:44 v #2345 > >         | x when real_core.union_is x =>
00:01:44 v #2346 > >             if real_core.prototype_has `(`x) printable then printable `(`x) x
00:01:44 v #2347 > >             else
00:01:44 v #2348 > >                 write (format_debug `(`x) x)
00:01:44 v #2349 > >                 // real_core.unbox x (fun (k, v) =>
00:01:44 v #2350 > >                 //     write k
00:01:44 v #2351 > >                 //     match v with
00:01:44 v #2352 > >                 //     | () => ()
00:01:44 v #2353 > >                 //     | _ => write "(" . write v . write ")"
00:01:44 v #2354 > >                 //     )
00:01:44 v #2355 > >         | x when real_core.nominal_is x =>
00:01:44 v #2356 > >             if real_core.prototype_has `(`x) printable then printable `(`x) x
00:01:44 v #2357 > >             // elif layout_is x then write *x // TODO: Deal with all the layout
00:01:44 v #2358 > > type cases.
00:01:44 v #2359 > >             else write (format_pretty `(`x) x)
00:01:44 v #2360 > >         | x => write (format_debug `(`x) x)
00:01:44 v #2361 > >     write x
00:01:44 v #2362 > >     (~*) `string result
00:01:44 v #2363 > >
00:01:44 v #2364 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:44 v #2365 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:44 v #2366 > > │ ### format                                                                   │
00:01:44 v #2367 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:44 v #2368 > >
00:01:44 v #2369 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:44 v #2370 > > inl format forall t. (x : t) : string =
00:01:44 v #2371 > >     real format_real `t x
00:01:45 v #2372 > >
00:01:45 v #2373 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:45 v #2374 > > //// test
00:01:45 v #2375 > > ///! fsharp
00:01:45 v #2376 > > ////! cuda
00:01:45 v #2377 > > ////! rust
00:01:45 v #2378 > > ////! typescript
00:01:45 v #2379 > > ////! python
00:01:45 v #2380 > >
00:01:45 v #2381 > > ("1", "2", [["3"; "4"]], { b = "5"; c = "6"; a = fun () => "7" })
00:01:45 v #2382 > > |> format
00:01:45 v #2383 > > |> _assert_eq "1, 2, UH0_1 (\"3\", UH0_1 (\"4\", UH0_0)), { b = 5; c = 6; a = 7
00:01:45 v #2384 > > }"
00:01:45 v #2385 > >
00:01:45 v #2386 > > ╭─[ 474.55ms - stdout ]────────────────────────────────────────────────────────╮
00:01:45 v #2387 > > │ __assert_eq / actual: "1, 2, UH0_1 ("3", UH0_1 ("4", UH0_0)), { b = 5; c =   │
00:01:45 v #2388 > > │ 6; a = 7 }" / expected: "1, 2, UH0_1 ("3", UH0_1 ("4", UH0_0)), { b = 5; c = │
00:01:45 v #2389 > > │ 6; a = 7 }"                                                                  │
00:01:45 v #2390 > > │                                                                              │
00:01:45 v #2391 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:45 v #2392 > >
00:01:45 v #2393 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:45 v #2394 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:45 v #2395 > > │ ### concat_array_trailing                                                    │
00:01:45 v #2396 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:45 v #2397 > >
00:01:45 v #2398 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:45 v #2399 > > inl concat_array_trailing (separator : string) (input : a i32 string) =
00:01:45 v #2400 > >     ("", input)
00:01:45 v #2401 > >     ||> am.fold fun acc (x : string) =>
00:01:45 v #2402 > >         $'!acc + !x + !separator + ""'
00:01:46 v #2403 > >
00:01:46 v #2404 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:46 v #2405 > > //// test
00:01:46 v #2406 > > ///! fsharp
00:01:46 v #2407 > > ///! rust
00:01:46 v #2408 > > ///! typescript
00:01:46 v #2409 > > ///! python
00:01:46 v #2410 > >
00:01:46 v #2411 > > ;[[
00:01:46 v #2412 > >     "1"
00:01:46 v #2413 > >     "2"
00:01:46 v #2414 > >     "3"
00:01:46 v #2415 > > ]]
00:01:46 v #2416 > > |> fun x =>
00:01:46 v #2417 > >     inl code = (a x : _ i32 _) |> concat_array_trailing "\n"
00:01:46 v #2418 > >     code
00:01:46 v #2419 > >     |> _assert_eq "1\n2\n3\n"
00:01:51 v #2420 > >
00:01:51 v #2421 > > ╭─[ 5.64s - return value ]─────────────────────────────────────────────────────╮
00:01:51 v #2422 > > │                                                                              │
00:01:51 v #2423 > > │ .rs output:                                                                  │
00:01:51 v #2424 > > │ __assert_eq / actual: "1                                                     │
00:01:51 v #2425 > > │ 2                                                                            │
00:01:51 v #2426 > > │ 3                                                                            │
00:01:51 v #2427 > > │ " / expected: "1                                                             │
00:01:51 v #2428 > > │ 2                                                                            │
00:01:51 v #2429 > > │ 3                                                                            │
00:01:51 v #2430 > > │ "                                                                            │
00:01:51 v #2431 > > │                                                                              │
00:01:51 v #2432 > > │                                                                              │
00:01:51 v #2433 > > │ .ts output:                                                                  │
00:01:51 v #2434 > > │ __assert_eq / actual: 1                                                      │
00:01:51 v #2435 > > │ 2                                                                            │
00:01:51 v #2436 > > │ 3                                                                            │
00:01:51 v #2437 > > │  / expected: 1                                                               │
00:01:51 v #2438 > > │ 2                                                                            │
00:01:51 v #2439 > > │ 3                                                                            │
00:01:51 v #2440 > > │                                                                              │
00:01:51 v #2441 > > │                                                                              │
00:01:51 v #2442 > > │                                                                              │
00:01:51 v #2443 > > │ .py output:                                                                  │
00:01:51 v #2444 > > │ __assert_eq / actual: 1                                                      │
00:01:51 v #2445 > > │ 2                                                                            │
00:01:51 v #2446 > > │ 3                                                                            │
00:01:51 v #2447 > > │  / expected: 1                                                               │
00:01:51 v #2448 > > │ 2                                                                            │
00:01:51 v #2449 > > │ 3                                                                            │
00:01:51 v #2450 > > │                                                                              │
00:01:51 v #2451 > > │                                                                              │
00:01:51 v #2452 > > │                                                                              │
00:01:51 v #2453 > > │                                                                              │
00:01:51 v #2454 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:51 v #2455 > >
00:01:51 v #2456 > > ╭─[ 5.64s - stdout ]───────────────────────────────────────────────────────────╮
00:01:51 v #2457 > > │ .fsx output:                                                                 │
00:01:51 v #2458 > > │ __assert_eq / actual: "1                                                     │
00:01:51 v #2459 > > │ 2                                                                            │
00:01:51 v #2460 > > │ 3                                                                            │
00:01:51 v #2461 > > │ " / expected: "1                                                             │
00:01:51 v #2462 > > │ 2                                                                            │
00:01:51 v #2463 > > │ 3                                                                            │
00:01:51 v #2464 > > │ "                                                                            │
00:01:51 v #2465 > > │                                                                              │
00:01:51 v #2466 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:51 v #2467 > >
00:01:51 v #2468 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:51 v #2469 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:51 v #2470 > > │ ### concat_list_trailing                                                     │
00:01:51 v #2471 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:51 v #2472 > >
00:01:51 v #2473 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:51 v #2474 > > inl concat_list_trailing separator input =
00:01:51 v #2475 > >     ("", input)
00:01:51 v #2476 > >     ||> listm.fold fun acc (x : string) =>
00:01:51 v #2477 > >         $'!acc + !x + !separator + ""'
00:01:52 v #2478 > >
00:01:52 v #2479 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:52 v #2480 > > //// test
00:01:52 v #2481 > > ///! fsharp
00:01:52 v #2482 > > ///! cuda
00:01:52 v #2483 > > ///! rust
00:01:52 v #2484 > > ///! typescript
00:01:52 v #2485 > > ///! python
00:01:52 v #2486 > >
00:01:52 v #2487 > > [[
00:01:52 v #2488 > >     "1"
00:01:52 v #2489 > >     "2"
00:01:52 v #2490 > >     "3"
00:01:52 v #2491 > > ]]
00:01:52 v #2492 > > |> fun x =>
00:01:52 v #2493 > >     inl code = (x : _) |> concat_list_trailing "\n"
00:01:52 v #2494 > >     code
00:01:52 v #2495 > >     |> _assert_eq "1\n2\n3\n"
00:01:55 v #2496 > >
00:01:55 v #2497 > > ╭─[ 3.58s - return value ]─────────────────────────────────────────────────────╮
00:01:55 v #2498 > > │                                                                              │
00:01:55 v #2499 > > │ .py output (Cuda):                                                           │
00:01:55 v #2500 > > │ __assert_eq / actual: 1                                                      │
00:01:55 v #2501 > > │ 2                                                                            │
00:01:55 v #2502 > > │ 3                                                                            │
00:01:55 v #2503 > > │  / expected: 1                                                               │
00:01:55 v #2504 > > │ 2                                                                            │
00:01:55 v #2505 > > │ 3                                                                            │
00:01:55 v #2506 > > │                                                                              │
00:01:55 v #2507 > > │                                                                              │
00:01:55 v #2508 > > │                                                                              │
00:01:55 v #2509 > > │ .rs output:                                                                  │
00:01:55 v #2510 > > │ __assert_eq / actual: "1                                                     │
00:01:55 v #2511 > > │ 2                                                                            │
00:01:55 v #2512 > > │ 3                                                                            │
00:01:55 v #2513 > > │ " / expected: "1                                                             │
00:01:55 v #2514 > > │ 2                                                                            │
00:01:55 v #2515 > > │ 3                                                                            │
00:01:55 v #2516 > > │ "                                                                            │
00:01:55 v #2517 > > │                                                                              │
00:01:55 v #2518 > > │                                                                              │
00:01:55 v #2519 > > │ .ts output:                                                                  │
00:01:55 v #2520 > > │ __assert_eq / actual: 1                                                      │
00:01:55 v #2521 > > │ 2                                                                            │
00:01:55 v #2522 > > │ 3                                                                            │
00:01:55 v #2523 > > │  / expected: 1                                                               │
00:01:55 v #2524 > > │ 2                                                                            │
00:01:55 v #2525 > > │ 3                                                                            │
00:01:55 v #2526 > > │                                                                              │
00:01:55 v #2527 > > │                                                                              │
00:01:55 v #2528 > > │                                                                              │
00:01:55 v #2529 > > │ .py output:                                                                  │
00:01:55 v #2530 > > │ __assert_eq / actual: 1                                                      │
00:01:55 v #2531 > > │ 2                                                                            │
00:01:55 v #2532 > > │ 3                                                                            │
00:01:55 v #2533 > > │  / expected: 1                                                               │
00:01:55 v #2534 > > │ 2                                                                            │
00:01:55 v #2535 > > │ 3                                                                            │
00:01:55 v #2536 > > │                                                                              │
00:01:55 v #2537 > > │                                                                              │
00:01:55 v #2538 > > │                                                                              │
00:01:55 v #2539 > > │                                                                              │
00:01:55 v #2540 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:55 v #2541 > >
00:01:55 v #2542 > > ╭─[ 3.58s - stdout ]───────────────────────────────────────────────────────────╮
00:01:55 v #2543 > > │ .fsx output:                                                                 │
00:01:55 v #2544 > > │ __assert_eq / actual: "1                                                     │
00:01:55 v #2545 > > │ 2                                                                            │
00:01:55 v #2546 > > │ 3                                                                            │
00:01:55 v #2547 > > │ " / expected: "1                                                             │
00:01:55 v #2548 > > │ 2                                                                            │
00:01:55 v #2549 > > │ 3                                                                            │
00:01:55 v #2550 > > │ "                                                                            │
00:01:55 v #2551 > > │                                                                              │
00:01:55 v #2552 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:55 v #2553 > >
00:01:55 v #2554 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:55 v #2555 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:55 v #2556 > > │ ### concat_list_heap_trailing                                                │
00:01:55 v #2557 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:55 v #2558 > >
00:01:55 v #2559 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:55 v #2560 > > inl concat_list_heap_trailing separator input =
00:01:55 v #2561 > >     inl separator = join separator
00:01:55 v #2562 > >     ("", input)
00:01:55 v #2563 > >     ||> listm.fold fun acc (x : string) =>
00:01:55 v #2564 > >         backend_switch {
00:01:55 v #2565 > >             Fsharp = fun () => $'$"{!acc}{!x}{!separator}"' : string
00:01:55 v #2566 > >             Python = fun () => $'f"{!acc}{!x}{!separator}"' : string
00:01:55 v #2567 > >         }
00:01:56 v #2568 > >
00:01:56 v #2569 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:56 v #2570 > > //// test
00:01:56 v #2571 > > ///! fsharp
00:01:56 v #2572 > > ///! cuda
00:01:56 v #2573 > > ///! rust
00:01:56 v #2574 > > ///! typescript
00:01:56 v #2575 > > ///! python
00:01:56 v #2576 > >
00:01:56 v #2577 > > [[
00:01:56 v #2578 > >     "1"
00:01:56 v #2579 > >     "2"
00:01:56 v #2580 > >     "3"
00:01:56 v #2581 > > ]]
00:01:56 v #2582 > > |> fun x =>
00:01:56 v #2583 > >     inl code = (x : _) |> concat_list_heap_trailing "\n"
00:01:56 v #2584 > >     code
00:01:56 v #2585 > >     |> _assert_eq "1\n2\n3\n"
00:01:59 v #2586 > >
00:01:59 v #2587 > > ╭─[ 3.42s - return value ]─────────────────────────────────────────────────────╮
00:01:59 v #2588 > > │                                                                              │
00:01:59 v #2589 > > │ .py output (Cuda):                                                           │
00:01:59 v #2590 > > │ __assert_eq / actual: 1                                                      │
00:01:59 v #2591 > > │ 2                                                                            │
00:01:59 v #2592 > > │ 3                                                                            │
00:01:59 v #2593 > > │  / expected: 1                                                               │
00:01:59 v #2594 > > │ 2                                                                            │
00:01:59 v #2595 > > │ 3                                                                            │
00:01:59 v #2596 > > │                                                                              │
00:01:59 v #2597 > > │                                                                              │
00:01:59 v #2598 > > │                                                                              │
00:01:59 v #2599 > > │ .rs output:                                                                  │
00:01:59 v #2600 > > │ __assert_eq / actual: "1                                                     │
00:01:59 v #2601 > > │ 2                                                                            │
00:01:59 v #2602 > > │ 3                                                                            │
00:01:59 v #2603 > > │ " / expected: "1                                                             │
00:01:59 v #2604 > > │ 2                                                                            │
00:01:59 v #2605 > > │ 3                                                                            │
00:01:59 v #2606 > > │ "                                                                            │
00:01:59 v #2607 > > │                                                                              │
00:01:59 v #2608 > > │                                                                              │
00:01:59 v #2609 > > │ .ts output:                                                                  │
00:01:59 v #2610 > > │ __assert_eq / actual: 1                                                      │
00:01:59 v #2611 > > │ 2                                                                            │
00:01:59 v #2612 > > │ 3                                                                            │
00:01:59 v #2613 > > │  / expected: 1                                                               │
00:01:59 v #2614 > > │ 2                                                                            │
00:01:59 v #2615 > > │ 3                                                                            │
00:01:59 v #2616 > > │                                                                              │
00:01:59 v #2617 > > │                                                                              │
00:01:59 v #2618 > > │                                                                              │
00:01:59 v #2619 > > │ .py output:                                                                  │
00:01:59 v #2620 > > │ __assert_eq / actual: 1                                                      │
00:01:59 v #2621 > > │ 2                                                                            │
00:01:59 v #2622 > > │ 3                                                                            │
00:01:59 v #2623 > > │  / expected: 1                                                               │
00:01:59 v #2624 > > │ 2                                                                            │
00:01:59 v #2625 > > │ 3                                                                            │
00:01:59 v #2626 > > │                                                                              │
00:01:59 v #2627 > > │                                                                              │
00:01:59 v #2628 > > │                                                                              │
00:01:59 v #2629 > > │                                                                              │
00:01:59 v #2630 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:59 v #2631 > >
00:01:59 v #2632 > > ╭─[ 3.42s - stdout ]───────────────────────────────────────────────────────────╮
00:01:59 v #2633 > > │ .fsx output:                                                                 │
00:01:59 v #2634 > > │ __assert_eq / actual: "1                                                     │
00:01:59 v #2635 > > │ 2                                                                            │
00:01:59 v #2636 > > │ 3                                                                            │
00:01:59 v #2637 > > │ " / expected: "1                                                             │
00:01:59 v #2638 > > │ 2                                                                            │
00:01:59 v #2639 > > │ 3                                                                            │
00:01:59 v #2640 > > │ "                                                                            │
00:01:59 v #2641 > > │                                                                              │
00:01:59 v #2642 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:59 v #2643 > >
00:01:59 v #2644 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:59 v #2645 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:59 v #2646 > > │ ### ellipsis                                                                 │
00:01:59 v #2647 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:59 v #2648 > >
00:01:59 v #2649 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:59 v #2650 > > inl ellipsis (max : i32) (s : string) =
00:01:59 v #2651 > >     if sm.length s <= max
00:01:59 v #2652 > >     then s
00:01:59 v #2653 > >     else s |> slice 0 (max - 1) |> fun x => $'!x + "..."'
00:02:00 v #2654 > >
00:02:00 v #2655 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:00 v #2656 > > //// test
00:02:00 v #2657 > > ///! fsharp
00:02:00 v #2658 > > ///! cuda
00:02:00 v #2659 > > ///! rust
00:02:00 v #2660 > > ///! typescript
00:02:00 v #2661 > > ///! python
00:02:00 v #2662 > >
00:02:00 v #2663 > > "12345"
00:02:00 v #2664 > > |> ellipsis 2
00:02:00 v #2665 > > |> _assert_eq "12..."
00:02:00 v #2666 > >
00:02:00 v #2667 > > "12345"
00:02:00 v #2668 > > |> ellipsis 4
00:02:00 v #2669 > > |> _assert_eq "1234..."
00:02:03 v #2670 > >
00:02:03 v #2671 > > ╭─[ 3.63s - return value ]─────────────────────────────────────────────────────╮
00:02:03 v #2672 > > │                                                                              │
00:02:03 v #2673 > > │ .py output (Cuda):                                                           │
00:02:03 v #2674 > > │ __assert_eq / actual: 12... / expected: 12...                                │
00:02:03 v #2675 > > │ __assert_eq / actual: 1234... / expected: 1234...                            │
00:02:03 v #2676 > > │                                                                              │
00:02:03 v #2677 > > │                                                                              │
00:02:03 v #2678 > > │ .rs output:                                                                  │
00:02:03 v #2679 > > │ __assert_eq / actual: "12..." / expected: "12..."                            │
00:02:03 v #2680 > > │ __assert_eq / actual: "1234..." / expected: "1234..."                        │
00:02:03 v #2681 > > │                                                                              │
00:02:03 v #2682 > > │                                                                              │
00:02:03 v #2683 > > │ .ts output:                                                                  │
00:02:03 v #2684 > > │ __assert_eq / actual: 12... / expected: 12...                                │
00:02:03 v #2685 > > │ __assert_eq / actual: 1234... / expected: 1234...                            │
00:02:03 v #2686 > > │                                                                              │
00:02:03 v #2687 > > │                                                                              │
00:02:03 v #2688 > > │ .py output:                                                                  │
00:02:03 v #2689 > > │ __assert_eq / actual: 12... / expected: 12...                                │
00:02:03 v #2690 > > │ __assert_eq / actual: 1234... / expected: 1234...                            │
00:02:03 v #2691 > > │                                                                              │
00:02:03 v #2692 > > │                                                                              │
00:02:03 v #2693 > > │                                                                              │
00:02:03 v #2694 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:03 v #2695 > >
00:02:03 v #2696 > > ╭─[ 3.63s - stdout ]───────────────────────────────────────────────────────────╮
00:02:03 v #2697 > > │ .fsx output:                                                                 │
00:02:03 v #2698 > > │ __assert_eq / actual: "12..." / expected: "12..."                            │
00:02:03 v #2699 > > │ __assert_eq / actual: "1234..." / expected: "1234..."                        │
00:02:03 v #2700 > > │                                                                              │
00:02:03 v #2701 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:03 v #2702 > >
00:02:03 v #2703 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:03 v #2704 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:03 v #2705 > > │ ## fsharp                                                                    │
00:02:03 v #2706 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:03 v #2707 > >
00:02:03 v #2708 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:03 v #2709 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:03 v #2710 > > │ ### ends_with                                                                │
00:02:03 v #2711 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:03 v #2712 > >
00:02:03 v #2713 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:03 v #2714 > > inl ends_with (value : string) (s : string) : bool =
00:02:03 v #2715 > >     $'!s.EndsWith !value '
00:02:04 v #2716 > >
00:02:04 v #2717 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:04 v #2718 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:04 v #2719 > > │ ### last_index_of                                                            │
00:02:04 v #2720 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:04 v #2721 > >
00:02:04 v #2722 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:04 v #2723 > > inl last_index_of (search : string) (s : string) : i32 =
00:02:04 v #2724 > >     $'!s.LastIndexOf !search '
00:02:04 v #2725 > >
00:02:04 v #2726 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:04 v #2727 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:04 v #2728 > > │ ### index_of                                                                 │
00:02:04 v #2729 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:04 v #2730 > >
00:02:04 v #2731 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:04 v #2732 > > inl index_of (search : string) (s : string) : i32 =
00:02:04 v #2733 > >     backend_switch {
00:02:04 v #2734 > >         Fsharp = fun () => $'!s.IndexOf !search ' : i32
00:02:04 v #2735 > >         Python = fun () => $'!s.find(!search)' : i32
00:02:04 v #2736 > >     }
00:02:04 v #2737 > >
00:02:04 v #2738 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:04 v #2739 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:04 v #2740 > > │ ### replicate                                                                │
00:02:04 v #2741 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:04 v #2742 > >
00:02:04 v #2743 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:04 v #2744 > > inl replicate (n : i32) (s : string) : string =
00:02:04 v #2745 > >     backend_switch {
00:02:04 v #2746 > >         Fsharp = fun () => s |> $'String.replicate' n : string
00:02:04 v #2747 > >         Python = fun () => $'!s * !n ' : string
00:02:04 v #2748 > >     }
00:02:05 v #2749 > >
00:02:05 v #2750 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:05 v #2751 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:05 v #2752 > > │ ### obj_to_string                                                            │
00:02:05 v #2753 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:05 v #2754 > >
00:02:05 v #2755 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:05 v #2756 > > inl obj_to_string x : string =
00:02:05 v #2757 > >     backend_switch {
00:02:05 v #2758 > >         Fsharp = fun () => x |> $'_.ToString()' : string
00:02:05 v #2759 > >         Python = fun () => $'str(!x)' : string
00:02:05 v #2760 > >     }
00:02:05 v #2761 > >
00:02:05 v #2762 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:05 v #2763 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:05 v #2764 > > │ ### pad_left                                                                 │
00:02:05 v #2765 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:05 v #2766 > >
00:02:05 v #2767 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:05 v #2768 > > inl pad_left (total_width : i32) (padding_char : char) (s : string) : string =
00:02:05 v #2769 > >     backend_switch {
00:02:05 v #2770 > >         Fsharp = fun () => $'!s.PadLeft (!total_width, !padding_char)' : string
00:02:05 v #2771 > >         Python = fun () =>
00:02:05 v #2772 > >             inl padding = padding_char |> obj_to_string |> replicate
00:02:05 v #2773 > > (total_width - length s)
00:02:05 v #2774 > >             padding +. s
00:02:05 v #2775 > >     }
00:02:06 v #2776 > >
00:02:06 v #2777 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:06 v #2778 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:06 v #2779 > > │ ### pad_right                                                                │
00:02:06 v #2780 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:06 v #2781 > >
00:02:06 v #2782 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:06 v #2783 > > inl pad_right (total_width : i32) (padding_char : char) (s : string) : string =
00:02:06 v #2784 > >     backend_switch {
00:02:06 v #2785 > >         Fsharp = fun () => $'!s.PadRight (!total_width, !padding_char)' : string
00:02:06 v #2786 > >         Python = fun () =>
00:02:06 v #2787 > >             inl padding = padding_char |> obj_to_string |> replicate
00:02:06 v #2788 > > (total_width - length s)
00:02:06 v #2789 > >             s +. padding
00:02:06 v #2790 > >     }
00:02:06 v #2791 > >
00:02:06 v #2792 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:06 v #2793 > > //// test
00:02:06 v #2794 > > ///! fsharp
00:02:06 v #2795 > > ///! cuda
00:02:06 v #2796 > > ///! rust
00:02:06 v #2797 > > ///! typescript
00:02:06 v #2798 > > ///! python
00:02:06 v #2799 > >
00:02:06 v #2800 > > "123"
00:02:06 v #2801 > > |> pad_right 6 ' '
00:02:06 v #2802 > > |> _assert_eq "123   "
00:02:10 v #2803 > >
00:02:10 v #2804 > > ╭─[ 3.57s - return value ]─────────────────────────────────────────────────────╮
00:02:10 v #2805 > > │ .py output (Cuda):                                                           │
00:02:10 v #2806 > > │ __assert_eq / actual: 123    / expected: 123                                 │
00:02:10 v #2807 > > │                                                                              │
00:02:10 v #2808 > > │ .rs output:                                                                  │
00:02:10 v #2809 > > │ __assert_eq / actual: "123   " / expected: "123   "                          │
00:02:10 v #2810 > > │                                                                              │
00:02:10 v #2811 > > │ .ts output:                                                                  │
00:02:10 v #2812 > > │ __assert_eq / actual: 123    / expected: 123                                 │
00:02:10 v #2813 > > │                                                                              │
00:02:10 v #2814 > > │ .py output:                                                                  │
00:02:10 v #2815 > > │ __assert_eq / actual: 123    / expected: 123                                 │
00:02:10 v #2816 > > │                                                                              │
00:02:10 v #2817 > > │                                                                              │
00:02:10 v #2818 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:10 v #2819 > >
00:02:10 v #2820 > > ╭─[ 3.57s - stdout ]───────────────────────────────────────────────────────────╮
00:02:10 v #2821 > > │ .fsx output:                                                                 │
00:02:10 v #2822 > > │ __assert_eq / actual: "123   " / expected: "123   "                          │
00:02:10 v #2823 > > │                                                                              │
00:02:10 v #2824 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:10 v #2825 > >
00:02:10 v #2826 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:10 v #2827 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:10 v #2828 > > │ ### convert_to_utf32                                                         │
00:02:10 v #2829 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:10 v #2830 > >
00:02:10 v #2831 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:10 v #2832 > > inl convert_to_utf32 (c : char) : int =
00:02:10 v #2833 > >     backend_switch {
00:02:10 v #2834 > >         Fsharp = fun () =>
00:02:10 v #2835 > >             run_target_args' c function
00:02:10 v #2836 > >             | Fsharp (Native) => fun c => $'System.Char.ConvertToUtf32 (string
00:02:10 v #2837 > > !c, 0)' : int
00:02:10 v #2838 > >             | _ => fun c => c |> i32
00:02:10 v #2839 > >         Python = fun () => $'ord(!c)' : int
00:02:10 v #2840 > >     }
00:02:10 v #2841 > >
00:02:10 v #2842 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:10 v #2843 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:10 v #2844 > > │ ### starts_with                                                              │
00:02:10 v #2845 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:10 v #2846 > >
00:02:10 v #2847 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:10 v #2848 > > inl starts_with (value : string) (s : string) : bool =
00:02:10 v #2849 > >     backend_switch {
00:02:10 v #2850 > >         Fsharp = fun () => $'!s.StartsWith !value ' : bool
00:02:10 v #2851 > >         Python = fun () => $'!s.startswith(!value)' : bool
00:02:10 v #2852 > >     }
00:02:11 v #2853 > >
00:02:11 v #2854 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:11 v #2855 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:11 v #2856 > > │ ### is_white_space                                                           │
00:02:11 v #2857 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:11 v #2858 > >
00:02:11 v #2859 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:11 v #2860 > > inl is_white_space (c : char) : bool =
00:02:11 v #2861 > >     c |> $'System.Char.IsWhiteSpace'
00:02:11 v #2862 > >
00:02:11 v #2863 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:11 v #2864 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:11 v #2865 > > │ ### substring                                                                │
00:02:11 v #2866 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:11 v #2867 > >
00:02:11 v #2868 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:11 v #2869 > > inl substring (start : i32) (len : i32) (str : string) : string =
00:02:11 v #2870 > >     $'!str.Substring (!start, !len)'
00:02:11 v #2871 > >
00:02:11 v #2872 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:11 v #2873 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:11 v #2874 > > │ ### to_lower                                                                 │
00:02:11 v #2875 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:11 v #2876 > >
00:02:11 v #2877 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:11 v #2878 > > inl to_lower (input : string) : string =
00:02:11 v #2879 > >     backend_switch {
00:02:11 v #2880 > >         Fsharp = fun () => $'!input.ToLower' () : string
00:02:11 v #2881 > >         Python = fun () => $'!input.lower()' : string
00:02:11 v #2882 > >     }
00:02:12 v #2883 > >
00:02:12 v #2884 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:12 v #2885 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:12 v #2886 > > │ ### to_upper                                                                 │
00:02:12 v #2887 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:12 v #2888 > >
00:02:12 v #2889 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:12 v #2890 > > inl to_upper (input : string) : string =
00:02:12 v #2891 > >     $'!input.ToUpper' ()
00:02:12 v #2892 > >
00:02:12 v #2893 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:12 v #2894 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:12 v #2895 > > │ ### char_to_upper                                                            │
00:02:12 v #2896 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:12 v #2897 > >
00:02:12 v #2898 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:12 v #2899 > > inl char_to_upper (input : char) : char =
00:02:12 v #2900 > >     backend_switch {
00:02:12 v #2901 > >         Fsharp = fun () => $'System.Char.ToUpper !input ' : char
00:02:12 v #2902 > >         Python = fun () => $'!input.upper()' : char
00:02:12 v #2903 > >     }
00:02:13 v #2904 > >
00:02:13 v #2905 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:13 v #2906 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:13 v #2907 > > │ ### string_builder                                                           │
00:02:13 v #2908 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:13 v #2909 > >
00:02:13 v #2910 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:13 v #2911 > > nominal string_builder_python =
00:02:13 v #2912 > >     `(
00:02:13 v #2913 > >         global "import io"
00:02:13 v #2914 > >         $'' : $'io.StringIO'
00:02:13 v #2915 > >     )
00:02:13 v #2916 > > type string_builder_switch =
00:02:13 v #2917 > >     {
00:02:13 v #2918 > >         Fsharp : $'System.Text.StringBuilder'
00:02:13 v #2919 > >         Python : string_builder_python
00:02:13 v #2920 > >     }
00:02:13 v #2921 > > nominal string_builder = $'backend_switch `(string_builder_switch)'
00:02:13 v #2922 > >
00:02:13 v #2923 > > inl string_builder (initial : string) : string_builder =
00:02:13 v #2924 > >     inl initial =
00:02:13 v #2925 > >         if initial = ""
00:02:13 v #2926 > >         then join initial
00:02:13 v #2927 > >         else initial
00:02:13 v #2928 > >
00:02:13 v #2929 > >     backend_switch {
00:02:13 v #2930 > >         Fsharp = fun () => initial |> $'`string_builder ' : string_builder
00:02:13 v #2931 > >         Python = fun () =>
00:02:13 v #2932 > >             global "import io"
00:02:13 v #2933 > >             global "class CustomStringIO(io.StringIO):\n    def __init__(self,
00:02:13 v #2934 > > init=''):\n        super().__init__()\n        if init != '': self.write(init)\n
00:02:13 v #2935 > > def __str__(self): return self.getvalue()\n    def __repr__(self): return
00:02:13 v #2936 > > self.getvalue()"
00:02:13 v #2937 > >             $'CustomStringIO(!initial)' : string_builder
00:02:13 v #2938 > >     }
00:02:13 v #2939 > >
00:02:13 v #2940 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:13 v #2941 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:13 v #2942 > > │ ### builder_append                                                           │
00:02:13 v #2943 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:13 v #2944 > >
00:02:13 v #2945 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:13 v #2946 > > inl builder_append (item : string) (sb : string_builder) : string_builder =
00:02:13 v #2947 > >     backend_switch {
00:02:13 v #2948 > >         Fsharp = fun () =>
00:02:13 v #2949 > >             ($'!sb.Append' item : string_builder) |> ignore
00:02:13 v #2950 > >             sb
00:02:13 v #2951 > >         Python = fun () =>
00:02:13 v #2952 > >             ($'!sb.write(!item)' : int) |> ignore
00:02:13 v #2953 > >             sb
00:02:13 v #2954 > >     }
00:02:13 v #2955 > >
00:02:13 v #2956 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:13 v #2957 > > //// test
00:02:13 v #2958 > > ///! fsharp
00:02:13 v #2959 > > ///! cuda
00:02:13 v #2960 > > ///! rust
00:02:13 v #2961 > > ///! typescript
00:02:13 v #2962 > > ///! python
00:02:13 v #2963 > >
00:02:13 v #2964 > > "ab"
00:02:13 v #2965 > > |> string_builder
00:02:13 v #2966 > > |> builder_append "cd"
00:02:13 v #2967 > > |> builder_append "ef"
00:02:13 v #2968 > > |> sm'.obj_to_string
00:02:13 v #2969 > > |> _assert_eq "abcdef"
00:02:17 v #2970 > >
00:02:17 v #2971 > > ╭─[ 3.47s - return value ]─────────────────────────────────────────────────────╮
00:02:17 v #2972 > > │ .py output (Cuda):                                                           │
00:02:17 v #2973 > > │ __assert_eq / actual: abcdef / expected: abcdef                              │
00:02:17 v #2974 > > │                                                                              │
00:02:17 v #2975 > > │ .rs output:                                                                  │
00:02:17 v #2976 > > │ __assert_eq / actual: "abcdef" / expected: "abcdef"                          │
00:02:17 v #2977 > > │                                                                              │
00:02:17 v #2978 > > │ .ts output:                                                                  │
00:02:17 v #2979 > > │ __assert_eq / actual: abcdef / expected: abcdef                              │
00:02:17 v #2980 > > │                                                                              │
00:02:17 v #2981 > > │ .py output:                                                                  │
00:02:17 v #2982 > > │ __assert_eq / actual: abcdef / expected: abcdef                              │
00:02:17 v #2983 > > │                                                                              │
00:02:17 v #2984 > > │                                                                              │
00:02:17 v #2985 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:17 v #2986 > >
00:02:17 v #2987 > > ╭─[ 3.47s - stdout ]───────────────────────────────────────────────────────────╮
00:02:17 v #2988 > > │ .fsx output:                                                                 │
00:02:17 v #2989 > > │ __assert_eq / actual: "abcdef" / expected: "abcdef"                          │
00:02:17 v #2990 > > │                                                                              │
00:02:17 v #2991 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:17 v #2992 > >
00:02:17 v #2993 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:17 v #2994 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:17 v #2995 > > │ ### builder_append_line                                                      │
00:02:17 v #2996 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:17 v #2997 > >
00:02:17 v #2998 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:17 v #2999 > > inl builder_append_line (sb : string_builder) : string_builder =
00:02:17 v #3000 > >     backend_switch {
00:02:17 v #3001 > >         Fsharp = fun () =>
00:02:17 v #3002 > >             ($'!sb.AppendLine ()' : string_builder) |> ignore
00:02:17 v #3003 > >             sb
00:02:17 v #3004 > >         Python = fun () =>
00:02:17 v #3005 > >             sb |> builder_append "\n"
00:02:17 v #3006 > >     }
00:02:17 v #3007 > >
00:02:17 v #3008 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:17 v #3009 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:17 v #3010 > > │ ### builder_replace                                                          │
00:02:17 v #3011 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:17 v #3012 > >
00:02:17 v #3013 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:17 v #3014 > > inl builder_replace (old : string) (new : string) (sb : string_builder) :
00:02:17 v #3015 > > string_builder =
00:02:17 v #3016 > >     backend_switch {
00:02:17 v #3017 > >         Fsharp = fun () =>
00:02:17 v #3018 > >             ($'!sb.Replace (!old, !new)' : string_builder) |> ignore
00:02:17 v #3019 > >             sb
00:02:17 v #3020 > >         Python = fun () =>
00:02:17 v #3021 > >             ($'!sb.getvalue().replace(!old, !new)' : string) |> string_builder
00:02:17 v #3022 > >     }
00:02:18 v #3023 > >
00:02:18 v #3024 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:18 v #3025 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:18 v #3026 > > │ ### builder_insert                                                           │
00:02:18 v #3027 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:18 v #3028 > >
00:02:18 v #3029 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:18 v #3030 > > inl builder_insert (i : i32) (s : string) (sb : string_builder) : string_builder
00:02:18 v #3031 > > =
00:02:18 v #3032 > >     backend_switch {
00:02:18 v #3033 > >         Fsharp = fun () =>
00:02:18 v #3034 > >             ($'!sb.Insert (!i, !s)' : string_builder) |> ignore
00:02:18 v #3035 > >             sb
00:02:18 v #3036 > >         Python = fun () =>
00:02:18 v #3037 > >             inl sb = sb |> obj_to_string
00:02:18 v #3038 > >             $'"".join([[!sb[[:!i]], !s, !sb[[!i:]]]])' |> string_builder
00:02:18 v #3039 > >     }
00:02:18 v #3040 > >
00:02:18 v #3041 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:18 v #3042 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:18 v #3043 > > │ ### builder_clear                                                            │
00:02:18 v #3044 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:18 v #3045 > >
00:02:18 v #3046 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:18 v #3047 > > inl builder_clear (sb : string_builder) : string_builder =
00:02:18 v #3048 > >     backend_switch {
00:02:18 v #3049 > >         Fsharp = fun () =>
00:02:18 v #3050 > >             ($'!sb.Clear' () : string_builder) |> ignore
00:02:18 v #3051 > >             sb
00:02:18 v #3052 > >         Python = fun () =>
00:02:18 v #3053 > >             ($'!sb.truncate(0)' : int) |> ignore
00:02:18 v #3054 > >             ($'!sb.seek(0)' : int) |> ignore
00:02:18 v #3055 > >             sb
00:02:18 v #3056 > >     }
00:02:19 v #3057 > >
00:02:19 v #3058 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:19 v #3059 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:19 v #3060 > > │ ### trim                                                                     │
00:02:19 v #3061 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:19 v #3062 > >
00:02:19 v #3063 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:19 v #3064 > > inl trim (input : string) : string =
00:02:19 v #3065 > >     backend_switch {
00:02:19 v #3066 > >         Fsharp = fun () => $'!input.Trim' () : string
00:02:19 v #3067 > >         Python = fun () => $'!input.strip()' : string
00:02:19 v #3068 > >     }
00:02:19 v #3069 > >
00:02:19 v #3070 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:19 v #3071 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:19 v #3072 > > │ ### concat                                                                   │
00:02:19 v #3073 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:19 v #3074 > >
00:02:19 v #3075 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:19 v #3076 > > inl concat (a : string) (b : seq.seq' string) : string =
00:02:19 v #3077 > >     backend_switch {
00:02:19 v #3078 > >         Fsharp = fun () =>
00:02:19 v #3079 > >             inl a =
00:02:19 v #3080 > >                 if a = "\n"
00:02:19 v #3081 > >                 then join a
00:02:19 v #3082 > >                 else a
00:02:19 v #3083 > >             b |> $'String.concat' a : string
00:02:19 v #3084 > >         Python = fun () =>
00:02:19 v #3085 > >             $'!a.join(!b)' : string
00:02:19 v #3086 > >     }
00:02:19 v #3087 > >
00:02:19 v #3088 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:19 v #3089 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:19 v #3090 > > │ ### trim_end                                                                 │
00:02:19 v #3091 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:19 v #3092 > >
00:02:19 v #3093 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:19 v #3094 > > inl trim_end (trim_chars : list char) (input : string) : string =
00:02:19 v #3095 > >     inl trim_chars = trim_chars |> listm'.box
00:02:19 v #3096 > >     backend_switch {
00:02:19 v #3097 > >         Fsharp = fun () =>
00:02:19 v #3098 > >             inl trim_chars = trim_chars |> listm'.to_array'
00:02:19 v #3099 > >             $'!input.TrimEnd !trim_chars ' : string
00:02:19 v #3100 > >         Python = fun () =>
00:02:19 v #3101 > >             inl trim_chars = trim_chars |> listm'.map obj_to_string |>
00:02:19 v #3102 > > seq.of_list' |> concat ""
00:02:19 v #3103 > >             $'!input.rstrip(!trim_chars)' : string
00:02:19 v #3104 > >     }
00:02:20 v #3105 > >
00:02:20 v #3106 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:20 v #3107 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:20 v #3108 > > │ ### trim_start                                                               │
00:02:20 v #3109 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:20 v #3110 > >
00:02:20 v #3111 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:20 v #3112 > > inl trim_start (trim_chars : list char) (input : string) : string =
00:02:20 v #3113 > >     inl trim_chars = trim_chars |> listm'.box
00:02:20 v #3114 > >     backend_switch {
00:02:20 v #3115 > >         Fsharp = fun () =>
00:02:20 v #3116 > >             inl trim_chars = trim_chars |> listm'.to_array'
00:02:20 v #3117 > >             $'!input.TrimStart !trim_chars ' : string
00:02:20 v #3118 > >         Python = fun () =>
00:02:20 v #3119 > >             inl trim_chars = trim_chars |> listm'.map obj_to_string |>
00:02:20 v #3120 > > seq.of_list' |> concat ""
00:02:20 v #3121 > >             $'!input.lstrip(!trim_chars)' : string
00:02:20 v #3122 > >     }
00:02:20 v #3123 > >
00:02:20 v #3124 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:20 v #3125 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:20 v #3126 > > │ ### length'                                                                  │
00:02:20 v #3127 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:20 v #3128 > >
00:02:20 v #3129 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:20 v #3130 > > inl length' forall dim. (input : string) : dim =
00:02:20 v #3131 > >     backend_switch {
00:02:20 v #3132 > >         Fsharp = fun () => input |> $'String.length' : dim
00:02:20 v #3133 > >         Python = fun () => $'len(!input)' : dim
00:02:20 v #3134 > >     }
00:02:21 v #3135 > >
00:02:21 v #3136 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:21 v #3137 > > //// test
00:02:21 v #3138 > > ///! fsharp
00:02:21 v #3139 > > ///! cuda
00:02:21 v #3140 > >
00:02:21 v #3141 > > "abc"
00:02:21 v #3142 > > |> length'
00:02:21 v #3143 > > |> _assert_eq 3i32
00:02:22 v #3144 > >
00:02:22 v #3145 > > ╭─[ 1.06s - return value ]─────────────────────────────────────────────────────╮
00:02:22 v #3146 > > │ .py output (Cuda):                                                           │
00:02:22 v #3147 > > │ __assert_eq / actual: 3 / expected: 3                                        │
00:02:22 v #3148 > > │                                                                              │
00:02:22 v #3149 > > │                                                                              │
00:02:22 v #3150 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:22 v #3151 > >
00:02:22 v #3152 > > ╭─[ 1.06s - stdout ]───────────────────────────────────────────────────────────╮
00:02:22 v #3153 > > │ .fsx output:                                                                 │
00:02:22 v #3154 > > │ __assert_eq / actual: 3 / expected: 3                                        │
00:02:22 v #3155 > > │                                                                              │
00:02:22 v #3156 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:22 v #3157 > >
00:02:22 v #3158 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:22 v #3159 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:22 v #3160 > > │ ### to_string any                                                            │
00:02:22 v #3161 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:22 v #3162 > >
00:02:22 v #3163 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:22 v #3164 > > instance to_string any =
00:02:22 v #3165 > >     obj_to_string
00:02:22 v #3166 > >
00:02:22 v #3167 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:22 v #3168 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:22 v #3169 > > │ ### (~$)                                                                     │
00:02:22 v #3170 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:22 v #3171 > >
00:02:22 v #3172 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:22 v #3173 > > inl (~$) s =
00:02:22 v #3174 > >     s |> obj_to_string
00:02:23 v #3175 > >
00:02:23 v #3176 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:23 v #3177 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:23 v #3178 > > │ ### replace                                                                  │
00:02:23 v #3179 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:23 v #3180 > >
00:02:23 v #3181 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:23 v #3182 > > inl replace (old_value : string) (new_value : string) (s : string) : string =
00:02:23 v #3183 > >     $'!s.Replace (!old_value, !new_value)'
00:02:23 v #3184 > >
00:02:23 v #3185 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:23 v #3186 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:23 v #3187 > > │ ### split                                                                    │
00:02:23 v #3188 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:23 v #3189 > >
00:02:23 v #3190 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:23 v #3191 > > inl split (separator : string) (str : string) : array_base string =
00:02:23 v #3192 > >     backend_switch {
00:02:23 v #3193 > >         Fsharp = fun () => $'!str.Split !separator ' : array_base string
00:02:23 v #3194 > >         Python = fun () => $'!str.split(!separator)' : array_base string
00:02:23 v #3195 > >     }
00:02:23 v #3196 > >
00:02:23 v #3197 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:23 v #3198 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:23 v #3199 > > │ ### split_string                                                             │
00:02:23 v #3200 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:23 v #3201 > >
00:02:23 v #3202 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:23 v #3203 > > inl split_string (separator : array_base string) (str : string) : array_base
00:02:23 v #3204 > > string =
00:02:23 v #3205 > >     run_target_args (fun () => str, separator) function
00:02:23 v #3206 > >         | Fsharp (Native) => fun str, separator => $'!str.Split (!separator,
00:02:23 v #3207 > > System.StringSplitOptions.None)'
00:02:23 v #3208 > >         | _ => fun str, separator => str |> split ((a separator : _ int _) |>
00:02:23 v #3209 > > seq.of_array |> concat (join ""))
00:02:24 v #3210 > >
00:02:24 v #3211 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:24 v #3212 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:24 v #3213 > > │ ### join'                                                                    │
00:02:24 v #3214 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:24 v #3215 > >
00:02:24 v #3216 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:24 v #3217 > > inl join' (concat : string) (s : a int string) : string =
00:02:24 v #3218 > >     $'System.String.Join (!concat, !s)'
00:02:24 v #3219 > >
00:02:24 v #3220 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:24 v #3221 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:24 v #3222 > > │ ### encoding                                                                 │
00:02:24 v #3223 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:24 v #3224 > >
00:02:24 v #3225 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:24 v #3226 > > nominal encoding = $'System.Text.Encoding'
00:02:25 v #3227 > >
00:02:25 v #3228 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:25 v #3229 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:25 v #3230 > > │ ### encoding_utf8                                                            │
00:02:25 v #3231 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:25 v #3232 > >
00:02:25 v #3233 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:25 v #3234 > > inl encoding_utf8 () : encoding =
00:02:25 v #3235 > >     $'`encoding.UTF8'
00:02:25 v #3236 > >
00:02:25 v #3237 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:25 v #3238 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:25 v #3239 > > │ ### utf8_get_bytes                                                           │
00:02:25 v #3240 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:25 v #3241 > >
00:02:25 v #3242 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:25 v #3243 > > inl utf8_get_bytes (s : string) : a i32 u8 =
00:02:25 v #3244 > >     s |> (encoding_utf8 () |> $'_.GetBytes')
00:02:25 v #3245 > >
00:02:25 v #3246 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:25 v #3247 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:25 v #3248 > > │ ### byte_to_string                                                           │
00:02:25 v #3249 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:25 v #3250 > >
00:02:25 v #3251 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:25 v #3252 > > inl byte_to_string (format : string) (x : u8) : string =
00:02:25 v #3253 > >     $'!x.ToString' format
00:02:26 v #3254 > >
00:02:26 v #3255 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:26 v #3256 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:26 v #3257 > > │ ## rust                                                                      │
00:02:26 v #3258 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:26 v #3259 > >
00:02:26 v #3260 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:26 v #3261 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:26 v #3262 > > │ ### str                                                                      │
00:02:26 v #3263 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:26 v #3264 > >
00:02:26 v #3265 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:26 v #3266 > > nominal str =
00:02:26 v #3267 > >     `(
00:02:26 v #3268 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:02:26 v #3269 > > Fable.Core.Emit(\"str\")>]]\ntype Str = class end\n#else\ntype Str =
00:02:26 v #3270 > > string\n#endif\n"
00:02:26 v #3271 > >         $'' : $'Str'
00:02:26 v #3272 > >     )
00:02:26 v #3273 > >
00:02:26 v #3274 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:26 v #3275 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:26 v #3276 > > │ ### chars                                                                    │
00:02:26 v #3277 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:26 v #3278 > >
00:02:26 v #3279 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:26 v #3280 > > inl chars (x : rust.ref str) : rust.mut' (into_iterator char) =
00:02:26 v #3281 > >     !\\(x, $'$"$0.chars()"')
00:02:27 v #3282 > >
00:02:27 v #3283 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:27 v #3284 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:27 v #3285 > > │ ### char_is_alphanumeric                                                     │
00:02:27 v #3286 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:27 v #3287 > >
00:02:27 v #3288 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:27 v #3289 > > inl char_is_alphanumeric (x : char) : bool =
00:02:27 v #3290 > >     !\\(x, $'$"$0.is_alphanumeric()"')
00:02:27 v #3291 > >
00:02:27 v #3292 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:27 v #3293 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:27 v #3294 > > │ ### byte_slice                                                               │
00:02:27 v #3295 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:27 v #3296 > >
00:02:27 v #3297 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:27 v #3298 > > inl byte_slice (s : string) : rust.ref (am'.slice u8) =
00:02:27 v #3299 > >     !\($'"b\\\"" + !s + "\\\""')
00:02:28 v #3300 > >
00:02:28 v #3301 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:28 v #3302 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:28 v #3303 > > │ ### display                                                                  │
00:02:28 v #3304 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:28 v #3305 > >
00:02:28 v #3306 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:28 v #3307 > > nominal display t =
00:02:28 v #3308 > >     `(
00:02:28 v #3309 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:02:28 v #3310 > > Fable.Core.Emit(\"std::fmt::Display<$0>\")>]]\n#endif\ntype std_fmt_Display<'T>
00:02:28 v #3311 > > = class end"
00:02:28 v #3312 > >         $'' : $'std_fmt_Display<`t>'
00:02:28 v #3313 > >     )
00:02:28 v #3314 > >
00:02:28 v #3315 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:28 v #3316 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:28 v #3317 > > │ ### base64_decode_error                                                      │
00:02:28 v #3318 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:28 v #3319 > >
00:02:28 v #3320 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:28 v #3321 > > nominal base64_decode_error =
00:02:28 v #3322 > >     `(
00:02:28 v #3323 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:02:28 v #3324 > > Fable.Core.Emit(\"base64::DecodeError\")>]]\n#endif\ntype base64_DecodeError =
00:02:28 v #3325 > > class end"
00:02:28 v #3326 > >         $'' : $'base64_DecodeError'
00:02:28 v #3327 > >     )
00:02:28 v #3328 > >
00:02:28 v #3329 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:28 v #3330 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:28 v #3331 > > │ ### borsh_io_error                                                           │
00:02:28 v #3332 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:28 v #3333 > >
00:02:28 v #3334 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:28 v #3335 > > nominal borsh_io_error =
00:02:28 v #3336 > >     `(
00:02:28 v #3337 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:02:28 v #3338 > > Fable.Core.Emit(\"borsh::io::Error\")>]]\n#endif\ntype borsh_io_Error = class
00:02:28 v #3339 > > end"
00:02:28 v #3340 > >         $'' : $'borsh_io_Error'
00:02:28 v #3341 > >     )
00:02:29 v #3342 > >
00:02:29 v #3343 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:29 v #3344 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:29 v #3345 > > │ ### utf8_error                                                               │
00:02:29 v #3346 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:29 v #3347 > >
00:02:29 v #3348 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:29 v #3349 > > nominal utf8_error =
00:02:29 v #3350 > >     `(
00:02:29 v #3351 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:02:29 v #3352 > > Fable.Core.Emit(\"std::str::Utf8Error\")>]]\n#endif\ntype std_str_Utf8Error =
00:02:29 v #3353 > > class end"
00:02:29 v #3354 > >         $'' : $'std_str_Utf8Error'
00:02:29 v #3355 > >     )
00:02:29 v #3356 > >
00:02:29 v #3357 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:29 v #3358 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:29 v #3359 > > │ ### from_utf8_error                                                          │
00:02:29 v #3360 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:29 v #3361 > >
00:02:29 v #3362 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:29 v #3363 > > nominal from_utf8_error =
00:02:29 v #3364 > >     `(
00:02:29 v #3365 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:02:29 v #3366 > > Fable.Core.Emit(\"std::string::FromUtf8Error\")>]]\n#endif\ntype
00:02:29 v #3367 > > std_string_FromUtf8Error = class end"
00:02:29 v #3368 > >         $'' : $'std_string_FromUtf8Error'
00:02:29 v #3369 > >     )
00:02:30 v #3370 > >
00:02:30 v #3371 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:30 v #3372 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:30 v #3373 > > │ ### json_value                                                               │
00:02:30 v #3374 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:30 v #3375 > >
00:02:30 v #3376 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:30 v #3377 > > nominal json_value =
00:02:30 v #3378 > >     `(
00:02:30 v #3379 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:02:30 v #3380 > > Fable.Core.Emit(\"serde_json::Value\")>]]\n#endif\ntype serde_json_Value = class
00:02:30 v #3381 > > end"
00:02:30 v #3382 > >         $'' : $'serde_json_Value'
00:02:30 v #3383 > >     )
00:02:30 v #3384 > >
00:02:30 v #3385 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:30 v #3386 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:30 v #3387 > > │ ### json_error                                                               │
00:02:30 v #3388 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:30 v #3389 > >
00:02:30 v #3390 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:30 v #3391 > > nominal json_error =
00:02:30 v #3392 > >     `(
00:02:30 v #3393 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:02:30 v #3394 > > Fable.Core.Emit(\"serde_json::Error\")>]]\n#endif\ntype serde_json_Error = class
00:02:30 v #3395 > > end"
00:02:30 v #3396 > >         $'' : $'serde_json_Error'
00:02:30 v #3397 > >     )
00:02:30 v #3398 > >
00:02:30 v #3399 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:30 v #3400 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:30 v #3401 > > │ ### serde_wasm_bindgen_error                                                 │
00:02:30 v #3402 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:30 v #3403 > >
00:02:30 v #3404 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:30 v #3405 > > nominal serde_wasm_bindgen_error =
00:02:30 v #3406 > >     `(
00:02:30 v #3407 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:02:30 v #3408 > > Fable.Core.Emit(\"serde_wasm_bindgen::Error\")>]]\n#endif\ntype
00:02:30 v #3409 > > serde_wasm_bindgen_Error = class end"
00:02:30 v #3410 > >         $'' : $'serde_wasm_bindgen_Error'
00:02:30 v #3411 > >     )
00:02:31 v #3412 > >
00:02:31 v #3413 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:31 v #3414 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:31 v #3415 > > │ ### js_string                                                                │
00:02:31 v #3416 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:31 v #3417 > >
00:02:31 v #3418 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:31 v #3419 > > nominal js_string =
00:02:31 v #3420 > >     `(
00:02:31 v #3421 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:02:31 v #3422 > > Fable.Core.Emit(\"js_sys::JsString\")>]]\n#endif\ntype js_sys_JsString = class
00:02:31 v #3423 > > end"
00:02:31 v #3424 > >         $'' : $'js_sys_JsString'
00:02:31 v #3425 > >     )
00:02:31 v #3426 > >
00:02:31 v #3427 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:31 v #3428 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:31 v #3429 > > │ ### os_str                                                                   │
00:02:31 v #3430 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:31 v #3431 > >
00:02:31 v #3432 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:31 v #3433 > > nominal os_str =
00:02:31 v #3434 > >     `(
00:02:31 v #3435 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:02:31 v #3436 > > Fable.Core.Emit(\"std::ffi::OsStr\")>]]\n#endif\ntype std_ffi_OsStr = class end"
00:02:31 v #3437 > >         $'' : $'std_ffi_OsStr'
00:02:31 v #3438 > >     )
00:02:32 v #3439 > >
00:02:32 v #3440 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:32 v #3441 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:32 v #3442 > > │ ### os_string                                                                │
00:02:32 v #3443 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:32 v #3444 > >
00:02:32 v #3445 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:32 v #3446 > > nominal os_string =
00:02:32 v #3447 > >     `(
00:02:32 v #3448 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:02:32 v #3449 > > Fable.Core.Emit(\"std::ffi::OsString\")>]]\n#endif\ntype std_ffi_OsString =
00:02:32 v #3450 > > class end"
00:02:32 v #3451 > >         $'' : $'std_ffi_OsString'
00:02:32 v #3452 > >     )
00:02:32 v #3453 > >
00:02:32 v #3454 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:32 v #3455 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:32 v #3456 > > │ ### raw_string_literal                                                       │
00:02:32 v #3457 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:32 v #3458 > >
00:02:32 v #3459 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:32 v #3460 > > inl raw_string_literal (s : string) : rust.ref str =
00:02:32 v #3461 > >     !\($'"r#\\"" + !s + "\\"#"')
00:02:33 v #3462 > >
00:02:33 v #3463 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:33 v #3464 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:33 v #3465 > > │ ### raw_string_literal_static                                                │
00:02:33 v #3466 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:33 v #3467 > >
00:02:33 v #3468 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:33 v #3469 > > inl raw_string_literal_static (s : string) : rust.static_ref str =
00:02:33 v #3470 > >     !\($'"r#\\"" + !s + "\\"#"')
00:02:33 v #3471 > >
00:02:33 v #3472 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:33 v #3473 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:33 v #3474 > > │ ### (~#)                                                                     │
00:02:33 v #3475 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:33 v #3476 > >
00:02:33 v #3477 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:33 v #3478 > > inl (~#) s =
00:02:33 v #3479 > >     s |> raw_string_literal
00:02:33 v #3480 > >
00:02:33 v #3481 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:33 v #3482 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:33 v #3483 > > │ ### (~##)                                                                    │
00:02:33 v #3484 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:33 v #3485 > >
00:02:33 v #3486 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:33 v #3487 > > inl (~##) s =
00:02:33 v #3488 > >     s |> raw_string_literal_static
00:02:34 v #3489 > >
00:02:34 v #3490 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:34 v #3491 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:34 v #3492 > > │ ### include_str                                                              │
00:02:34 v #3493 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:34 v #3494 > >
00:02:34 v #3495 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:34 v #3496 > > inl include_str (path : string) : rust.ref str =
00:02:34 v #3497 > >     !\($'"include_str\!(\\\"" + !path + "\\\")"')
00:02:34 v #3498 > >
00:02:34 v #3499 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:34 v #3500 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:34 v #3501 > > │ ### as_str                                                                   │
00:02:34 v #3502 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:34 v #3503 > >
00:02:34 v #3504 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:34 v #3505 > > inl as_str (s : string) : rust.ref str =
00:02:34 v #3506 > >     // !\\(s, $'"fable_library_rust::String_::LrcStr::as_str(&$0)"')
00:02:34 v #3507 > >     run_target_args (fun () => s) function
00:02:34 v #3508 > >         | Rust _ => fun s => !\\(s, $'"&*$0"')
00:02:34 v #3509 > >         | _ => fun s => s |> unbox
00:02:35 v #3510 > >
00:02:35 v #3511 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:35 v #3512 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:35 v #3513 > > │ ### from_iter                                                                │
00:02:35 v #3514 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:35 v #3515 > >
00:02:35 v #3516 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:35 v #3517 > > inl from_iter forall (t : * -> *). (s : t char) : std_string =
00:02:35 v #3518 > >     !\\(s, $'"String::from_iter($0)"')
00:02:35 v #3519 > >
00:02:35 v #3520 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:35 v #3521 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:35 v #3522 > > │ ### ref_to_std_string                                                        │
00:02:35 v #3523 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:35 v #3524 > >
00:02:35 v #3525 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:35 v #3526 > > inl ref_to_std_string (str : rust.ref str) : std_string =
00:02:35 v #3527 > >     run_target_args (fun () => str) function
00:02:35 v #3528 > >         | Rust _ => fun str => !\\(str, $'"String::from($0)"')
00:02:35 v #3529 > >         | _ => fun str => str |> unbox
00:02:36 v #3530 > >
00:02:36 v #3531 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:36 v #3532 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:36 v #3533 > > │ ### cow_to_std_string                                                        │
00:02:36 v #3534 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:36 v #3535 > >
00:02:36 v #3536 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:36 v #3537 > > inl cow_to_std_string (str : rust.cow str) : std_string =
00:02:36 v #3538 > >     !\\(str, $'"String::from($0)"')
00:02:36 v #3539 > >
00:02:36 v #3540 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:36 v #3541 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:36 v #3542 > > │ ### to_std_string                                                            │
00:02:36 v #3543 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:36 v #3544 > >
00:02:36 v #3545 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:36 v #3546 > > inl to_std_string (s : string) : std_string =
00:02:36 v #3547 > >     s |> as_str |> ref_to_std_string
00:02:36 v #3548 > >
00:02:36 v #3549 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:36 v #3550 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:36 v #3551 > > │ ### as_str_std                                                               │
00:02:36 v #3552 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:36 v #3553 > >
00:02:36 v #3554 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:36 v #3555 > > inl as_str_std (s : std_string) : rust.ref str =
00:02:36 v #3556 > >     !\\(s, $'"$0.as_str()"')
00:02:37 v #3557 > >
00:02:37 v #3558 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:37 v #3559 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:37 v #3560 > > │ ### into_boxed_str                                                           │
00:02:37 v #3561 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:37 v #3562 > >
00:02:37 v #3563 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:37 v #3564 > > inl into_boxed_str (s : std_string) : rust.box str =
00:02:37 v #3565 > >     !\\(s, $'"$0.into_boxed_str()"')
00:02:37 v #3566 > >
00:02:37 v #3567 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:37 v #3568 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:37 v #3569 > > │ ### os_string_as_ref                                                         │
00:02:37 v #3570 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:37 v #3571 > >
00:02:37 v #3572 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:37 v #3573 > > inl os_string_as_ref (s : os_string) : rust.ref os_str =
00:02:37 v #3574 > >     !\\(s, $'"$0.as_ref()"')
00:02:38 v #3575 > >
00:02:38 v #3576 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:38 v #3577 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:38 v #3578 > > │ ### to_os_string                                                             │
00:02:38 v #3579 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:38 v #3580 > >
00:02:38 v #3581 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:38 v #3582 > > inl to_os_string (s : rust.ref os_str) : os_string =
00:02:38 v #3583 > >     !\\(s, $'"$0.to_os_string()"')
00:02:38 v #3584 > >
00:02:38 v #3585 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:38 v #3586 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:38 v #3587 > > │ ### os_to_str                                                                │
00:02:38 v #3588 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:38 v #3589 > >
00:02:38 v #3590 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:38 v #3591 > > inl os_to_str (s : os_string) : optionm'.option' (rust.ref str) =
00:02:38 v #3592 > >     !\\(s, $'"$0.to_str()"')
00:02:39 v #3593 > >
00:02:39 v #3594 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:39 v #3595 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:39 v #3596 > > │ ### from_os_str_ref                                                          │
00:02:39 v #3597 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:39 v #3598 > >
00:02:39 v #3599 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:39 v #3600 > > inl from_os_str_ref s =
00:02:39 v #3601 > >     s
00:02:39 v #3602 > >     |> to_os_string
00:02:39 v #3603 > >     |> os_to_str
00:02:39 v #3604 > >     |> optionm'.unwrap
00:02:39 v #3605 > >     |> ref_to_std_string
00:02:39 v #3606 > >     |> from_std_string
00:02:39 v #3607 > >
00:02:39 v #3608 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:39 v #3609 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:39 v #3610 > > │ ### format_custom'                                                           │
00:02:39 v #3611 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:39 v #3612 > >
00:02:39 v #3613 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:39 v #3614 > > inl format_custom' (f : string) x : std_string =
00:02:39 v #3615 > >     run_target function
00:02:39 v #3616 > >         | Rust _ => fun () =>
00:02:39 v #3617 > >             !\\(x, $'"format\!(\\\"" + !f + "\\\", $0)"')
00:02:39 v #3618 > >         | _ => fun () => null ()
00:02:39 v #3619 > >
00:02:39 v #3620 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:39 v #3621 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:39 v #3622 > > │ ### format_debug'                                                            │
00:02:39 v #3623 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:39 v #3624 > >
00:02:39 v #3625 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:39 v #3626 > > inl format_debug' x : std_string =
00:02:39 v #3627 > >     run_target function
00:02:39 v #3628 > >         | Rust _ => fun () =>
00:02:39 v #3629 > >             !\\(x, $'"format\!(\\\"{:?}\\\", $0)"')
00:02:39 v #3630 > >         | _ => fun () => null ()
00:02:40 v #3631 > >
00:02:40 v #3632 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:40 v #3633 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:40 v #3634 > > │ ### format'                                                                  │
00:02:40 v #3635 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:40 v #3636 > >
00:02:40 v #3637 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:40 v #3638 > > inl format' x : std_string =
00:02:40 v #3639 > >     run_target_args (fun () => x) function
00:02:40 v #3640 > >         | Rust _ => fun x =>
00:02:40 v #3641 > >             !\\(x, $'"format\!(\\\"{}\\\", $0)"')
00:02:40 v #3642 > >         | _ => fun _ => null ()
00:02:40 v #3643 > >
00:02:40 v #3644 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:40 v #3645 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:40 v #3646 > > │ ### format_hex'                                                              │
00:02:40 v #3647 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:40 v #3648 > >
00:02:40 v #3649 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:40 v #3650 > > inl format_hex' x : std_string =
00:02:40 v #3651 > >     !\\(x, $'"format\!(\\\"{:02x}\\\", $0)"')
00:02:41 v #3652 > >
00:02:41 v #3653 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:41 v #3654 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:41 v #3655 > > │ ### format''                                                                 │
00:02:41 v #3656 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:41 v #3657 > >
00:02:41 v #3658 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:41 v #3659 > > inl format'' (format : string) : std_string =
00:02:41 v #3660 > >     !\($'@@$"format\!(" + !format + ")"')
00:02:41 v #3661 > >
00:02:41 v #3662 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:41 v #3663 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:41 v #3664 > > │ ### regex                                                                    │
00:02:41 v #3665 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:41 v #3666 > >
00:02:41 v #3667 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:41 v #3668 > > nominal regex =
00:02:41 v #3669 > >     `(
00:02:41 v #3670 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:02:41 v #3671 > > Fable.Core.Emit(\"regex::Regex\")>]]\n#endif\ntype regex_Regex = class end"
00:02:41 v #3672 > >         $'' : $'regex_Regex'
00:02:41 v #3673 > >     )
00:02:41 v #3674 > >
00:02:41 v #3675 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:41 v #3676 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:41 v #3677 > > │ ### regex_error                                                              │
00:02:41 v #3678 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:41 v #3679 > >
00:02:41 v #3680 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:41 v #3681 > > nominal regex_error =
00:02:41 v #3682 > >     `(
00:02:41 v #3683 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:02:41 v #3684 > > Fable.Core.Emit(\"regex::Error\")>]]\n#endif\ntype regex_Error = class end"
00:02:41 v #3685 > >         $'' : $'regex_Error'
00:02:41 v #3686 > >     )
00:02:42 v #3687 > >
00:02:42 v #3688 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:42 v #3689 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:42 v #3690 > > │ ### new_regex                                                                │
00:02:42 v #3691 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:42 v #3692 > >
00:02:42 v #3693 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:42 v #3694 > > inl new_regex (pattern : string) : resultm.result' regex regex_error =
00:02:42 v #3695 > >     !\\(pattern, $'$"regex::Regex::new(&$0)"')
00:02:42 v #3696 > >
00:02:42 v #3697 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:42 v #3698 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:42 v #3699 > > │ ### captures                                                                 │
00:02:42 v #3700 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:42 v #3701 > >
00:02:42 v #3702 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:42 v #3703 > > nominal regex_captures t =
00:02:42 v #3704 > >     `(
00:02:42 v #3705 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:02:42 v #3706 > > Fable.Core.Emit(\"regex::Captures<$0>\")>]]\n#endif\ntype regex_Captures<'T> =
00:02:42 v #3707 > > class end"
00:02:42 v #3708 > >         $'' : $'regex_Captures<`t>'
00:02:42 v #3709 > >     )
00:02:43 v #3710 > >
00:02:43 v #3711 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:43 v #3712 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:43 v #3713 > > │ ### regex_capture_matches                                                    │
00:02:43 v #3714 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:43 v #3715 > >
00:02:43 v #3716 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:43 v #3717 > > nominal regex_capture_matches =
00:02:43 v #3718 > >     `(
00:02:43 v #3719 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:02:43 v #3720 > > Fable.Core.Emit(\"regex::CaptureMatches\")>]]\n#endif\ntype regex_CaptureMatches
00:02:43 v #3721 > > = class end"
00:02:43 v #3722 > >         $'' : $'regex_CaptureMatches'
00:02:43 v #3723 > >     )
00:02:43 v #3724 > >
00:02:43 v #3725 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:43 v #3726 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:43 v #3727 > > │ ### regex_capture_names                                                      │
00:02:43 v #3728 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:43 v #3729 > >
00:02:43 v #3730 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:43 v #3731 > > nominal regex_capture_names =
00:02:43 v #3732 > >     `(
00:02:43 v #3733 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:02:43 v #3734 > > Fable.Core.Emit(\"regex::CaptureNames\")>]]\n#endif\ntype regex_CaptureNames =
00:02:43 v #3735 > > class end"
00:02:43 v #3736 > >         $'' : $'regex_CaptureNames'
00:02:43 v #3737 > >     )
00:02:43 v #3738 > >
00:02:43 v #3739 > > inl regex_capture_names (regex : regex) : regex_capture_names =
00:02:43 v #3740 > >     !\\(regex, $'$"$0.capture_names()"')
00:02:44 v #3741 > >
00:02:44 v #3742 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:44 v #3743 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:44 v #3744 > > │ ### match'                                                                   │
00:02:44 v #3745 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:44 v #3746 > >
00:02:44 v #3747 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:44 v #3748 > > nominal match' =
00:02:44 v #3749 > >     `(
00:02:44 v #3750 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:02:44 v #3751 > > Fable.Core.Emit(\"regex::Match\")>]]\n#endif\ntype regex_Match = class end"
00:02:44 v #3752 > >         $'' : $'regex_Match'
00:02:44 v #3753 > >     )
00:02:44 v #3754 > >
00:02:44 v #3755 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:44 v #3756 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:44 v #3757 > > │ ### regex_captures_iter                                                      │
00:02:44 v #3758 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:44 v #3759 > >
00:02:44 v #3760 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:44 v #3761 > > inl regex_captures_iter (s : rust.static_ref (rust.mut' std_string)) (regex :
00:02:44 v #3762 > > regex) : regex_capture_matches =
00:02:44 v #3763 > >     inl regex = regex |> rust.emit
00:02:44 v #3764 > >     !\\(regex, $'$"$0.captures_iter(!s)"')
00:02:44 v #3765 > >
00:02:44 v #3766 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:44 v #3767 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:44 v #3768 > > │ ### regex_captures                                                           │
00:02:44 v #3769 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:44 v #3770 > >
00:02:44 v #3771 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:44 v #3772 > > let regex_captures (s : string) (regex : regex) : am'.vec (mapm.hash_map string
00:02:44 v #3773 > > string) =
00:02:44 v #3774 > >     // inl s = join s
00:02:44 v #3775 > >     // !\\(regex, $'$"$0.captures_iter(&*!s).map(|caps|
00:02:44 v #3776 > > $0.capture_names().map(|x| x.and_then(|n| Some((n,
00:02:44 v #3777 > > caps.name(n)?.as_str())))).flatten().collect()).collect()"')
00:02:44 v #3778 > >
00:02:44 v #3779 > >     inl s = s |> to_std_string
00:02:44 v #3780 > >     fun () =>
00:02:44 v #3781 > >         inl matches =
00:02:44 v #3782 > >             inl s = s |> rust.new_box |> rust.box_leak
00:02:44 v #3783 > >             regex |> regex_captures_iter s
00:02:44 v #3784 > >
00:02:44 v #3785 > >         (!\($'"true; let _regex_captures : Vec<_> = !matches.map(|x| { //"') :
00:02:44 v #3786 > > bool) |> ignore
00:02:44 v #3787 > >
00:02:44 v #3788 > >         inl fn (match' : rust.static_ref (rust.mut' (regex_captures
00:02:44 v #3789 > > rust.static_lifetime))) : mapm.hash_map string string =
00:02:44 v #3790 > >
00:02:44 v #3791 > >             inl names = regex |> regex_capture_names
00:02:44 v #3792 > >
00:02:44 v #3793 > >             (!\($'"true; let _regex_captures : std::collections::HashMap<_, _> =
00:02:44 v #3794 > > !names.map(|x| { //"') : bool) |> ignore
00:02:44 v #3795 > >
00:02:44 v #3796 > >             inl fn (n : string) : pair string string =
00:02:44 v #3797 > >                 inl n' = n |> rust.clone
00:02:44 v #3798 > >
00:02:44 v #3799 > >                 new_pair n' !\\(n, $'$"!match'.name(&$0).map(|x|
00:02:44 v #3800 > > x.as_str()).unwrap_or(\\\"\\\").to_string().into()"')
00:02:44 v #3801 > >
00:02:44 v #3802 > >             (!\\(fn !\($'"x.unwrap_or(\\\"\\\").to_string().into()"'), $'"true;
00:02:44 v #3803 > > $0 }).map(|x| std::sync::Arc::try_unwrap(x).unwrap_or_else(|x|
00:02:44 v #3804 > > (*x).clone())).collect()"') : bool) |> ignore
00:02:44 v #3805 > >
00:02:44 v #3806 > >             !\($'"_regex_captures"')
00:02:44 v #3807 > >
00:02:44 v #3808 > >         inl x =
00:02:44 v #3809 > >             !\($'$"x"')
00:02:44 v #3810 > >             |> rust.new_box
00:02:44 v #3811 > >             |> rust.box_leak
00:02:44 v #3812 > >
00:02:44 v #3813 > >         (!\\(fn x, $'"true; $0 }).collect::<Vec<_>>()"') : bool) |> ignore
00:02:44 v #3814 > >
00:02:44 v #3815 > >         !\($'"_regex_captures"')
00:02:44 v #3816 > >
00:02:44 v #3817 > >     |> rust.capture_move
00:02:45 v #3818 > >
00:02:45 v #3819 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:45 v #3820 > > //// test
00:02:45 v #3821 > > ///! rust -d regex
00:02:45 v #3822 > >
00:02:45 v #3823 > > "fable-library-ts\\.(?<a>[[\\d.]]+)$"
00:02:45 v #3824 > > |> new_regex
00:02:45 v #3825 > > |> resultm.unwrap'
00:02:45 v #3826 > > |> regex_captures "fable_modules/fable-library-ts.4.17.0"
00:02:45 v #3827 > > |> am'.vec_map (mapm.to_vec >> am'.vec_sort_by_key id)
00:02:45 v #3828 > > |> sm'.format_debug
00:02:45 v #3829 > > |> _assert_eq (
00:02:45 v #3830 > >     ;[[
00:02:45 v #3831 > >         ;[[ "", ""; "a", "4.17.0" ]]
00:02:45 v #3832 > >         |> am'.to_vec
00:02:45 v #3833 > >     ]]
00:02:45 v #3834 > >     |> am'.to_vec
00:02:45 v #3835 > >     |> sm'.format_debug
00:02:45 v #3836 > > )
00:02:48 v #3837 > >
00:02:48 v #3838 > > ╭─[ 3.51s - return value ]─────────────────────────────────────────────────────╮
00:02:48 v #3839 > > │ __assert_eq / actual: "[[("", ""), ("a", "4.17.0")]]" / expected: "[[("",    │
00:02:48 v #3840 > > │ ""), ("a", "4.17.0")]]"                                                      │
00:02:48 v #3841 > > │                                                                              │
00:02:48 v #3842 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:48 v #3843 > >
00:02:48 v #3844 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:48 v #3845 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:48 v #3846 > > │ ### replace_regex'                                                           │
00:02:48 v #3847 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:48 v #3848 > >
00:02:48 v #3849 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:48 v #3850 > > inl replace_regex' (pattern : string) (replacement : a i32 string) (s : string)
00:02:48 v #3851 > > : string =
00:02:48 v #3852 > >     run_target_args (fun () => s, pattern, replacement) function
00:02:48 v #3853 > >         | Rust (Native) => fun s, pattern, replacement =>
00:02:48 v #3854 > >             inl regex = pattern |> new_regex |> resultm.unwrap'
00:02:48 v #3855 > >             !\\((regex, #s, replacement), $'$"$0.replace_all($1, &*$2)"')
00:02:48 v #3856 > >             |> cow_to_std_string
00:02:48 v #3857 > >             |> from_std_string
00:02:48 v #3858 > >         | _ => fun _ => null ()
00:02:49 v #3859 > >
00:02:49 v #3860 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:49 v #3861 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:49 v #3862 > > │ ### serialize                                                                │
00:02:49 v #3863 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:49 v #3864 > >
00:02:49 v #3865 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:49 v #3866 > > inl serialize forall t. (x : t) : resultm.result' std_string json_error =
00:02:49 v #3867 > >     !\($'"serde_json::to_string(&!x)"')
00:02:49 v #3868 > >
00:02:49 v #3869 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:49 v #3870 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:49 v #3871 > > │ ### deserialize                                                              │
00:02:49 v #3872 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:49 v #3873 > >
00:02:49 v #3874 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:49 v #3875 > > inl deserialize forall t. (json : string) : resultm.result' t std_string =
00:02:49 v #3876 > >     inl json = join json
00:02:49 v #3877 > >     inl json = json |> as_str
00:02:49 v #3878 > >     !\\(json, $'"serde_json::from_str(&$0)"')
00:02:49 v #3879 > >     |> resultm.map_error' fun (x : json_error) => x |> format'
00:02:50 v #3880 > >
00:02:50 v #3881 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:50 v #3882 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:50 v #3883 > > │ ### borsh_serialize                                                          │
00:02:50 v #3884 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:50 v #3885 > >
00:02:50 v #3886 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:50 v #3887 > > inl borsh_serialize forall t. (data : t) : am'.vec u8 =
00:02:50 v #3888 > >     (!\($'"true; let mut data = Vec::new()"') : bool) |> ignore
00:02:50 v #3889 > >     (!\\(data, $'"true; borsh::BorshSerialize::serialize(&$0, &mut
00:02:50 v #3890 > > data).unwrap()"') : bool) |> ignore
00:02:50 v #3891 > >     !\($'"data"')
00:02:50 v #3892 > >
00:02:50 v #3893 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:50 v #3894 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:50 v #3895 > > │ ### borsh_deserialize                                                        │
00:02:50 v #3896 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:50 v #3897 > >
00:02:50 v #3898 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:50 v #3899 > > inl borsh_deserialize forall t. (data : array_base u8) : resultm.result' t
00:02:50 v #3900 > > std_string =
00:02:50 v #3901 > >     inl data = data |> am'.as_slice
00:02:50 v #3902 > >     (!\($'"true; let mut !data = !data"') : bool) |> ignore
00:02:50 v #3903 > >     inl result = !\($'"borsh::BorshDeserialize::deserialize(&mut !data)"')
00:02:50 v #3904 > >     result
00:02:50 v #3905 > >     |> resultm.map_error' fun (x : borsh_io_error) => x |> format'
00:02:51 v #3906 > >
00:02:51 v #3907 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:51 v #3908 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:51 v #3909 > > │ ### deserialize_vec                                                          │
00:02:51 v #3910 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:51 v #3911 > >
00:02:51 v #3912 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:51 v #3913 > > inl deserialize_vec (value : json_value) : resultm.result' (am'.vec u8)
00:02:51 v #3914 > > std_string =
00:02:51 v #3915 > >     inl value = join value
00:02:51 v #3916 > >     !\($'"serde_json::from_value(!value)"')
00:02:51 v #3917 > >     |> resultm.map_error' fun (x : json_error) => x |> format'
00:02:51 v #3918 > >
00:02:51 v #3919 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:51 v #3920 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:51 v #3921 > > │ ### encode_uri_component                                                     │
00:02:51 v #3922 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:51 v #3923 > >
00:02:51 v #3924 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:51 v #3925 > > inl encode_uri_component (s : std_string) : js_string =
00:02:51 v #3926 > >     !\($'"js_sys::encode_uri_component(&!s)"')
00:02:52 v #3927 > >
00:02:52 v #3928 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:52 v #3929 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:52 v #3930 > > │ ### strip_prefix                                                             │
00:02:52 v #3931 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:52 v #3932 > >
00:02:52 v #3933 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:52 v #3934 > > inl strip_prefix (prefix : char) (s : std_string) : optionm'.option' (rust.ref
00:02:52 v #3935 > > str) =
00:02:52 v #3936 > >     inl s = join s
00:02:52 v #3937 > >     !\($'"!s.strip_prefix(!prefix)"')
00:02:52 v #3938 > >
00:02:52 v #3939 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:52 v #3940 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:52 v #3941 > > │ ### str_from_utf8                                                            │
00:02:52 v #3942 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:52 v #3943 > >
00:02:52 v #3944 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:52 v #3945 > > inl str_from_utf8 (bytes : rust.ref (am'.slice u8)) : resultm.result' (rust.ref
00:02:52 v #3946 > > str) utf8_error =
00:02:52 v #3947 > >     !\\(bytes, $'"std::str::from_utf8($0)"')
00:02:52 v #3948 > >
00:02:52 v #3949 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:52 v #3950 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:52 v #3951 > > │ ### string_from_utf8                                                         │
00:02:52 v #3952 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:52 v #3953 > >
00:02:52 v #3954 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:52 v #3955 > > inl string_from_utf8 (bytes : am'.vec u8) : resultm.result' std_string
00:02:52 v #3956 > > from_utf8_error =
00:02:52 v #3957 > >     inl bytes = join bytes
00:02:52 v #3958 > >     !\\(bytes, $'"std::string::String::from_utf8($0)"')
00:02:53 v #3959 > >
00:02:53 v #3960 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:53 v #3961 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:53 v #3962 > > │ ### base64_decode                                                            │
00:02:53 v #3963 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:53 v #3964 > >
00:02:53 v #3965 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:53 v #3966 > > inl base64_decode (s : std_string) : result std_string std_string =
00:02:53 v #3967 > >     fun () =>
00:02:53 v #3968 > >         inl s = join s
00:02:53 v #3969 > >         inl bytes : resultm.result' (am'.vec u8) base64_decode_error =
00:02:53 v #3970 > >
00:02:53 v #3971 > > !\($'"base64::Engine::decode(&base64::engine::general_purpose::STANDARD, !s)"')
00:02:53 v #3972 > >         bytes
00:02:53 v #3973 > >         |> resultm.map_error' format'
00:02:53 v #3974 > >         |> resultm.try'
00:02:53 v #3975 > >         |> string_from_utf8
00:02:53 v #3976 > >         |> resultm.map_error' format'
00:02:53 v #3977 > >     |> fun x =>
00:02:53 v #3978 > >         join x ()
00:02:53 v #3979 > >         |> resultm.unbox
00:02:53 v #3980 > >
00:02:53 v #3981 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:53 v #3982 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:53 v #3983 > > │ ### encoding'                                                                │
00:02:53 v #3984 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:53 v #3985 > >
00:02:53 v #3986 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:53 v #3987 > > nominal encoding' =
00:02:53 v #3988 > >     `(
00:02:53 v #3989 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:02:53 v #3990 > > Fable.Core.Emit(\"encoding_rs::Encoding\")>]]\n#endif\ntype encoding_rs_Encoding
00:02:53 v #3991 > > = class end"
00:02:53 v #3992 > >         $'' : $'encoding_rs_Encoding'
00:02:53 v #3993 > >     )
00:02:54 v #3994 > >
00:02:54 v #3995 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:54 v #3996 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:54 v #3997 > > │ ### encoding_utf8'                                                           │
00:02:54 v #3998 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:54 v #3999 > >
00:02:54 v #4000 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:54 v #4001 > > inl encoding_utf8' () : rust.ref encoding' =
00:02:54 v #4002 > >     !\($'"encoding_rs::UTF_8"')
00:02:54 v #4003 > >
00:02:54 v #4004 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:54 v #4005 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:54 v #4006 > > │ ### encoding_1252                                                            │
00:02:54 v #4007 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:54 v #4008 > >
00:02:54 v #4009 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:54 v #4010 > > inl encoding_1252' () : rust.ref encoding' =
00:02:54 v #4011 > >     !\($'"encoding_rs::WINDOWS_1252"')
00:02:55 v #4012 > >
00:02:55 v #4013 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:55 v #4014 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:55 v #4015 > > │ ### encoding_encode                                                          │
00:02:55 v #4016 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:55 v #4017 > >
00:02:55 v #4018 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:55 v #4019 > > inl encoding_encode' (encoding : rust.ref encoding') (text : string) : rust.cow
00:02:55 v #4020 > > (am'.slice u8) =
00:02:55 v #4021 > >     !\\((encoding, text), $'"$0.encode(&*$1).0"')
00:02:55 v #4022 > >
00:02:55 v #4023 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:55 v #4024 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:55 v #4025 > > │ ### utf8_decode                                                              │
00:02:55 v #4026 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:55 v #4027 > >
00:02:55 v #4028 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:55 v #4029 > > inl utf8_decode (data : am'.vec u8) : resultm.result' std_string (rust.cow str)
00:02:55 v #4030 > > =
00:02:55 v #4031 > >     !\($'$"encoding::Encoding::decode(encoding::all::UTF_8, &!data,
00:02:55 v #4032 > > encoding::DecoderTrap::Replace)"')
00:02:56 v #4033 > >
00:02:56 v #4034 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:56 v #4035 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:56 v #4036 > > │ ### windows                                                                  │
00:02:56 v #4037 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:56 v #4038 > >
00:02:56 v #4039 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:56 v #4040 > > nominal windows t =
00:02:56 v #4041 > >     `(
00:02:56 v #4042 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:02:56 v #4043 > > Fable.Core.Emit(\"std::slice::Windows<$0>\")>]]\n#endif\ntype
00:02:56 v #4044 > > std_slice_Windows<'T> = class end"
00:02:56 v #4045 > >         $'' : $'std_slice_Windows<`t>'
00:02:56 v #4046 > >     )
00:02:56 v #4047 > >
00:02:56 v #4048 > > inl windows (len : unativeint) (source : am'.vec u8) : windows u8 =
00:02:56 v #4049 > >     inl source = source |> rust.new_box |> rust.box_leak
00:02:56 v #4050 > >     // inl source' = source |> rust.clone
00:02:56 v #4051 > >     inl result = !\\(len, $'"<[[_]]>::windows(!source, $0)"')
00:02:56 v #4052 > >     // source |> rust.drop
00:02:56 v #4053 > >     result
00:02:56 v #4054 > >
00:02:56 v #4055 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:56 v #4056 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:56 v #4057 > > │ ### any                                                                      │
00:02:56 v #4058 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:56 v #4059 > >
00:02:56 v #4060 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:56 v #4061 > > inl any forall t. (fn : string -> bool) (source : windows t) : bool =
00:02:56 v #4062 > >     (!\($'"true; let mut !source = !source"') : bool) |> ignore
00:02:56 v #4063 > >     inl fn' x =
00:02:56 v #4064 > >         x
00:02:56 v #4065 > >         |> str_from_utf8
00:02:56 v #4066 > >         |> resultm.unwrap_or' #""
00:02:56 v #4067 > >         |> ref_to_std_string
00:02:56 v #4068 > >         |> from_std_string
00:02:56 v #4069 > >         |> fn
00:02:56 v #4070 > >     !\\(fn', $'"!source.any(move |x| $0(x))"')
00:02:57 v #4071 > >
00:02:57 v #4072 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:57 v #4073 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:57 v #4074 > > │ ### slice_contains                                                           │
00:02:57 v #4075 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:57 v #4076 > >
00:02:57 v #4077 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:57 v #4078 > > inl slice_contains (text : string) (source : am'.vec u8) : bool =
00:02:57 v #4079 > >     fun () =>
00:02:57 v #4080 > >         inl source = join source
00:02:57 v #4081 > >         source
00:02:57 v #4082 > >         |> windows (text |> length |> (fun x => x : i32) |> convert)
00:02:57 v #4083 > >         |> any ((=.) text)
00:02:57 v #4084 > >     |> fun x => join x ()
00:02:57 v #4085 > >
00:02:57 v #4086 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:57 v #4087 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:57 v #4088 > > │ ### as_bytes                                                                 │
00:02:57 v #4089 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:57 v #4090 > >
00:02:57 v #4091 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:57 v #4092 > > inl as_bytes (text : string) : rust.ref (am'.slice u8) =
00:02:57 v #4093 > >     inl text = join text
00:02:57 v #4094 > >     !\($'"!text.as_bytes()"')
00:02:57 v #4095 > >
00:02:57 v #4096 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:57 v #4097 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:57 v #4098 > > │ ### into_bytes                                                               │
00:02:57 v #4099 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:57 v #4100 > >
00:02:57 v #4101 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:57 v #4102 > > inl into_bytes (x : std_string) : am'.vec u8 =
00:02:57 v #4103 > >     !\\(x, $'$"$0.into_bytes()"')
00:02:58 v #4104 > >
00:02:58 v #4105 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:58 v #4106 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:58 v #4107 > > │ ## python                                                                    │
00:02:58 v #4108 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:58 v #4109 > >
00:02:58 v #4110 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:58 v #4111 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:58 v #4112 > > │ ### encode_utf8                                                              │
00:02:58 v #4113 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:58 v #4114 > >
00:02:58 v #4115 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:58 v #4116 > > inl encode_utf8 (s : string) : string =
00:02:58 v #4117 > >     inl encoding = "utf-8"
00:02:58 v #4118 > >     backend_switch {
00:02:58 v #4119 > >         Fsharp = fun () =>
00:02:58 v #4120 > >             open python_operators
00:02:58 v #4121 > >             !\\((s, encoding), $'"$0.encode($1)"') : string
00:02:58 v #4122 > >         Python = fun () =>
00:02:58 v #4123 > >             $'!s.encode(!encoding)' : string
00:02:58 v #4124 > >     }
00:02:58 v #4125 > >
00:02:58 v #4126 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:58 v #4127 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:58 v #4128 > > │ ## sm'                                                                       │
00:02:58 v #4129 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:58 v #4130 > >
00:02:58 v #4131 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:58 v #4132 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:58 v #4133 > > │ ### contains                                                                 │
00:02:58 v #4134 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:58 v #4135 > >
00:02:58 v #4136 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:58 v #4137 > > inl contains (value : string) (s : string) : bool =
00:02:58 v #4138 > >     backend_switch {
00:02:58 v #4139 > >         Fsharp = fun () => $'!s.Contains !value ' : bool
00:02:58 v #4140 > >         Python = fun () => $'!value in !s ' : bool
00:02:58 v #4141 > >     }
00:02:59 v #4142 > >
00:02:59 v #4143 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:59 v #4144 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:59 v #4145 > > │ ### to_string result t u                                                     │
00:02:59 v #4146 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:59 v #4147 > >
00:02:59 v #4148 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:59 v #4149 > > instance to_string result t u = fun x =>
00:02:59 v #4150 > >     real
00:02:59 v #4151 > >         open rust
00:02:59 v #4152 > >         typecase (t * u) with
00:02:59 v #4153 > >         | string * string =>
00:02:59 v #4154 > >             match x with
00:02:59 v #4155 > >             | Ok x => x
00:02:59 v #4156 > >             | Error x => $'"sm\'.to_string result / Error: " + !x + ""' : string
00:02:59 v #4157 > >         | std_string * std_string =>
00:02:59 v #4158 > >             match x with
00:02:59 v #4159 > >             | Ok x => from_std_string x
00:02:59 v #4160 > >             | Error x => $'"sm\'.to_string result / Error: " + string !x + ""' :
00:02:59 v #4161 > > string
00:02:59 v #4162 > >         | _ => obj_to_string `u x
00:02:59 v #4163 > >
00:02:59 v #4164 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:59 v #4165 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:59 v #4166 > > │ ### format_exception                                                         │
00:02:59 v #4167 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:59 v #4168 > >
00:02:59 v #4169 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:59 v #4170 > > inl format_exception (ex : exn) : string =
00:02:59 v #4171 > >     run_target function
00:02:59 v #4172 > >         | Fsharp (Native) => fun () => $'$"{!ex.GetType ()}: {!ex.Message}"'
00:02:59 v #4173 > >         | _ => fun () => ex |> format_debug
00:03:00 v #4174 > >
00:03:00 v #4175 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:00 v #4176 > > //// test
00:03:00 v #4177 > > ///! fsharp
00:03:00 v #4178 > > ///! cuda
00:03:00 v #4179 > > ///! rust
00:03:00 v #4180 > > ///! typescript
00:03:00 v #4181 > > ///! python
00:03:00 v #4182 > >
00:03:00 v #4183 > > fun () => failwith "test"
00:03:00 v #4184 > > |> _throws
00:03:00 v #4185 > > |> optionm.value
00:03:00 v #4186 > > |> sm'.format_exception
00:03:00 v #4187 > > |> _assert_eq (run_target function
00:03:00 v #4188 > >     | Fsharp _ => fun () => join "System.Exception: test"
00:03:00 v #4189 > >     | Cuda _ => fun () => "test"
00:03:00 v #4190 > >     | Rust _ => fun () => "Exception { message: \"test\" }"
00:03:00 v #4191 > >     | TypeScript _ => fun () => "Error: test"
00:03:00 v #4192 > >     | Python _ => fun () => join "test"
00:03:00 v #4193 > >     | _ => fun () => null ()
00:03:00 v #4194 > > )
00:03:03 v #4195 > >
00:03:03 v #4196 > > ╭─[ 3.72s - return value ]─────────────────────────────────────────────────────╮
00:03:03 v #4197 > > │ .py output (Cuda):                                                           │
00:03:03 v #4198 > > │ __assert_eq / actual: test / expected: test                                  │
00:03:03 v #4199 > > │                                                                              │
00:03:03 v #4200 > > │ .rs output:                                                                  │
00:03:03 v #4201 > > │ __assert_eq / actual: "Exception { message: "test" }" / expected: "Exception │
00:03:03 v #4202 > > │ { message: "test" }"                                                         │
00:03:03 v #4203 > > │                                                                              │
00:03:03 v #4204 > > │ .ts output:                                                                  │
00:03:03 v #4205 > > │ __assert_eq / actual: Error: test / expected: Error: test                    │
00:03:03 v #4206 > > │                                                                              │
00:03:03 v #4207 > > │ .py output:                                                                  │
00:03:03 v #4208 > > │ __assert_eq / actual: test / expected: test                                  │
00:03:03 v #4209 > > │                                                                              │
00:03:03 v #4210 > > │                                                                              │
00:03:03 v #4211 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:03 v #4212 > >
00:03:03 v #4213 > > ╭─[ 3.72s - stdout ]───────────────────────────────────────────────────────────╮
00:03:03 v #4214 > > │ .fsx output:                                                                 │
00:03:03 v #4215 > > │ __assert_eq / actual: "System.Exception: test" / expected:                   │
00:03:03 v #4216 > > │ "System.Exception: test"                                                     │
00:03:03 v #4217 > > │                                                                              │
00:03:03 v #4218 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:03 v #4219 > >
00:03:03 v #4220 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:03 v #4221 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:03 v #4222 > > │ ### range                                                                    │
00:03:03 v #4223 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:03 v #4224 > >
00:03:03 v #4225 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:03 v #4226 > > inl range forall t. (start : am'.range t) (end : am'.range t) s =
00:03:03 v #4227 > >     inl start, end =
00:03:03 v #4228 > >         inl len = s |> length'
00:03:03 v #4229 > >         match start, end with
00:03:03 v #4230 > >         | Start start, End fn => start, len |> fn
00:03:03 v #4231 > >         | End start_fn, End end_fn => start_fn len, end_fn len
00:03:03 v #4232 > >     s |> slice (start |> i32) ((end |> i32) - 1)
00:03:04 v #4233 > >
00:03:04 v #4234 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:04 v #4235 > > //// test
00:03:04 v #4236 > > ///! fsharp
00:03:04 v #4237 > > ///! cuda
00:03:04 v #4238 > >
00:03:04 v #4239 > > "abcde"
00:03:04 v #4240 > > |> range (am'.Start 1i32) (am'.End id)
00:03:04 v #4241 > > |> _assert_eq "bcde"
00:03:04 v #4242 > >
00:03:04 v #4243 > > "abcde"
00:03:04 v #4244 > > |> range (am'.End fun x => x - 4i32) (am'.End fun x => x - 1)
00:03:04 v #4245 > > |> _assert_eq "bcd"
00:03:05 v #4246 > >
00:03:05 v #4247 > > ╭─[ 1.12s - return value ]─────────────────────────────────────────────────────╮
00:03:05 v #4248 > > │                                                                              │
00:03:05 v #4249 > > │ .py output (Cuda):                                                           │
00:03:05 v #4250 > > │ __assert_eq / actual: bcde / expected: bcde                                  │
00:03:05 v #4251 > > │ __assert_eq / actual: bcd / expected: bcd                                    │
00:03:05 v #4252 > > │                                                                              │
00:03:05 v #4253 > > │                                                                              │
00:03:05 v #4254 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:05 v #4255 > >
00:03:05 v #4256 > > ╭─[ 1.12s - stdout ]───────────────────────────────────────────────────────────╮
00:03:05 v #4257 > > │ .fsx output:                                                                 │
00:03:05 v #4258 > > │ __assert_eq / actual: "bcde" / expected: "bcde"                              │
00:03:05 v #4259 > > │ __assert_eq / actual: "bcd" / expected: "bcd"                                │
00:03:05 v #4260 > > │                                                                              │
00:03:05 v #4261 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:05 v #4262 > >
00:03:05 v #4263 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:05 v #4264 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:05 v #4265 > > │ ### concat_list                                                              │
00:03:05 v #4266 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:05 v #4267 > >
00:03:05 v #4268 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:05 v #4269 > > inl concat_list s list =
00:03:05 v #4270 > >     list
00:03:05 v #4271 > >     |> listm'.box
00:03:05 v #4272 > >     |> seq.of_list'
00:03:05 v #4273 > >     |> concat s
00:03:06 v #4274 > >
00:03:06 v #4275 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:06 v #4276 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:06 v #4277 > > │ ### ellipsis_end                                                             │
00:03:06 v #4278 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:06 v #4279 > >
00:03:06 v #4280 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:06 v #4281 > > let ellipsis_end (max : i64) (s : string) =
00:03:06 v #4282 > >     inl len = sm.length s
00:03:06 v #4283 > >     if len <= max
00:03:06 v #4284 > >     then s
00:03:06 v #4285 > >     else
00:03:06 v #4286 > >         inl half = f64 max / 2
00:03:06 v #4287 > >         inl start_half = half |> math.ceil |> i64
00:03:06 v #4288 > >         inl end_half = half |> math.floor |> i64
00:03:06 v #4289 > >         inl start = s |> slice 0 (start_half - 1)
00:03:06 v #4290 > >         inl end = s |> slice (len - end_half) (len - 1)
00:03:06 v #4291 > >         (a ;[[start; "..."; end]] : _ i32 _)
00:03:06 v #4292 > >         |> seq.of_array
00:03:06 v #4293 > >         |> concat ""
00:03:06 v #4294 > >
00:03:06 v #4295 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:06 v #4296 > > //// test
00:03:06 v #4297 > >
00:03:06 v #4298 > > "12345"
00:03:06 v #4299 > > |> ellipsis_end 2
00:03:06 v #4300 > > |> _assert_eq "1...5"
00:03:06 v #4301 > >
00:03:06 v #4302 > > "12345"
00:03:06 v #4303 > > |> ellipsis_end 3
00:03:06 v #4304 > > |> _assert_eq "12...5"
00:03:06 v #4305 > >
00:03:06 v #4306 > > "1234567"
00:03:06 v #4307 > > |> ellipsis_end 4
00:03:06 v #4308 > > |> _assert_eq "12...67"
00:03:07 v #4309 > >
00:03:07 v #4310 > > ╭─[ 544.43ms - stdout ]────────────────────────────────────────────────────────╮
00:03:07 v #4311 > > │ __assert_eq / actual: "1...5" / expected: "1...5"                            │
00:03:07 v #4312 > > │ __assert_eq / actual: "12...5" / expected: "12...5"                          │
00:03:07 v #4313 > > │ __assert_eq / actual: "12...67" / expected: "12...67"                        │
00:03:07 v #4314 > > │                                                                              │
00:03:07 v #4315 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:07 v #4316 > >
00:03:07 v #4317 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:07 v #4318 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:07 v #4319 > > │ ### format_ellipsis                                                          │
00:03:07 v #4320 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:07 v #4321 > >
00:03:07 v #4322 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:07 v #4323 > > inl format_ellipsis s =
00:03:07 v #4324 > >     s
00:03:07 v #4325 > >     |> format_debug
00:03:07 v #4326 > >     |> ellipsis_end 400
00:03:07 v #4327 > >
00:03:07 v #4328 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:07 v #4329 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:07 v #4330 > > │ ### replace_regex                                                            │
00:03:07 v #4331 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:07 v #4332 > >
00:03:07 v #4333 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:07 v #4334 > > let replace_regex (pattern : string) (replacement : string) (s : string) :
00:03:07 v #4335 > > string =
00:03:07 v #4336 > >     run_target_args (fun () => s, pattern, replacement) function
00:03:07 v #4337 > >         | Fsharp (Native) => fun s, pattern, replacement =>
00:03:07 v #4338 > >             $'System.Text.RegularExpressions.Regex.Replace (!s, !pattern,
00:03:07 v #4339 > > !replacement)'
00:03:07 v #4340 > >         | Rust (Native) => fun s, pattern, replacement =>
00:03:07 v #4341 > >             inl regex = pattern |> new_regex |> resultm.unwrap'
00:03:07 v #4342 > >             inl s = join s
00:03:07 v #4343 > >             !\\((regex, s, replacement), $'$"$0.replace_all(&*$1, &*$2)"')
00:03:07 v #4344 > >             |> cow_to_std_string
00:03:07 v #4345 > >             |> from_std_string
00:03:07 v #4346 > >         | _ => fun _ => null ()
00:03:07 v #4347 > >
00:03:07 v #4348 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:07 v #4349 > > //// test
00:03:07 v #4350 > > ///! fsharp
00:03:07 v #4351 > > ///! rust -d regex
00:03:07 v #4352 > >
00:03:07 v #4353 > > " 123"
00:03:07 v #4354 > > |> replace_regex "\\s\\w2" ""
00:03:07 v #4355 > > |> _assert_eq "3"
00:03:10 v #4356 > >
00:03:10 v #4357 > > ╭─[ 3.01s - return value ]─────────────────────────────────────────────────────╮
00:03:10 v #4358 > > │ .rs output (rust -d regex):                                                  │
00:03:10 v #4359 > > │ __assert_eq / actual: "3" / expected: "3"                                    │
00:03:10 v #4360 > > │                                                                              │
00:03:10 v #4361 > > │                                                                              │
00:03:10 v #4362 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:10 v #4363 > >
00:03:10 v #4364 > > ╭─[ 3.01s - stdout ]───────────────────────────────────────────────────────────╮
00:03:10 v #4365 > > │ .fsx output:                                                                 │
00:03:10 v #4366 > > │ __assert_eq / actual: "3" / expected: "3"                                    │
00:03:10 v #4367 > > │                                                                              │
00:03:10 v #4368 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:10 v #4369 > >
00:03:10 v #4370 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:10 v #4371 > > //// test
00:03:10 v #4372 > > ///! rust -d regex
00:03:10 v #4373 > >
00:03:10 v #4374 > > "    let main args =\n        ()\n"
00:03:10 v #4375 > > |> replace_regex $'@@"(?P<a> *)(?P<b>let\\s+main\\s+.*?\\s*=)"'
00:03:10 v #4376 > > "$a[[<EntryPoint>]]\n$a$b"
00:03:10 v #4377 > > |> _assert_eq "    [[<EntryPoint>]]\n    let main args =\n        ()\n"
00:03:13 v #4378 > >
00:03:13 v #4379 > > ╭─[ 3.09s - return value ]─────────────────────────────────────────────────────╮
00:03:13 v #4380 > > │ __assert_eq / actual: "    [<EntryPoint>]                                    │
00:03:13 v #4381 > > │     let main args =                                                          │
00:03:13 v #4382 > > │         ()                                                                   │
00:03:13 v #4383 > > │ " / expected: "    [<EntryPoint>]                                            │
00:03:13 v #4384 > > │     let main args =                                                          │
00:03:13 v #4385 > > │         ()                                                                   │
00:03:13 v #4386 > > │ "                                                                            │
00:03:13 v #4387 > > │                                                                              │
00:03:13 v #4388 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:13 v #4389 > >
00:03:13 v #4390 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:13 v #4391 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:13 v #4392 > > │ ## main                                                                      │
00:03:13 v #4393 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:13 v #4394 > >
00:03:13 v #4395 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:13 v #4396 > > inl main () =
00:03:13 v #4397 > >     $'let contains x = !contains x' : ()
00:03:13 v #4398 > >     $'let ends_with x = !ends_with x' : ()
00:03:13 v #4399 > >     $'let pad_left x = !pad_left x' : ()
00:03:13 v #4400 > >     $'let pad_right x = !pad_right x' : ()
00:03:13 v #4401 > >     $'let replace x = !replace x' : ()
00:03:13 v #4402 > >     $'let replace_regex x = !replace_regex x' : ()
00:03:13 v #4403 > >     inl slice (a : i32) (b : i32) c = slice a b c
00:03:13 v #4404 > >     $'let slice x = !slice x' : ()
00:03:13 v #4405 > >     $'let split x = !split x' : ()
00:03:13 v #4406 > >     $'let split_string x = !split_string x' : ()
00:03:13 v #4407 > >     $'let starts_with x = !starts_with x' : ()
00:03:13 v #4408 > >     $'let substring x = !substring x' : ()
00:03:13 v #4409 > >     $'let to_lower x = !to_lower x' : ()
00:03:13 v #4410 > >     $'let to_upper x = !to_upper x' : ()
00:03:13 v #4411 > >     $'let trim x = !trim x' : ()
00:03:13 v #4412 > >     inl trim_end x = (a x : _ int _) |> am'.to_list' |> listm'.unbox |> trim_end
00:03:13 v #4413 > >     $'let trim_end x = !trim_end x' : ()
00:03:13 v #4414 > >     inl trim_start x = (a x : _ int _) |> am'.to_list' |> listm'.unbox |>
00:03:13 v #4415 > > trim_start
00:03:13 v #4416 > >     $'let trim_start x = !trim_start x' : ()
00:03:13 v #4417 > >     $'let ellipsis x = !ellipsis x' : ()
00:03:13 v #4418 > >     $'let ellipsis_end x = !ellipsis_end x' : ()
00:03:13 v #4419 > >     $'let format_exception x = !format_exception x' : ()
00:03:13 v #4420 > >     $'let concat_array_trailing x = !concat_array_trailing x' : ()
00:03:13 v #4421 > >     inl concat a (b : seq.seq' string) = concat a b
00:03:13 v #4422 > >     $'let concat x = !concat x' : ()
00:03:13 v #4423 > >     $'let join\' x = !join' x' : ()
00:03:13 v #4424 > >     $'let to_char_array x = !to_char_array x' : ()
00:03:14 v #4425 > >
00:03:14 v #4426 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:14 v #4427 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:14 v #4428 > > │ ## rust                                                                      │
00:03:14 v #4429 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:14 v #4430 > >
00:03:14 v #4431 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:14 v #4432 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:14 v #4433 > > │ ### to_string std_string                                                     │
00:03:14 v #4434 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:14 v #4435 > >
00:03:14 v #4436 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:14 v #4437 > > open rust
00:03:14 v #4438 > > instance to_string std_string = from_std_string
00:03:15 v #4439 > 00:01:54 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 126100 }
00:03:15 v #4440 > 00:01:54 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/polyglot/lib/spiral/sm'.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/polyglot/lib/spiral/sm'.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:03:16 v #4441 > 00:01:55 v #5 ! [NbConvertApp] Converting notebook c:/home/git/polyglot/lib/spiral/sm'.dib.ipynb to html
00:03:16 v #4442 > 00:01:55 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:03:16 v #4443 > 00:01:55 v #7 !   validate(nb)
00:03:17 v #4444 > 00:01:56 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:03:17 v #4445 > 00:01:56 v #9 !   return _pygments_highlight(
00:03:19 v #4446 > 00:01:58 v #10 ! [NbConvertApp] Writing 620739 bytes to c:\home\git\polyglot\lib\spiral\sm'.dib.html
00:03:19 v #4447 > 00:01:58 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 848 }
00:03:19 v #4448 > 00:01:58 d #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 848 }
00:03:19 v #4449 > 00:01:58 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/sm''.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/sm''.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:03:19 v #4450 > 00:01:59 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:03:19 v #4451 > 00:01:59 d #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:03:19 v #4452 > 00:01:59 d #16 spiral_builder.run / dib / { exit_code = 0; result_length = 127007 }
00:03:19 d #4453 runtime.execute_with_options_async / { exit_code = 0; output_length = 134653 }
00:03:19 d #4 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder.exe dib --path sm'.dib --retries 3
00:03:19 d #4454 runtime.execute_with_options_async / { file_name = ../../workspace/target/release/spiral_builder.exe; arguments = US5_0 "dib --path rust/rust.dib --retries 3"; options = { command = ../../workspace/target/release/spiral_builder.exe dib --path rust/rust.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:03:19 v #4455 > 00:00:00 d #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "rust/rust.dib", "--retries", "3"])) }
00:03:19 v #4456 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/polyglot/lib/spiral/rust/rust.dib", "--output-path", "c:/home/git/polyglot/lib/spiral/rust/rust.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/polyglot/lib/spiral/rust/rust.dib" --output-path "c:/home/git/polyglot/lib/spiral/rust/rust.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:03:21 v #4457 > >
00:03:21 v #4458 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:21 v #4459 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:21 v #4460 > > │ # rust                                                                       │
00:03:21 v #4461 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:24 v #4462 > >
00:03:24 v #4463 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:24 v #4464 > > //// test
00:03:24 v #4465 > >
00:03:24 v #4466 > > open testing
00:03:26 v #4467 > >
00:03:26 v #4468 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:26 v #4469 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:26 v #4470 > > │ ## rust                                                                      │
00:03:26 v #4471 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:26 v #4472 > >
00:03:26 v #4473 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:26 v #4474 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:26 v #4475 > > │ ### any_base                                                                 │
00:03:26 v #4476 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:26 v #4477 > >
00:03:26 v #4478 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:26 v #4479 > > type any_base = any
00:03:26 v #4480 > >
00:03:26 v #4481 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:26 v #4482 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:26 v #4483 > > │ ### any                                                                      │
00:03:26 v #4484 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:26 v #4485 > >
00:03:26 v #4486 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:26 v #4487 > > nominal any =
00:03:26 v #4488 > >     `(
00:03:26 v #4489 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:03:26 v #4490 > > Fable.Core.Emit(\"core::any::Any\")>]]\ntype core_any_Any = class
00:03:26 v #4491 > > end\n#else\ntype core_any_Any = obj\n#endif\n"
00:03:26 v #4492 > >         $'' : $'core_any_Any'
00:03:26 v #4493 > >     )
00:03:26 v #4494 > >
00:03:26 v #4495 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:26 v #4496 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:26 v #4497 > > │ ### try                                                                      │
00:03:26 v #4498 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:26 v #4499 > >
00:03:26 v #4500 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:26 v #4501 > > nominal try t =
00:03:26 v #4502 > >     `(
00:03:26 v #4503 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:03:26 v #4504 > > Fable.Core.Emit(\"_\")>]]\n#endif\ntype core_ops_Try<'T> = class end"
00:03:26 v #4505 > >         $'' : $'core_ops_Try<`t>'
00:03:26 v #4506 > >     )
00:03:27 v #4507 > >
00:03:27 v #4508 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:27 v #4509 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:27 v #4510 > > │ ### cow                                                                      │
00:03:27 v #4511 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:27 v #4512 > >
00:03:27 v #4513 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:27 v #4514 > > nominal cow t =
00:03:27 v #4515 > >     `(
00:03:27 v #4516 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:03:27 v #4517 > > Fable.Core.Emit(\"std::borrow::Cow<$0>\")>]]\n#endif\ntype std_borrow_Cow<'T> =
00:03:27 v #4518 > > class end"
00:03:27 v #4519 > >         $'' : $'std_borrow_Cow<`t>'
00:03:27 v #4520 > >     )
00:03:27 v #4521 > >
00:03:27 v #4522 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:27 v #4523 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:27 v #4524 > > │ ### ref_cell                                                                 │
00:03:27 v #4525 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:27 v #4526 > >
00:03:27 v #4527 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:27 v #4528 > > nominal ref_cell t =
00:03:27 v #4529 > >     `(
00:03:27 v #4530 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:03:27 v #4531 > > Fable.Core.Emit(\"std::cell::RefCell<$0>\")>]]\n#endif\ntype
00:03:27 v #4532 > > std_cell_RefCell<'T> = class end"
00:03:27 v #4533 > >         $'' : $'std_cell_RefCell<`t>'
00:03:27 v #4534 > >     )
00:03:28 v #4535 > >
00:03:28 v #4536 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:28 v #4537 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:28 v #4538 > > │ ### cell_ref                                                                 │
00:03:28 v #4539 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:28 v #4540 > >
00:03:28 v #4541 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:28 v #4542 > > nominal cell_ref t =
00:03:28 v #4543 > >     `(
00:03:28 v #4544 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:03:28 v #4545 > > Fable.Core.Emit(\"std::cell::Ref<$0>\")>]]\n#endif\ntype std_cell_Ref<'T> =
00:03:28 v #4546 > > class end"
00:03:28 v #4547 > >         $'' : $'std_cell_Ref<`t>'
00:03:28 v #4548 > >     )
00:03:28 v #4549 > >
00:03:28 v #4550 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:28 v #4551 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:28 v #4552 > > │ ### rc                                                                       │
00:03:28 v #4553 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:28 v #4554 > >
00:03:28 v #4555 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:28 v #4556 > > nominal rc t =
00:03:28 v #4557 > >     `(
00:03:28 v #4558 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:03:28 v #4559 > > Fable.Core.Emit(\"std::rc::Rc<$0>\")>]]\n#endif\ntype std_rc_Rc<'T> = class end"
00:03:28 v #4560 > >         $'' : $'std_rc_Rc<`t>'
00:03:28 v #4561 > >     )
00:03:28 v #4562 > >
00:03:28 v #4563 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:28 v #4564 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:28 v #4565 > > │ ### lifetime_ref                                                             │
00:03:28 v #4566 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:28 v #4567 > >
00:03:28 v #4568 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:28 v #4569 > > nominal lifetime_ref (t : * -> *) u =
00:03:28 v #4570 > >     `(
00:03:28 v #4571 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:03:28 v #4572 > > Fable.Core.Emit(\"$0\")>]]\n#endif\ntype LifetimeRef<'T> = class end"
00:03:28 v #4573 > >         $'' : $'LifetimeRef<`(t u)>'
00:03:28 v #4574 > >     )
00:03:29 v #4575 > >
00:03:29 v #4576 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:29 v #4577 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:29 v #4578 > > │ ### lifetime_join                                                            │
00:03:29 v #4579 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:29 v #4580 > >
00:03:29 v #4581 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:29 v #4582 > > nominal lifetime_join t u =
00:03:29 v #4583 > >     `(
00:03:29 v #4584 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; Fable.Core.Emit(\"$0 +
00:03:29 v #4585 > > $1\")>]]\n#endif\ntype LifetimeJoin<'T, 'U> = class end"
00:03:29 v #4586 > >         $'' : $'LifetimeJoin<`t, `u>'
00:03:29 v #4587 > >     )
00:03:29 v #4588 > >
00:03:29 v #4589 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:29 v #4590 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:29 v #4591 > > │ ### lifetime                                                                 │
00:03:29 v #4592 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:29 v #4593 > >
00:03:29 v #4594 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:29 v #4595 > > nominal lifetime t u =
00:03:29 v #4596 > >     `(
00:03:29 v #4597 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; Fable.Core.Emit(\"$0
00:03:29 v #4598 > > $1\")>]]\n#endif\ntype Lifetime<'T, 'U> = class end"
00:03:29 v #4599 > >         $'' : $'Lifetime<`t, `u>'
00:03:29 v #4600 > >     )
00:03:30 v #4601 > >
00:03:30 v #4602 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:30 v #4603 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:30 v #4604 > > │ ### static_lifetime                                                          │
00:03:30 v #4605 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:30 v #4606 > >
00:03:30 v #4607 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:30 v #4608 > > nominal static_lifetime =
00:03:30 v #4609 > >     `(
00:03:30 v #4610 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:03:30 v #4611 > > Fable.Core.Emit(\"'static\")>]]\n#endif\ntype StaticLifetime = class end"
00:03:30 v #4612 > >         $'' : $'StaticLifetime'
00:03:30 v #4613 > >     )
00:03:30 v #4614 > >
00:03:30 v #4615 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:30 v #4616 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:30 v #4617 > > │ ### ref                                                                      │
00:03:30 v #4618 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:30 v #4619 > >
00:03:30 v #4620 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:30 v #4621 > > nominal ref t =
00:03:30 v #4622 > >     `(
00:03:30 v #4623 > >         backend_switch `(()) `({}) {
00:03:30 v #4624 > >             Fsharp =
00:03:30 v #4625 > >                 (fun () =>
00:03:30 v #4626 > >                     global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:03:30 v #4627 > > Fable.Core.Emit(\"&$0\")>]]\ntype Ref<'T> = class end\n#else\ntype Ref<'T> =
00:03:30 v #4628 > > 'T\n#endif\n"
00:03:30 v #4629 > >                 ) : () -> ()
00:03:30 v #4630 > >         }
00:03:30 v #4631 > >         $'' : $'Ref<`t>'
00:03:30 v #4632 > >     )
00:03:30 v #4633 > >
00:03:30 v #4634 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:30 v #4635 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:30 v #4636 > > │ ### static_ref                                                               │
00:03:30 v #4637 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:30 v #4638 > >
00:03:30 v #4639 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:30 v #4640 > > nominal static_ref t = ref (lifetime static_lifetime t)
00:03:31 v #4641 > >
00:03:31 v #4642 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:31 v #4643 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:31 v #4644 > > │ ### weak_rc                                                                  │
00:03:31 v #4645 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:31 v #4646 > >
00:03:31 v #4647 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:31 v #4648 > > nominal weak_rc t =
00:03:31 v #4649 > >     `(
00:03:31 v #4650 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:03:31 v #4651 > > Fable.Core.Emit(\"std::rc::Weak<$0>\")>]]\n#endif\ntype std_rc_Weak<'T> = class
00:03:31 v #4652 > > end"
00:03:31 v #4653 > >         $'' : $'std_rc_Weak<`t>'
00:03:31 v #4654 > >     )
00:03:31 v #4655 > >
00:03:31 v #4656 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:31 v #4657 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:31 v #4658 > > │ ### box                                                                      │
00:03:31 v #4659 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:31 v #4660 > >
00:03:31 v #4661 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:31 v #4662 > > nominal box t =
00:03:31 v #4663 > >     `(
00:03:31 v #4664 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:03:31 v #4665 > > Fable.Core.Emit(\"Box<$0>\")>]]\n#endif\ntype Box<'T> = class end"
00:03:31 v #4666 > >         $'' : $'Box<`t>'
00:03:31 v #4667 > >     )
00:03:32 v #4668 > >
00:03:32 v #4669 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:32 v #4670 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:32 v #4671 > > │ ### mut_cell                                                                 │
00:03:32 v #4672 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:32 v #4673 > >
00:03:32 v #4674 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:32 v #4675 > > nominal mut_cell t =
00:03:32 v #4676 > >     `(
00:03:32 v #4677 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:03:32 v #4678 > > Fable.Core.Emit(\"MutCell<$0>\")>]]\n#endif\ntype MutCell<'T> = class end"
00:03:32 v #4679 > >         $'' : $'MutCell<`t>'
00:03:32 v #4680 > >     )
00:03:32 v #4681 > >
00:03:32 v #4682 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:32 v #4683 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:32 v #4684 > > │ ### pin                                                                      │
00:03:32 v #4685 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:32 v #4686 > >
00:03:32 v #4687 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:32 v #4688 > > nominal pin t =
00:03:32 v #4689 > >     `(
00:03:32 v #4690 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:03:32 v #4691 > > Fable.Core.Emit(\"std::pin::Pin<$0>\")>]]\n#endif\ntype std_pin_Pin<'T> = class
00:03:32 v #4692 > > end"
00:03:32 v #4693 > >         $'' : $'std_pin_Pin<`t>'
00:03:32 v #4694 > >     )
00:03:32 v #4695 > >
00:03:32 v #4696 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:32 v #4697 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:32 v #4698 > > │ ### dyn'                                                                     │
00:03:32 v #4699 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:32 v #4700 > >
00:03:32 v #4701 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:32 v #4702 > > nominal dyn' t =
00:03:32 v #4703 > >     `(
00:03:32 v #4704 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; Fable.Core.Emit(\"dyn
00:03:32 v #4705 > > $0\")>]]\n#endif\ntype Dyn<'T> = class end"
00:03:32 v #4706 > >         $'' : $'Dyn<`t>'
00:03:32 v #4707 > >     )
00:03:33 v #4708 > >
00:03:33 v #4709 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:33 v #4710 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:33 v #4711 > > │ ### fn'                                                                      │
00:03:33 v #4712 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:33 v #4713 > >
00:03:33 v #4714 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:33 v #4715 > > nominal fn' t =
00:03:33 v #4716 > >     `(
00:03:33 v #4717 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; Fable.Core.Emit(\"Fn()
00:03:33 v #4718 > > -> $0\")>]]\n#endif\ntype Fn<'T> = class end"
00:03:33 v #4719 > >         $'' : $'Fn<`t>'
00:03:33 v #4720 > >     )
00:03:33 v #4721 > >
00:03:33 v #4722 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:33 v #4723 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:33 v #4724 > > │ ### action_fn                                                                │
00:03:33 v #4725 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:33 v #4726 > >
00:03:33 v #4727 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:33 v #4728 > > nominal action_fn t =
00:03:33 v #4729 > >     `(
00:03:33 v #4730 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:03:33 v #4731 > > Fable.Core.Emit(\"Fn($0)\")>]]\n#endif\ntype ActionFn<'T> = class end"
00:03:33 v #4732 > >         $'' : $'ActionFn<`t>'
00:03:33 v #4733 > >     )
00:03:34 v #4734 > >
00:03:34 v #4735 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:34 v #4736 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:34 v #4737 > > │ ### action_fn2                                                               │
00:03:34 v #4738 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:34 v #4739 > >
00:03:34 v #4740 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:34 v #4741 > > nominal action_fn2 t u =
00:03:34 v #4742 > >     `(
00:03:34 v #4743 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:03:34 v #4744 > > Fable.Core.Emit(\"Fn($0, $1)\")>]]\n#endif\ntype ActionFn2<'T, 'U> = class end"
00:03:34 v #4745 > >         $'' : $'ActionFn2<`t, `u>'
00:03:34 v #4746 > >     )
00:03:34 v #4747 > >
00:03:34 v #4748 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:34 v #4749 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:34 v #4750 > > │ ### fn_once                                                                  │
00:03:34 v #4751 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:34 v #4752 > >
00:03:34 v #4753 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:34 v #4754 > > nominal fn_once t =
00:03:34 v #4755 > >     `(
00:03:34 v #4756 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:03:34 v #4757 > > Fable.Core.Emit(\"FnOnce() -> $0\")>]]\n#endif\ntype FnOnce<'T> = class end"
00:03:34 v #4758 > >         $'' : $'FnOnce<`t>'
00:03:34 v #4759 > >     )
00:03:34 v #4760 > >
00:03:34 v #4761 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:34 v #4762 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:34 v #4763 > > │ ### fn_unit                                                                  │
00:03:34 v #4764 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:34 v #4765 > >
00:03:34 v #4766 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:34 v #4767 > > nominal fn_unit =
00:03:34 v #4768 > >     `(
00:03:34 v #4769 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:03:34 v #4770 > > Fable.Core.Emit(\"Fn()\")>]]\n#endif\ntype FnUnit = class end"
00:03:34 v #4771 > >         $'' : $'FnUnit'
00:03:34 v #4772 > >     )
00:03:35 v #4773 > >
00:03:35 v #4774 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:35 v #4775 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:35 v #4776 > > │ ### func0                                                                    │
00:03:35 v #4777 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:35 v #4778 > >
00:03:35 v #4779 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:35 v #4780 > > nominal func0 t =
00:03:35 v #4781 > >     `(
00:03:35 v #4782 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:03:35 v #4783 > > Fable.Core.Emit(\"Func0<$0>\")>]]\n#endif\ntype Func0<'T> = class end"
00:03:35 v #4784 > >         $'' : $'Func0<`t>'
00:03:35 v #4785 > >     )
00:03:35 v #4786 > >
00:03:35 v #4787 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:35 v #4788 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:35 v #4789 > > │ ### func1                                                                    │
00:03:35 v #4790 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:35 v #4791 > >
00:03:35 v #4792 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:35 v #4793 > > nominal func1 t u =
00:03:35 v #4794 > >     `(
00:03:35 v #4795 > >         typecase t with
00:03:35 v #4796 > >         | () => `func0 `u
00:03:35 v #4797 > >         | _ =>
00:03:35 v #4798 > >             global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:03:35 v #4799 > > Fable.Core.Emit(\"Func1<$0, $1>\")>]]\n#endif\ntype Func0<'T, 'U> = class end"
00:03:35 v #4800 > >             $'' : $'Func0<`t, `u>'
00:03:35 v #4801 > >     )
00:03:36 v #4802 > >
00:03:36 v #4803 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:36 v #4804 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:36 v #4805 > > │ ### impl                                                                     │
00:03:36 v #4806 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:36 v #4807 > >
00:03:36 v #4808 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:36 v #4809 > > nominal impl t =
00:03:36 v #4810 > >     `(
00:03:36 v #4811 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; Fable.Core.Emit(\"impl
00:03:36 v #4812 > > $0\")>]]\n#endif\ntype Impl<'T> = class end"
00:03:36 v #4813 > >         $'' : $'Impl<`t>'
00:03:36 v #4814 > >     )
00:03:36 v #4815 > >
00:03:36 v #4816 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:36 v #4817 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:36 v #4818 > > │ ### mut'                                                                     │
00:03:36 v #4819 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:36 v #4820 > >
00:03:36 v #4821 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:36 v #4822 > > nominal mut' t =
00:03:36 v #4823 > >     `(
00:03:36 v #4824 > >         backend_switch `(()) `({}) {
00:03:36 v #4825 > >             Fsharp =
00:03:36 v #4826 > >                 (fun () =>
00:03:36 v #4827 > >                     global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:03:36 v #4828 > > Fable.Core.Emit(\"mut $0\")>]]\n#endif\ntype Mut<'T> = class end"
00:03:36 v #4829 > >                 ) : () -> ()
00:03:36 v #4830 > >         }
00:03:36 v #4831 > >         $'' : $'Mut<`t>'
00:03:36 v #4832 > >     )
00:03:36 v #4833 > >
00:03:36 v #4834 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:36 v #4835 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:36 v #4836 > > │ ### send                                                                     │
00:03:36 v #4837 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:36 v #4838 > >
00:03:36 v #4839 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:36 v #4840 > > nominal send t =
00:03:36 v #4841 > >     `(
00:03:36 v #4842 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:03:36 v #4843 > > Fable.Core.Emit(\"Send\")>]]\n#endif\ntype Send<'T> = class end"
00:03:36 v #4844 > >         $'' : lifetime_join t $'Send<`t>'
00:03:36 v #4845 > >     )
00:03:37 v #4846 > >
00:03:37 v #4847 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:37 v #4848 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:37 v #4849 > > │ ### emit_expr                                                                │
00:03:37 v #4850 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:37 v #4851 > >
00:03:37 v #4852 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:37 v #4853 > > inl emit_expr forall a t. (args : a) (code : string) : t =
00:03:37 v #4854 > >     $'Fable.Core.RustInterop.emitRustExpr !args !code '
00:03:37 v #4855 > >
00:03:37 v #4856 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:37 v #4857 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:37 v #4858 > > │ ### (~!\\)                                                                   │
00:03:37 v #4859 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:37 v #4860 > >
00:03:37 v #4861 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:37 v #4862 > > inl (~!\) forall t. (code : string) : t =
00:03:37 v #4863 > >     emit_expr () code
00:03:38 v #4864 > >
00:03:38 v #4865 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:38 v #4866 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:38 v #4867 > > │ ### (~!\\\\)                                                                 │
00:03:38 v #4868 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:38 v #4869 > >
00:03:38 v #4870 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:38 v #4871 > > inl (~!\\) forall t u. ((args : t), (code : string)) : u =
00:03:38 v #4872 > >     emit_expr args code
00:03:38 v #4873 > >
00:03:38 v #4874 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:38 v #4875 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:38 v #4876 > > │ ### ptr                                                                      │
00:03:38 v #4877 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:38 v #4878 > >
00:03:38 v #4879 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:38 v #4880 > > nominal ptr t =
00:03:38 v #4881 > >     `(
00:03:38 v #4882 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:03:38 v #4883 > > Fable.Core.Emit(\"*const $0\")>]]\n#endif\ntype Ptr<'T> = class end"
00:03:38 v #4884 > >         $'' : $'Ptr<`t>'
00:03:38 v #4885 > >     )
00:03:38 v #4886 > >
00:03:38 v #4887 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:38 v #4888 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:38 v #4889 > > │ ### ptr_read                                                                 │
00:03:38 v #4890 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:38 v #4891 > >
00:03:38 v #4892 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:38 v #4893 > > inl ptr_read forall t. (x : ptr t) : t =
00:03:38 v #4894 > >     !\\(x, $'"std::ptr::read($0)"')
00:03:39 v #4895 > >
00:03:39 v #4896 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:39 v #4897 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:39 v #4898 > > │ ### u128                                                                     │
00:03:39 v #4899 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:39 v #4900 > >
00:03:39 v #4901 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:39 v #4902 > > nominal u128 =
00:03:39 v #4903 > >     `(
00:03:39 v #4904 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:03:39 v #4905 > > Fable.Core.Emit(\"u128\")>]]\n#endif\ntype u128 = class end"
00:03:39 v #4906 > >         $'' : $'u128'
00:03:39 v #4907 > >     )
00:03:39 v #4908 > >
00:03:39 v #4909 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:39 v #4910 > > inl u128 forall t. (x : t) : u128 =
00:03:39 v #4911 > >     !\\(x, $'"$0 as u128"')
00:03:40 v #4912 > >
00:03:40 v #4913 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:40 v #4914 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:40 v #4915 > > │ ### f64                                                                      │
00:03:40 v #4916 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:40 v #4917 > >
00:03:40 v #4918 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:40 v #4919 > > inl f64 forall t. (x : t) : f64 =
00:03:40 v #4920 > >     !\\(x, $'"$0 as f64"')
00:03:40 v #4921 > >
00:03:40 v #4922 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:40 v #4923 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:40 v #4924 > > │ ### unwrap_0                                                                 │
00:03:40 v #4925 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:40 v #4926 > >
00:03:40 v #4927 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:40 v #4928 > > inl unwrap_0 forall (t : * -> *) u. (x : t u) : u =
00:03:40 v #4929 > >     !\\(x, $'"$0.0"')
00:03:40 v #4930 > >
00:03:40 v #4931 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:40 v #4932 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:40 v #4933 > > │ ### unwrap_0_ref                                                             │
00:03:40 v #4934 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:40 v #4935 > >
00:03:40 v #4936 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:40 v #4937 > > inl unwrap_0_ref forall (t : * -> *) u. (x : ref (t u)) : ref u =
00:03:40 v #4938 > >     !\\(x, $'"&$0.0"')
00:03:41 v #4939 > >
00:03:41 v #4940 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:41 v #4941 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:41 v #4942 > > │ ### len                                                                      │
00:03:41 v #4943 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:41 v #4944 > >
00:03:41 v #4945 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:41 v #4946 > > inl len forall t u {uint; int}. (x : t) : u =
00:03:41 v #4947 > >     !\($'$"!x.len()"')
00:03:41 v #4948 > >
00:03:41 v #4949 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:41 v #4950 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:41 v #4951 > > │ ### len'                                                                     │
00:03:41 v #4952 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:41 v #4953 > >
00:03:41 v #4954 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:41 v #4955 > > inl len' forall t u {uint; int}. (x : t) : u =
00:03:41 v #4956 > >     !\\(x, $'$"$0.len()"')
00:03:42 v #4957 > >
00:03:42 v #4958 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:42 v #4959 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:42 v #4960 > > │ ### emit                                                                     │
00:03:42 v #4961 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:42 v #4962 > >
00:03:42 v #4963 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:42 v #4964 > > inl emit forall t. (x : t) : t =
00:03:42 v #4965 > >     !\\(x, $'"$0"')
00:03:42 v #4966 > >
00:03:42 v #4967 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:42 v #4968 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:42 v #4969 > > │ ### emit'                                                                    │
00:03:42 v #4970 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:42 v #4971 > >
00:03:42 v #4972 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:42 v #4973 > > inl emit' forall t. (x : t) : t =
00:03:42 v #4974 > >     !\\(x, $'"let !x = $0"')
00:03:42 v #4975 > >     x
00:03:42 v #4976 > >
00:03:42 v #4977 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:42 v #4978 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:42 v #4979 > > │ ### clone                                                                    │
00:03:42 v #4980 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:42 v #4981 > >
00:03:42 v #4982 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:42 v #4983 > > inl clone forall t. (x : t) : t =
00:03:42 v #4984 > >     !\\(x, $'"$0.clone()"')
00:03:43 v #4985 > >
00:03:43 v #4986 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:43 v #4987 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:43 v #4988 > > │ ### dbg                                                                      │
00:03:43 v #4989 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:43 v #4990 > >
00:03:43 v #4991 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:43 v #4992 > > inl dbg forall t. (x : t) : t =
00:03:43 v #4993 > >     !\\(x, $'"dbg\!($0)"')
00:03:43 v #4994 > >
00:03:43 v #4995 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:43 v #4996 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:43 v #4997 > > │ ### new_box                                                                  │
00:03:43 v #4998 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:43 v #4999 > >
00:03:43 v #5000 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:43 v #5001 > > inl new_box forall t. (x : t) : box t =
00:03:43 v #5002 > >     !\\(x, $'"Box::new($0)"')
00:03:44 v #5003 > >
00:03:44 v #5004 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:44 v #5005 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:44 v #5006 > > │ ### new_rc                                                                   │
00:03:44 v #5007 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:44 v #5008 > >
00:03:44 v #5009 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:44 v #5010 > > inl new_rc forall t. (x : t) : rc t =
00:03:44 v #5011 > >     !\\(x, $'"std::rc::Rc::new($0)"')
00:03:44 v #5012 > >
00:03:44 v #5013 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:44 v #5014 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:44 v #5015 > > │ ### rc_clone                                                                 │
00:03:44 v #5016 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:44 v #5017 > >
00:03:44 v #5018 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:44 v #5019 > > inl rc_clone forall t. (x : rc t) : rc t =
00:03:44 v #5020 > >     !\\(x, $'"std::rc::Rc::clone(&$0)"')
00:03:44 v #5021 > >
00:03:44 v #5022 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:44 v #5023 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:44 v #5024 > > │ ### rc_unwrap_or_clone                                                       │
00:03:44 v #5025 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:44 v #5026 > >
00:03:44 v #5027 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:44 v #5028 > > inl rc_unwrap_or_clone forall t. (x : rc t) : t =
00:03:44 v #5029 > >     !\\(x, $'"std::rc::Rc::unwrap_or_clone($0)"')
00:03:45 v #5030 > >
00:03:45 v #5031 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:45 v #5032 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:45 v #5033 > > │ ### rc_downgrade                                                             │
00:03:45 v #5034 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:45 v #5035 > >
00:03:45 v #5036 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:45 v #5037 > > inl rc_downgrade forall t. (x : rc t) : weak_rc t =
00:03:45 v #5038 > >     !\\(x, $'"std::rc::Rc::downgrade(&$0)"')
00:03:45 v #5039 > >
00:03:45 v #5040 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:45 v #5041 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:45 v #5042 > > │ ### new_ref_cell                                                             │
00:03:45 v #5043 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:45 v #5044 > >
00:03:45 v #5045 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:45 v #5046 > > inl new_ref_cell forall t. (x : t) : ref_cell t =
00:03:45 v #5047 > >     !\($'"std::cell::RefCell::new(!x)"')
00:03:46 v #5048 > >
00:03:46 v #5049 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:46 v #5050 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:46 v #5051 > > │ ### ref_cell_borrow                                                          │
00:03:46 v #5052 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:46 v #5053 > >
00:03:46 v #5054 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:46 v #5055 > > inl ref_cell_borrow forall t. (x : rc (ref_cell t)) : cell_ref t =
00:03:46 v #5056 > >     !\\(x, $'"std::cell::RefCell::borrow(&std::rc::Rc::clone(&$0))"')
00:03:46 v #5057 > >
00:03:46 v #5058 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:46 v #5059 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:46 v #5060 > > │ ### ref_cell_borrow_mut                                                      │
00:03:46 v #5061 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:46 v #5062 > >
00:03:46 v #5063 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:46 v #5064 > > inl ref_cell_borrow_mut forall t. (x : rc (ref_cell t)) : mut' t =
00:03:46 v #5065 > >     !\\(x, $'"std::cell::RefCell::borrow_mut(&std::rc::Rc::clone(&$0))"')
00:03:46 v #5066 > >
00:03:46 v #5067 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:46 v #5068 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:46 v #5069 > > │ ### ref_leak                                                                 │
00:03:46 v #5070 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:46 v #5071 > >
00:03:46 v #5072 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:46 v #5073 > > inl ref_leak forall t. (x : cell_ref t) : ref t =
00:03:46 v #5074 > >     !\\(x, $'"std::cell::Ref::leak($0)"')
00:03:47 v #5075 > >
00:03:47 v #5076 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:47 v #5077 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:47 v #5078 > > │ ### to_mut                                                                   │
00:03:47 v #5079 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:47 v #5080 > >
00:03:47 v #5081 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:47 v #5082 > > inl to_mut forall t. (x : t) : () =
00:03:47 v #5083 > >     (!\($'"true; // 1"') : bool) |> ignore
00:03:47 v #5084 > >     !\($'"let mut !x = !x"') : ()
00:03:47 v #5085 > >     // (!\($'"true; !x"') : bool) |> ignore
00:03:47 v #5086 > >     // !\($'"!x"')
00:03:47 v #5087 > >     // inl result = !\($'"!x"') : mut' t
00:03:47 v #5088 > >     // !\($'"!result"')
00:03:47 v #5089 > >     // inl result = !\($'"*/ // a"') : mut' t
00:03:47 v #5090 > >     // inl result = !\($'"!x"') : mut' t
00:03:47 v #5091 > >     // result |> fun x => $'!x |> unbox // b'
00:03:47 v #5092 > >
00:03:47 v #5093 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:47 v #5094 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:47 v #5095 > > │ ### ref_map                                                                  │
00:03:47 v #5096 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:47 v #5097 > >
00:03:47 v #5098 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:47 v #5099 > > inl ref_map forall t u. (fn : t -> u) (x : ref t) : ref u =
00:03:47 v #5100 > >     !\($'"!fn(!x)"')
00:03:48 v #5101 > >
00:03:48 v #5102 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:48 v #5103 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:48 v #5104 > > │ ### ref_eval                                                                 │
00:03:48 v #5105 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:48 v #5106 > >
00:03:48 v #5107 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:48 v #5108 > > inl ref_eval forall t u. (fn : t -> u) (ref : ref t) : u =
00:03:48 v #5109 > >     !\\(fn, $'"$0(!ref.clone())"')
00:03:48 v #5110 > >
00:03:48 v #5111 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:48 v #5112 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:48 v #5113 > > │ ### cow_as_ref                                                               │
00:03:48 v #5114 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:48 v #5115 > >
00:03:48 v #5116 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:48 v #5117 > > inl cow_as_ref forall t. (s : cow t) : ref t =
00:03:48 v #5118 > >     !\\(s, $'"$0.as_ref()"')
00:03:48 v #5119 > >
00:03:48 v #5120 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:48 v #5121 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:48 v #5122 > > │ ### from_mut                                                                 │
00:03:48 v #5123 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:48 v #5124 > >
00:03:48 v #5125 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:48 v #5126 > > inl from_mut forall t. (x : mut' t) : t =
00:03:48 v #5127 > >     !\\(x, $'"$0"')
00:03:49 v #5128 > >
00:03:49 v #5129 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:49 v #5130 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:49 v #5131 > > │ ### box_fn                                                                   │
00:03:49 v #5132 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:49 v #5133 > >
00:03:49 v #5134 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:49 v #5135 > > inl box_fn forall t. (x : () -> ()) : box t =
00:03:49 v #5136 > >     inl x = join x
00:03:49 v #5137 > >     !\($'"Box::new(move || !x())"')
00:03:49 v #5138 > >
00:03:49 v #5139 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:49 v #5140 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:49 v #5141 > > │ ### box_pin                                                                  │
00:03:49 v #5142 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:49 v #5143 > >
00:03:49 v #5144 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:49 v #5145 > > inl box_pin forall t. (x : t) : pin (box t) =
00:03:49 v #5146 > >     !\\(x, $'"Box::pin($0)"')
00:03:50 v #5147 > >
00:03:50 v #5148 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:50 v #5149 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:50 v #5150 > > │ ### to_ref                                                                   │
00:03:50 v #5151 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:50 v #5152 > >
00:03:50 v #5153 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:50 v #5154 > > inl to_ref forall t. (x : t) : ref t =
00:03:50 v #5155 > >     !\\(x, $'"&$0"')
00:03:50 v #5156 > >
00:03:50 v #5157 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:50 v #5158 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:50 v #5159 > > │ ### to_ref_mut                                                               │
00:03:50 v #5160 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:50 v #5161 > >
00:03:50 v #5162 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:50 v #5163 > > inl to_ref_mut forall t. (x : t) : ref (mut' t) =
00:03:50 v #5164 > >     x |> to_mut
00:03:50 v #5165 > >     !\\(x, $'"&mut $0"')
00:03:50 v #5166 > >
00:03:50 v #5167 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:50 v #5168 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:50 v #5169 > > │ ### deref                                                                    │
00:03:50 v #5170 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:50 v #5171 > >
00:03:50 v #5172 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:50 v #5173 > > inl deref forall t. (ref : ref t) : t =
00:03:50 v #5174 > >     !\\(ref, $'"*$0"')
00:03:51 v #5175 > >
00:03:51 v #5176 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:51 v #5177 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:51 v #5178 > > │ ### clone_deref                                                              │
00:03:51 v #5179 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:51 v #5180 > >
00:03:51 v #5181 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:51 v #5182 > > inl clone_deref forall t. (ref : ref t) : t =
00:03:51 v #5183 > >     !\\(ref, $'"$0.clone()"')
00:03:51 v #5184 > >
00:03:51 v #5185 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:51 v #5186 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:51 v #5187 > > │ ### from_ref                                                                 │
00:03:51 v #5188 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:51 v #5189 > >
00:03:51 v #5190 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:51 v #5191 > > inl from_ref forall t. (ref : ref t) : t =
00:03:51 v #5192 > >     !\($'"!ref"')
00:03:52 v #5193 > >
00:03:52 v #5194 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:52 v #5195 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:52 v #5196 > > │ ### from_ref_mut                                                             │
00:03:52 v #5197 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:52 v #5198 > >
00:03:52 v #5199 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:52 v #5200 > > inl from_ref_mut forall t. (ref : ref (mut' t)) : t =
00:03:52 v #5201 > >     !\($'"!ref"')
00:03:52 v #5202 > >
00:03:52 v #5203 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:52 v #5204 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:52 v #5205 > > │ ### reref                                                                    │
00:03:52 v #5206 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:52 v #5207 > >
00:03:52 v #5208 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:52 v #5209 > > inl reref forall t (u : * -> *). (x : ref (u t)) : ref t =
00:03:52 v #5210 > >     !\($'$"&*!x"')
00:03:52 v #5211 > >
00:03:52 v #5212 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:52 v #5213 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:52 v #5214 > > │ ### into                                                                     │
00:03:52 v #5215 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:52 v #5216 > >
00:03:52 v #5217 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:52 v #5218 > > inl into forall t u. (x : t) : u =
00:03:52 v #5219 > >     !\($'"!x.into()"')
00:03:53 v #5220 > >
00:03:53 v #5221 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:53 v #5222 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:53 v #5223 > > │ ### ops_deref                                                                │
00:03:53 v #5224 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:53 v #5225 > >
00:03:53 v #5226 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:53 v #5227 > > inl ops_deref forall t. (ref : t) : t =
00:03:53 v #5228 > >     !\\(ref, $'"core::ops::Deref::deref(&$0)"')
00:03:53 v #5229 > >
00:03:53 v #5230 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:53 v #5231 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:53 v #5232 > > │ ### func0_eval                                                               │
00:03:53 v #5233 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:53 v #5234 > >
00:03:53 v #5235 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:53 v #5236 > > inl func0_eval forall t. (x : func0 t) : t =
00:03:53 v #5237 > >     !\\(x, $'"$0()"')
00:03:54 v #5238 > >
00:03:54 v #5239 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:54 v #5240 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:54 v #5241 > > │ ### func0_move                                                               │
00:03:54 v #5242 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:54 v #5243 > >
00:03:54 v #5244 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:54 v #5245 > > inl func0_move forall t. (fn : func0 t) : t =
00:03:54 v #5246 > >     inl fn = join fn
00:03:54 v #5247 > >     !\($'"(move || !fn())()"')
00:03:54 v #5248 > >
00:03:54 v #5249 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:54 v #5250 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:54 v #5251 > > │ ### move                                                                     │
00:03:54 v #5252 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:54 v #5253 > >
00:03:54 v #5254 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:54 v #5255 > > inl move forall t. (fn : () -> t) : func0 t =
00:03:54 v #5256 > >     !\\(fn, $'"Func0::new(move || $0())"')
00:03:54 v #5257 > >
00:03:54 v #5258 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:54 v #5259 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:54 v #5260 > > │ ### to_static_ref_unbox                                                      │
00:03:54 v #5261 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:54 v #5262 > >
00:03:54 v #5263 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:54 v #5264 > > inl to_static_ref_unbox forall t. (x : ref t) : static_ref t =
00:03:54 v #5265 > >     x |> unbox
00:03:55 v #5266 > >
00:03:55 v #5267 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:55 v #5268 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:55 v #5269 > > │ ### from_static_ref_unbox                                                    │
00:03:55 v #5270 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:55 v #5271 > >
00:03:55 v #5272 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:55 v #5273 > > inl from_static_ref_unbox forall t. (x : static_ref t) : ref t =
00:03:55 v #5274 > >     x |> unbox
00:03:55 v #5275 > >
00:03:55 v #5276 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:55 v #5277 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:55 v #5278 > > │ ### box_leak                                                                 │
00:03:55 v #5279 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:55 v #5280 > >
00:03:55 v #5281 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:55 v #5282 > > inl box_leak forall t. (x : box t) : static_ref (mut' t) =
00:03:55 v #5283 > >     !\\(x, $'"Box::leak($0)"')
00:03:56 v #5284 > >
00:03:56 v #5285 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:56 v #5286 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:56 v #5287 > > │ ### drop                                                                     │
00:03:56 v #5288 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:56 v #5289 > >
00:03:56 v #5290 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:56 v #5291 > > inl drop forall t. (x : t) : () =
00:03:56 v #5292 > >     (!\\(x, $'"true; drop($0)"') : bool) |> ignore
00:03:56 v #5293 > >
00:03:56 v #5294 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:56 v #5295 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:56 v #5296 > > │ ### break                                                                    │
00:03:56 v #5297 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:56 v #5298 > >
00:03:56 v #5299 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:56 v #5300 > > inl break () : () =
00:03:56 v #5301 > >     (!\($'"true; break"') : bool) |> ignore
00:03:57 v #5302 > >
00:03:57 v #5303 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:57 v #5304 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:57 v #5305 > > │ ### fix_closure'                                                             │
00:03:57 v #5306 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:57 v #5307 > >
00:03:57 v #5308 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:57 v #5309 > > inl fix_closure' forall t. (depth : u8 * u8) (x : t) : string =
00:03:57 v #5310 > >     inl rec loop text (acc : string) n : string =
00:03:57 v #5311 > >         if n <= 0
00:03:57 v #5312 > >         then acc
00:03:57 v #5313 > >         else loop text (acc +. text) (n - 1)
00:03:57 v #5314 > >     inl a = depth |> fst |> loop "}" ""
00:03:57 v #5315 > >     inl b = depth |> snd |> loop "{" ""
00:03:57 v #5316 > >     inl x' : infer = $'!x '
00:03:57 v #5317 > >     run_target_args (fun () => x') function
00:03:57 v #5318 > >         | Rust _ => fun x' => !\\(x', $'$"true; let !x' = $0"') : bool
00:03:57 v #5319 > >         | _ => fun x' => $'true'
00:03:57 v #5320 > >     |> ignore
00:03:57 v #5321 > >     $'$"true; !x' " + !a + "); " + !b + " // rust.fix_closure\'"'
00:03:57 v #5322 > >
00:03:57 v #5323 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:57 v #5324 > > //// test
00:03:57 v #5325 > > //// print_code
00:03:57 v #5326 > >
00:03:57 v #5327 > > fix_closure' (3, 2) 0i32
00:03:57 v #5328 > > |> _assert_eq "true; v8 }}}); {{ // rust.fix_closure'"
00:03:58 v #5329 > >
00:03:58 v #5330 > > ╭─[ 1.09s - stdout ]───────────────────────────────────────────────────────────╮
00:03:58 v #5331 > > │ let rec method1 (v0 : bool) : bool =                                         │
00:03:58 v #5332 > > │     v0                                                                       │
00:03:58 v #5333 > > │ and closure0 (v0 : string) () : unit =                                       │
00:03:58 v #5334 > > │     let v1 : (string -> unit) = System.Console.WriteLine                     │
00:03:58 v #5335 > > │     v1 v0                                                                    │
00:03:58 v #5336 > > │ and method0 () : unit =                                                      │
00:03:58 v #5337 > > │     let v0 : string = ""                                                     │
00:03:58 v #5338 > > │     let v1 : string = "}"                                                    │
00:03:58 v #5339 > > │     let v2 : string = v0 + v1                                                │
00:03:58 v #5340 > > │     let v3 : string = v2 + v1                                                │
00:03:58 v #5341 > > │     let v4 : string = v3 + v1                                                │
00:03:58 v #5342 > > │     let v5 : string = "{"                                                    │
00:03:58 v #5343 > > │     let v6 : string = v0 + v5                                                │
00:03:58 v #5344 > > │     let v7 : string = v6 + v5                                                │
00:03:58 v #5345 > > │     let v8 : _ = 0                                                           │
00:03:58 v #5346 > > │     let v9 : unit = ()                                                       │
00:03:58 v #5347 > > │                                                                              │
00:03:58 v #5348 > > │ #if FABLE_COMPILER || WASM || CONTRACT                                       │
00:03:58 v #5349 > > │                                                                              │
00:03:58 v #5350 > > │ #if FABLE_COMPILER_RUST && !WASM && !CONTRACT                                │
00:03:58 v #5351 > > │     let v10 : string = $"true; let v8 = $0"                                  │
00:03:58 v #5352 > > │     let v11 : bool = Fable.Core.RustInterop.emitRustExpr v8 v10              │
00:03:58 v #5353 > > │     let _v9 = v11                                                            │
00:03:58 v #5354 > > │     #endif                                                                   │
00:03:58 v #5355 > > │ #if FABLE_COMPILER_RUST && WASM                                              │
00:03:58 v #5356 > > │     let v12 : string = $"true; let v8 = $0"                                  │
00:03:58 v #5357 > > │     let v13 : bool = Fable.Core.RustInterop.emitRustExpr v8 v12              │
00:03:58 v #5358 > > │     let _v9 = v13                                                            │
00:03:58 v #5359 > > │     #endif                                                                   │
00:03:58 v #5360 > > │ #if FABLE_COMPILER_RUST && CONTRACT                                          │
00:03:58 v #5361 > > │     let v14 : string = $"true; let v8 = $0"                                  │
00:03:58 v #5362 > > │     let v15 : bool = Fable.Core.RustInterop.emitRustExpr v8 v14              │
00:03:58 v #5363 > > │     let _v9 = v15                                                            │
00:03:58 v #5364 > > │     #endif                                                                   │
00:03:58 v #5365 > > │ #if FABLE_COMPILER_TYPESCRIPT                                                │
00:03:58 v #5366 > > │     let v16 : bool = true                                                    │
00:03:58 v #5367 > > │     let _v9 = v16                                                            │
00:03:58 v #5368 > > │     #endif                                                                   │
00:03:58 v #5369 > > │ #if FABLE_COMPILER_PYTHON                                                    │
00:03:58 v #5370 > > │     let v17 : bool = true                                                    │
00:03:58 v #5371 > > │     let _v9 = v17                                                            │
00:03:58 v #5372 > > │     #endif                                                                   │
00:03:58 v #5373 > > │ #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT &&                    │
00:03:58 v #5374 > > │ !FABLE_COMPILER_PYTHON                                                       │
00:03:58 v #5375 > > │     let v18 : bool = true                                                    │
00:03:58 v #5376 > > │     let _v9 = v18                                                            │
00:03:58 v #5377 > > │     #endif                                                                   │
00:03:58 v #5378 > > │ #else                                                                        │
00:03:58 v #5379 > > │     let v19 : bool = true                                                    │
00:03:58 v #5380 > > │     let _v9 = v19                                                            │
00:03:58 v #5381 > > │     #endif                                                                   │
00:03:58 v #5382 > > │     let v20 : bool = _v9                                                     │
00:03:58 v #5383 > > │     let v23 : string = $"true; v8 " + v4 + "); " + v7 + " //                 │
00:03:58 v #5384 > > │ rust.fix_closure'"                                                           │
00:03:58 v #5385 > > │     let v24 : bool = v23 = "true; v8 }}}); {{ // rust.fix_closure'"          │
00:03:58 v #5386 > > │     let v26 : bool =                                                         │
00:03:58 v #5387 > > │         if v24 then                                                          │
00:03:58 v #5388 > > │             true                                                             │
00:03:58 v #5389 > > │         else                                                                 │
00:03:58 v #5390 > > │             method1(v24)                                                     │
00:03:58 v #5391 > > │     let v27 : string = "__assert_eq"                                         │
00:03:58 v #5392 > > │     let v28 : string = "true; v8 }}}); {{ // rust.fix_closure'"              │
00:03:58 v #5393 > > │     let v29 : string = $"{v27} / actual: %A{v23} / expected: %A{v28}"        │
00:03:58 v #5394 > > │     let v32 : unit = ()                                                      │
00:03:58 v #5395 > > │     let v33 : (unit -> unit) = closure0(v29)                                 │
00:03:58 v #5396 > > │     let v34 : unit = (fun () -> v33 (); v32) ()                              │
00:03:58 v #5397 > > │     let v36 : bool = v26 = false                                             │
00:03:58 v #5398 > > │     if v36 then                                                              │
00:03:58 v #5399 > > │         failwith<unit> v29                                                   │
00:03:58 v #5400 > > │ method0()                                                                    │
00:03:58 v #5401 > > │                                                                              │
00:03:58 v #5402 > > │ __assert_eq / actual: "true; v8 }}}); {{ // rust.fix_closure'" / expected:   │
00:03:58 v #5403 > > │ "true; v8 }}}); {{ // rust.fix_closure'"                                     │
00:03:58 v #5404 > > │                                                                              │
00:03:58 v #5405 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:58 v #5406 > >
00:03:58 v #5407 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:58 v #5408 > > //// test
00:03:58 v #5409 > > //// print_code
00:03:58 v #5410 > >
00:03:58 v #5411 > > fix_closure' (0, 0) ()
00:03:58 v #5412 > > |> _assert_eq "true; v0 );  // rust.fix_closure'"
00:03:58 v #5413 > >
00:03:58 v #5414 > > ╭─[ 405.93ms - stdout ]────────────────────────────────────────────────────────╮
00:03:58 v #5415 > > │ let rec method1 (v0 : bool) : bool =                                         │
00:03:58 v #5416 > > │     v0                                                                       │
00:03:58 v #5417 > > │ and closure0 (v0 : string) () : unit =                                       │
00:03:58 v #5418 > > │     let v1 : (string -> unit) = System.Console.WriteLine                     │
00:03:58 v #5419 > > │     v1 v0                                                                    │
00:03:58 v #5420 > > │ and method0 () : unit =                                                      │
00:03:58 v #5421 > > │     let v0 : _ = ()                                                          │
00:03:58 v #5422 > > │     let v1 : unit = ()                                                       │
00:03:58 v #5423 > > │                                                                              │
00:03:58 v #5424 > > │ #if FABLE_COMPILER || WASM || CONTRACT                                       │
00:03:58 v #5425 > > │                                                                              │
00:03:58 v #5426 > > │ #if FABLE_COMPILER_RUST && !WASM && !CONTRACT                                │
00:03:58 v #5427 > > │     let v2 : string = $"true; let v0 = $0"                                   │
00:03:58 v #5428 > > │     let v3 : bool = Fable.Core.RustInterop.emitRustExpr v0 v2                │
00:03:58 v #5429 > > │     let _v1 = v3                                                             │
00:03:58 v #5430 > > │     #endif                                                                   │
00:03:58 v #5431 > > │ #if FABLE_COMPILER_RUST && WASM                                              │
00:03:58 v #5432 > > │     let v4 : string = $"true; let v0 = $0"                                   │
00:03:58 v #5433 > > │     let v5 : bool = Fable.Core.RustInterop.emitRustExpr v0 v4                │
00:03:58 v #5434 > > │     let _v1 = v5                                                             │
00:03:58 v #5435 > > │     #endif                                                                   │
00:03:58 v #5436 > > │ #if FABLE_COMPILER_RUST && CONTRACT                                          │
00:03:58 v #5437 > > │     let v6 : string = $"true; let v0 = $0"                                   │
00:03:58 v #5438 > > │     let v7 : bool = Fable.Core.RustInterop.emitRustExpr v0 v6                │
00:03:58 v #5439 > > │     let _v1 = v7                                                             │
00:03:58 v #5440 > > │     #endif                                                                   │
00:03:58 v #5441 > > │ #if FABLE_COMPILER_TYPESCRIPT                                                │
00:03:58 v #5442 > > │     let v8 : bool = true                                                     │
00:03:58 v #5443 > > │     let _v1 = v8                                                             │
00:03:58 v #5444 > > │     #endif                                                                   │
00:03:58 v #5445 > > │ #if FABLE_COMPILER_PYTHON                                                    │
00:03:58 v #5446 > > │     let v9 : bool = true                                                     │
00:03:58 v #5447 > > │     let _v1 = v9                                                             │
00:03:58 v #5448 > > │     #endif                                                                   │
00:03:58 v #5449 > > │ #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT &&                    │
00:03:58 v #5450 > > │ !FABLE_COMPILER_PYTHON                                                       │
00:03:58 v #5451 > > │     let v10 : bool = true                                                    │
00:03:58 v #5452 > > │     let _v1 = v10                                                            │
00:03:58 v #5453 > > │     #endif                                                                   │
00:03:58 v #5454 > > │ #else                                                                        │
00:03:58 v #5455 > > │     let v11 : bool = true                                                    │
00:03:58 v #5456 > > │     let _v1 = v11                                                            │
00:03:58 v #5457 > > │     #endif                                                                   │
00:03:58 v #5458 > > │     let v12 : bool = _v1                                                     │
00:03:58 v #5459 > > │     let v15 : string = ""                                                    │
00:03:58 v #5460 > > │     let v16 : string = $"true; v0 " + v15 + "); " + v15 + " //               │
00:03:58 v #5461 > > │ rust.fix_closure'"                                                           │
00:03:58 v #5462 > > │     let v17 : bool = v16 = "true; v0 );  // rust.fix_closure'"               │
00:03:58 v #5463 > > │     let v19 : bool =                                                         │
00:03:58 v #5464 > > │         if v17 then                                                          │
00:03:58 v #5465 > > │             true                                                             │
00:03:58 v #5466 > > │         else                                                                 │
00:03:58 v #5467 > > │             method1(v17)                                                     │
00:03:58 v #5468 > > │     let v20 : string = "__assert_eq"                                         │
00:03:58 v #5469 > > │     let v21 : string = "true; v0 );  // rust.fix_closure'"                   │
00:03:58 v #5470 > > │     let v22 : string = $"{v20} / actual: %A{v16} / expected: %A{v21}"        │
00:03:58 v #5471 > > │     let v25 : unit = ()                                                      │
00:03:58 v #5472 > > │     let v26 : (unit -> unit) = closure0(v22)                                 │
00:03:58 v #5473 > > │     let v27 : unit = (fun () -> v26 (); v25) ()                              │
00:03:58 v #5474 > > │     let v29 : bool = v19 = false                                             │
00:03:58 v #5475 > > │     if v29 then                                                              │
00:03:58 v #5476 > > │         failwith<unit> v22                                                   │
00:03:58 v #5477 > > │ method0()                                                                    │
00:03:58 v #5478 > > │                                                                              │
00:03:58 v #5479 > > │ __assert_eq / actual: "true; v0 );  // rust.fix_closure'" / expected: "true; │
00:03:58 v #5480 > > │ v0 );  // rust.fix_closure'"                                                 │
00:03:58 v #5481 > > │                                                                              │
00:03:58 v #5482 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:58 v #5483 > >
00:03:58 v #5484 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:58 v #5485 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:58 v #5486 > > │ ### fix_closure                                                              │
00:03:58 v #5487 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:58 v #5488 > >
00:03:58 v #5489 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:58 v #5490 > > inl fix_closure depth x =
00:03:58 v #5491 > >     inl code = fix_closure' depth x
00:03:58 v #5492 > >     (!\code : bool) |> ignore
00:03:59 v #5493 > >
00:03:59 v #5494 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:59 v #5495 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:59 v #5496 > > │ ### loop                                                                     │
00:03:59 v #5497 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:59 v #5498 > >
00:03:59 v #5499 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:59 v #5500 > > inl loop (depth : i32) (fn : () -> ()) : () =
00:03:59 v #5501 > >     (!\($'"true; loop { // rust.loop"') : bool) |> ignore
00:03:59 v #5502 > >     fn ()
00:03:59 v #5503 > >
00:03:59 v #5504 > >     listm.init depth id
00:03:59 v #5505 > >     |> listm.iter fun n =>
00:03:59 v #5506 > >         (!\($'"true; } // rust.loop"') : bool) |> ignore
00:03:59 v #5507 > >
00:03:59 v #5508 > >     (!\($'"true; } // rust.loop"') : bool) |> ignore
00:03:59 v #5509 > >
00:03:59 v #5510 > >     listm.init depth id
00:03:59 v #5511 > >     |> listm.iter fun n =>
00:03:59 v #5512 > >         (!\($'"true; { // rust.loop"') : bool) |> ignore
00:03:59 v #5513 > >
00:03:59 v #5514 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:59 v #5515 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:59 v #5516 > > │ ### capture                                                                  │
00:03:59 v #5517 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:59 v #5518 > >
00:03:59 v #5519 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:59 v #5520 > > inl capture forall t. (fn : () -> t) : t =
00:03:59 v #5521 > >     (!\($'"true; let _capture = (|| { //"') : bool) |> ignore
00:03:59 v #5522 > >     (!\\(fn (), $'"true; $0 })()"') : bool) |> ignore
00:03:59 v #5523 > >     !\($'"_capture"')
00:04:00 v #5524 > >
00:04:00 v #5525 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:00 v #5526 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:04:00 v #5527 > > │ ### capture_move                                                             │
00:04:00 v #5528 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:04:00 v #5529 > >
00:04:00 v #5530 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:00 v #5531 > > inl capture_move forall t. (fn : () -> t) : t =
00:04:00 v #5532 > >     (!\($'"true; let _capture_move = (move || { //"') : bool) |> ignore
00:04:00 v #5533 > >     (!\\(fn (), $'"true; $0 })()"') : bool) |> ignore
00:04:00 v #5534 > >     !\($'"_capture_move"')
00:04:00 v #5535 > >
00:04:00 v #5536 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:00 v #5537 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:04:00 v #5538 > > │ ### type_emit                                                                │
00:04:00 v #5539 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:04:00 v #5540 > >
00:04:00 v #5541 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:00 v #5542 > > nominal type_emit t =
00:04:00 v #5543 > >     `(
00:04:00 v #5544 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; Fable.Core.Emit(\"*/ $0
00:04:00 v #5545 > > /*\")>]]\n#endif\ntype TypeEmit<'T> = class end"
00:04:00 v #5546 > >         $'' : $'TypeEmit<`t>'
00:04:00 v #5547 > >     )
00:04:01 v #5548 > >
00:04:01 v #5549 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:01 v #5550 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:04:01 v #5551 > > │ ### partial_eq_wrapper                                                       │
00:04:01 v #5552 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:04:01 v #5553 > >
00:04:01 v #5554 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:01 v #5555 > > nominal partial_eq_wrapper t =
00:04:01 v #5556 > >     `(
00:04:01 v #5557 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:04:01 v #5558 > > Fable.Core.Emit(\"PartialEqWrapper<$0>\")>]]\n#endif\ntype PartialEqWrapper<'T>
00:04:01 v #5559 > > = class end"
00:04:01 v #5560 > >         $'' : $'PartialEqWrapper<`t>'
00:04:01 v #5561 > >     )
00:04:01 v #5562 > >
00:04:01 v #5563 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:01 v #5564 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:04:01 v #5565 > > │ ### new_partial_eq_wrapper                                                   │
00:04:01 v #5566 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:04:01 v #5567 > >
00:04:01 v #5568 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:01 v #5569 > > inl new_partial_eq_wrapper forall t.
00:04:01 v #5570 > >     (eq_fn : ref (partial_eq_wrapper t) -> ref (partial_eq_wrapper t) -> bool)
00:04:01 v #5571 > >     (x : t)
00:04:01 v #5572 > >     : partial_eq_wrapper t
00:04:01 v #5573 > >     =
00:04:01 v #5574 > >     inl struct () =
00:04:01 v #5575 > >         !\($'"} //"') : ()
00:04:01 v #5576 > >
00:04:01 v #5577 > >         !\($'"#[[derive( //"') : ()
00:04:01 v #5578 > >         !\($'"  Debug, //"') : ()
00:04:01 v #5579 > >         !\($'"  Clone, //"') : ()
00:04:01 v #5580 > >         !\($'")]] //"') : ()
00:04:01 v #5581 > >         !\($'"pub struct PartialEqWrapper<T>(T); /*"') : ()
00:04:01 v #5582 > >
00:04:01 v #5583 > >         !\($'"*/ impl PartialEq for PartialEqWrapper< /*"') : ()
00:04:01 v #5584 > >         (null () : type_emit t) |> ignore
00:04:01 v #5585 > >         !\($'"*/ > { //"') : ()
00:04:01 v #5586 > >
00:04:01 v #5587 > >         !\($'"fn eq(&self, other: &Self) -> bool { //"') : ()
00:04:01 v #5588 > >
00:04:01 v #5589 > >         inl self : ref (partial_eq_wrapper t) = !\($'$"self"')
00:04:01 v #5590 > >         inl other : ref (partial_eq_wrapper t) = !\($'$"other"')
00:04:01 v #5591 > >
00:04:01 v #5592 > >         self
00:04:01 v #5593 > >         |> eq_fn other
00:04:01 v #5594 > >         |> fun x => !\($'$"!x //"')
00:04:01 v #5595 > >
00:04:01 v #5596 > >         !\($'"} } } fn _main() { { { //"') : ()
00:04:01 v #5597 > >
00:04:01 v #5598 > >     $'let _!struct = true' : ()
00:04:01 v #5599 > >
00:04:01 v #5600 > >     !\\(x, $'"PartialEqWrapper($0)"')
00:04:01 v #5601 > >
00:04:01 v #5602 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:01 v #5603 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:04:01 v #5604 > > │ ### clone_wrapper                                                            │
00:04:01 v #5605 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:04:01 v #5606 > >
00:04:01 v #5607 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:01 v #5608 > > nominal clone_wrapper t =
00:04:01 v #5609 > >     `(
00:04:01 v #5610 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:04:01 v #5611 > > Fable.Core.Emit(\"CloneWrapper<$0>\")>]]\n#endif\ntype CloneWrapper<'T> = class
00:04:01 v #5612 > > end"
00:04:01 v #5613 > >         $'' : $'CloneWrapper<`t>'
00:04:01 v #5614 > >     )
00:04:02 v #5615 > >
00:04:02 v #5616 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:02 v #5617 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:04:02 v #5618 > > │ ### new_clone_wrapper                                                        │
00:04:02 v #5619 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:04:02 v #5620 > >
00:04:02 v #5621 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:02 v #5622 > > inl new_clone_wrapper forall t.
00:04:02 v #5623 > >     (clone_fn : ref (clone_wrapper t) -> ref (clone_wrapper t))
00:04:02 v #5624 > >     (x : t)
00:04:02 v #5625 > >     : clone_wrapper t
00:04:02 v #5626 > >     =
00:04:02 v #5627 > >     inl struct () =
00:04:02 v #5628 > >         !\($'"} //"') : ()
00:04:02 v #5629 > >
00:04:02 v #5630 > >         !\($'"#[[derive( //"') : ()
00:04:02 v #5631 > >         !\($'"  Debug, //"') : ()
00:04:02 v #5632 > >         !\($'")]] //"') : ()
00:04:02 v #5633 > >         !\($'"pub struct CloneWrapper<T>(T); /*"') : ()
00:04:02 v #5634 > >
00:04:02 v #5635 > >         !\($'"*/ impl Clone for CloneWrapper< /*"') : ()
00:04:02 v #5636 > >         (null () : type_emit t) |> ignore
00:04:02 v #5637 > >         !\($'"*/ > { //"') : ()
00:04:02 v #5638 > >
00:04:02 v #5639 > >         !\($'"fn clone(&self) -> Self { //"') : ()
00:04:02 v #5640 > >
00:04:02 v #5641 > >         inl self : ref (clone_wrapper t) = !\($'$"self"')
00:04:02 v #5642 > >
00:04:02 v #5643 > >         self
00:04:02 v #5644 > >         |> clone_fn
00:04:02 v #5645 > >         |> fun x => !\($'$"!x.clone() //"')
00:04:02 v #5646 > >
00:04:02 v #5647 > >         !\($'"} } } fn _main() { { { //"') : ()
00:04:02 v #5648 > >
00:04:02 v #5649 > >     $'let _!struct = true' : ()
00:04:02 v #5650 > >
00:04:02 v #5651 > >     !\\(x, $'"CloneWrapper($0)"')
00:04:02 v #5652 > >
00:04:02 v #5653 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:02 v #5654 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:04:02 v #5655 > > │ ### concat                                                                   │
00:04:02 v #5656 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:04:02 v #5657 > >
00:04:02 v #5658 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:02 v #5659 > > inl concat forall (t : * -> *) u. (x : t (t u)) : t u =
00:04:02 v #5660 > >     !\($'$"!x.concat()"')
00:04:03 v #5661 > 00:00:43 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 62207 }
00:04:03 v #5662 > 00:00:43 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/polyglot/lib/spiral/rust/rust.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/polyglot/lib/spiral/rust/rust.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:04:04 v #5663 > 00:00:44 v #5 ! [NbConvertApp] Converting notebook c:/home/git/polyglot/lib/spiral/rust/rust.dib.ipynb to html
00:04:04 v #5664 > 00:00:44 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:04:04 v #5665 > 00:00:44 v #7 !   validate(nb)
00:04:05 v #5666 > 00:00:45 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:04:05 v #5667 > 00:00:45 v #9 !   return _pygments_highlight(
00:04:05 v #5668 > 00:00:46 v #10 ! [NbConvertApp] Writing 444399 bytes to c:\home\git\polyglot\lib\spiral\rust\rust.dib.html
00:04:06 v #5669 > 00:00:46 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 860 }
00:04:06 v #5670 > 00:00:46 d #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 860 }
00:04:06 v #5671 > 00:00:46 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/rust/rust.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/rust/rust.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:04:06 v #5672 > 00:00:46 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:04:06 v #5673 > 00:00:46 d #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:04:06 v #5674 > 00:00:46 d #16 spiral_builder.run / dib / { exit_code = 0; result_length = 63126 }
00:04:06 d #5675 runtime.execute_with_options_async / { exit_code = 0; output_length = 68128 }
00:04:06 d #5 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder.exe dib --path rust/rust.dib --retries 3
00:04:06 d #5676 runtime.execute_with_options_async / { file_name = ../../workspace/target/release/spiral_builder.exe; arguments = US5_0 "dib --path rust/testing.dib --retries 3"; options = { command = ../../workspace/target/release/spiral_builder.exe dib --path rust/testing.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:04:06 v #5677 > 00:00:00 d #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "rust/testing.dib", "--retries", "3"])) }
00:04:06 v #5678 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/polyglot/lib/spiral/rust/testing.dib", "--output-path", "c:/home/git/polyglot/lib/spiral/rust/testing.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/polyglot/lib/spiral/rust/testing.dib" --output-path "c:/home/git/polyglot/lib/spiral/rust/testing.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:04:08 v #5679 > >
00:04:08 v #5680 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:08 v #5681 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:04:08 v #5682 > > │ # rust/testing                                                               │
00:04:08 v #5683 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:04:11 v #5684 > >
00:04:11 v #5685 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:11 v #5686 > > open rust.rust_operators
00:04:12 v #5687 > >
00:04:12 v #5688 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:12 v #5689 > > //// test
00:04:12 v #5690 > >
00:04:12 v #5691 > > open testing
00:04:12 v #5692 > >
00:04:12 v #5693 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:12 v #5694 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:04:12 v #5695 > > │ ### run_tests'                                                               │
00:04:12 v #5696 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:04:12 v #5697 > >
00:04:12 v #5698 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:12 v #5699 > > inl run_tests' tests =
00:04:12 v #5700 > >     (!\($'"true; () //"') : bool) |> ignore
00:04:12 v #5701 > >
00:04:12 v #5702 > >     inl fields = reflection.get_record_fields tests
00:04:12 v #5703 > >
00:04:12 v #5704 > >     fields
00:04:12 v #5705 > >     |> listm.iter fun name, (fn : string -> ()) =>
00:04:12 v #5706 > >         !\($'"} /* /*"')
00:04:12 v #5707 > >         (!\($'$"*/ #[[test]] fn " + !name + "() { //"') : bool) |> ignore
00:04:12 v #5708 > >         fn name
00:04:12 v #5709 > >
00:04:12 v #5710 > >     fields
00:04:12 v #5711 > >     |> listm.iter fun _ =>
00:04:12 v #5712 > >         !\($'"{ //"') : ()
00:04:13 v #5713 > >
00:04:13 v #5714 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:13 v #5715 > > //// test
00:04:13 v #5716 > >
00:04:13 v #5717 > > inl run test =
00:04:13 v #5718 > >     if env.get_environment_variable "TEST" = "1"
00:04:13 v #5719 > >     then ()
00:04:13 v #5720 > >     else
00:04:13 v #5721 > >         runtime.execution_options fun x => { x with
00:04:13 v #5722 > >             command = "cargo test -- --show-output"
00:04:13 v #5723 > >             working_directory = file_system.get_source_directory () |> Some |>
00:04:13 v #5724 > > optionm'.box
00:04:13 v #5725 > >             environment_variables = ;[[ "TEST", "1" ]]
00:04:13 v #5726 > >         }
00:04:13 v #5727 > >         |> runtime.execute_with_options
00:04:13 v #5728 > >         |> fun exit_code, result =>
00:04:13 v #5729 > >             exit_code |> _assert_eq 0i32
00:04:13 v #5730 > >             result |> _assert sm'.contains "test result: ok. 1 passed; 0 failed;
00:04:13 v #5731 > > 0 ignored;"
00:04:13 v #5732 > >
00:04:13 v #5733 > >     $'let tests () = !test ()' : ()
00:04:13 v #5734 > >
00:04:13 v #5735 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:13 v #5736 > > //// test
00:04:13 v #5737 > > ///! rust -d encoding_rs encoding_rs_io
00:04:13 v #5738 > >
00:04:13 v #5739 > > fun () =>
00:04:13 v #5740 > >     run_tests' {
00:04:13 v #5741 > >         a = _assert_eq "a"
00:04:13 v #5742 > >     }
00:04:13 v #5743 > > |> run
00:04:36 v #5744 > >
00:04:36 v #5745 > > ╭─[ 22.77s - return value ]────────────────────────────────────────────────────╮
00:04:36 v #5746 > > │ 00:00:00 d #1 runtime.execute_with_options / { file_name = cargo;      │
00:04:36 v #5747 > > │ arguments = ["test", "--", "--show-output"]; options = { command = cargo     │
00:04:36 v #5748 > > │ test -- --show-output; cancellation_token = None; environment_variables =    │
00:04:36 v #5749 > > │ Array(MutCell([("TEST", "1")])); on_line = None; stdin = None; trace = true; │
00:04:36 v #5750 > > │ working_directory = Some(                                                    │
00:04:36 v #5751 > > │                                                                              │
00:04:36 v #5752 > > │ "c:\home\git\polyglot\target\spiral_builder\spiral_builder\packages\Rust\8f5 │
00:04:36 v #5753 > > │ aa4cf3253d46e9e08fb1f9b922edb9c4885a13b59baaf1fef7ebdba438fa6",              │
00:04:36 v #5754 > > │ ) } }                                                                        │
00:04:36 v #5755 > > │ 00:00:00 v #2 !    Compiling                                           │
00:04:36 v #5756 > > │ spiral_builder_8f5aa4cf3253d46e9e08fb1f9b922edb9c4885a13b59baaf1fef7ebdba438 │
00:04:36 v #5757 > > │ fa6 v0.0.1                                                                   │
00:04:36 v #5758 > > │ (C:\home\git\polyglot\target\spiral_builder\spiral_builder\packages\Rust\8f5 │
00:04:36 v #5759 > > │ aa4cf3253d46e9e08fb1f9b922edb9c4885a13b59baaf1fef7ebdba438fa6)               │
00:04:36 v #5760 > > │ 00:00:01 v #3 !     Finished `test` profile [unoptimized + debuginfo]  │
00:04:36 v #5761 > > │ target(s) in 1.66s                                                           │
00:04:36 v #5762 > > │ 00:00:01 v #4 !      Running unittests spiral_builder.rs               │
00:04:36 v #5763 > > │ (c:\home\git\polyglot\target\spiral_builder\spiral_builder\target\debug\deps │
00:04:36 v #5764 > > │ \spiral_builder_8f5aa4cf3253d46e9e08fb1f9b922edb9c4885a13b59baaf1fef7ebdba43 │
00:04:36 v #5765 > > │ 8fa6-3a151691dd5dc69d.exe)                                                   │
00:04:36 v #5766 > > │ 00:00:01 v #5 >                                                        │
00:04:36 v #5767 > > │ 00:00:01 v #6 > running 1 test                                         │
00:04:36 v #5768 > > │ 00:00:01 v #7 > test module_7f0841e8::Spiral_builder::a ... ok         │
00:04:36 v #5769 > > │ 00:00:01 v #8 >                                                        │
00:04:36 v #5770 > > │ 00:00:01 v #9 > successes:                                             │
00:04:36 v #5771 > > │ 00:00:01 v #10 >                                                       │
00:04:36 v #5772 > > │ 00:00:01 v #11 > ---- module_7f0841e8::Spiral_builder::a stdout ----   │
00:04:36 v #5773 > > │ 00:00:01 v #12 > __assert_eq / actual: "a" / expected: "a"             │
00:04:36 v #5774 > > │ 00:00:01 v #13 >                                                       │
00:04:36 v #5775 > > │ 00:00:01 v #14 >                                                       │
00:04:36 v #5776 > > │ 00:00:01 v #15 > successes:                                            │
00:04:36 v #5777 > > │ 00:00:01 v #16 >     module_7f0841e8::Spiral_builder::a                │
00:04:36 v #5778 > > │ 00:00:01 v #17 >                                                       │
00:04:36 v #5779 > > │ 00:00:01 v #18 > test result: ok. 1 passed; 0 failed; 0 ignored; 0     │
00:04:36 v #5780 > > │ measured; 0 filtered out; finished in 0.00s                                  │
00:04:36 v #5781 > > │ 00:00:01 v #19 >                                                       │
00:04:36 v #5782 > > │ 00:00:01 v #20 runtime.execute_with_options / result / { exit_code =   │
00:04:36 v #5783 > > │ 0; std_trace_length = 879 }                                                  │
00:04:36 v #5784 > > │ __assert_eq / actual: 0 / expected: 0                                        │
00:04:36 v #5785 > > │ __assert / actual: "test result: ok. 1 passed; 0 failed; 0 ignored;" /       │
00:04:36 v #5786 > > │ expected: "   Compiling                                                  │
00:04:36 v #5787 > > │ spiral_builder_8f5aa4cf3253d46e9e08fb1f9b922edb9c4885a13b59baaf1fef7ebdba438 │
00:04:36 v #5788 > > │ fa6 v0.0.1                                                                   │
00:04:36 v #5789 > > │ (C:\home\git\polyglot\target\spiral_builder\spiral_builder\packages\Rust\8f5 │
00:04:36 v #5790 > > │ aa4cf3253d46e9e08fb1f9b922edb9c4885a13b59baaf1fef7ebdba438fa6)             │
00:04:36 v #5791 > > │     Finished `test` profile [unoptimized + debuginfo] target(s) in 1.66s[ │
00:04:36 v #5792 > > │ 0m                                                                           │
00:04:36 v #5793 > > │      Running unittests spiral_builder.rs                                 │
00:04:36 v #5794 > > │ (c:\home\git\polyglot\target\spiral_builder\spiral_builder\target\debug\deps │
00:04:36 v #5795 > > │ \spiral_builder_8f5aa4cf3253d46e9e08fb1f9b922edb9c4885a13b59baaf1fef7ebdba43 │
00:04:36 v #5796 > > │ 8fa6-3a151691dd5dc69d.exe)                                                 │
00:04:36 v #5797 > > │                                                                              │
00:04:36 v #5798 > > │ running 1 test                                                               │
00:04:36 v #5799 > > │ test module_7f0841e8::Spiral_builder::a ... ok                               │
00:04:36 v #5800 > > │                                                                              │
00:04:36 v #5801 > > │ successes:                                                                   │
00:04:36 v #5802 > > │                                                                              │
00:04:36 v #5803 > > │ ---- module_7f0841e8::Spiral_builder::a stdout ----                          │
00:04:36 v #5804 > > │ __assert_eq / actual: "a" / expected: "a"                                    │
00:04:36 v #5805 > > │                                                                              │
00:04:36 v #5806 > > │                                                                              │
00:04:36 v #5807 > > │ successes:                                                                   │
00:04:36 v #5808 > > │     module_7f0841e8::Spiral_builder::a                                       │
00:04:36 v #5809 > > │                                                                              │
00:04:36 v #5810 > > │ test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out;  │
00:04:36 v #5811 > > │ finished in 0.00s                                                            │
00:04:36 v #5812 > > │ "                                                                            │
00:04:36 v #5813 > > │                                                                              │
00:04:36 v #5814 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:04:36 v #5815 > >
00:04:36 v #5816 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:36 v #5817 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:04:36 v #5818 > > │ ### run_tests                                                                │
00:04:36 v #5819 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:04:36 v #5820 > >
00:04:36 v #5821 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:36 v #5822 > > inl run_tests tests : () =
00:04:36 v #5823 > >     real
00:04:36 v #5824 > >         inl tests =
00:04:36 v #5825 > >             real_core.record_map
00:04:36 v #5826 > >                 fun { key value } =>
00:04:36 v #5827 > >                     (fun _ => value ()) : string -> ()
00:04:36 v #5828 > >                 tests
00:04:36 v #5829 > >         run_tests' `(`tests) tests
00:04:36 v #5830 > >
00:04:36 v #5831 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:36 v #5832 > > //// test
00:04:36 v #5833 > > ///! rust -d encoding_rs encoding_rs_io
00:04:36 v #5834 > >
00:04:36 v #5835 > > fun () =>
00:04:36 v #5836 > >     run_tests {
00:04:36 v #5837 > >         a = fun () => "a" |> _assert_eq "a"
00:04:36 v #5838 > >     }
00:04:36 v #5839 > > |> run
00:04:43 v #5840 > >
00:04:43 v #5841 > > ╭─[ 7.08s - return value ]─────────────────────────────────────────────────────╮
00:04:43 v #5842 > > │ 00:00:00 d #1 runtime.execute_with_options / { file_name = cargo;      │
00:04:43 v #5843 > > │ arguments = ["test", "--", "--show-output"]; options = { command = cargo     │
00:04:43 v #5844 > > │ test -- --show-output; cancellation_token = None; environment_variables =    │
00:04:43 v #5845 > > │ Array(MutCell([("TEST", "1")])); on_line = None; stdin = None; trace = true; │
00:04:43 v #5846 > > │ working_directory = Some(                                                    │
00:04:43 v #5847 > > │                                                                              │
00:04:43 v #5848 > > │ "c:\home\git\polyglot\target\spiral_builder\spiral_builder\packages\Rust\8f5 │
00:04:43 v #5849 > > │ aa4cf3253d46e9e08fb1f9b922edb9c4885a13b59baaf1fef7ebdba438fa6",              │
00:04:43 v #5850 > > │ ) } }                                                                        │
00:04:43 v #5851 > > │ 00:00:00 v #2 !    Compiling                                           │
00:04:43 v #5852 > > │ spiral_builder_8f5aa4cf3253d46e9e08fb1f9b922edb9c4885a13b59baaf1fef7ebdba438 │
00:04:43 v #5853 > > │ fa6 v0.0.1                                                                   │
00:04:43 v #5854 > > │ (C:\home\git\polyglot\target\spiral_builder\spiral_builder\packages\Rust\8f5 │
00:04:43 v #5855 > > │ aa4cf3253d46e9e08fb1f9b922edb9c4885a13b59baaf1fef7ebdba438fa6)               │
00:04:43 v #5856 > > │ 00:00:01 v #3 !     Finished `test` profile [unoptimized + debuginfo]  │
00:04:43 v #5857 > > │ target(s) in 1.01s                                                           │
00:04:43 v #5858 > > │ 00:00:01 v #4 !      Running unittests spiral_builder.rs               │
00:04:43 v #5859 > > │ (c:\home\git\polyglot\target\spiral_builder\spiral_builder\target\debug\deps │
00:04:43 v #5860 > > │ \spiral_builder_8f5aa4cf3253d46e9e08fb1f9b922edb9c4885a13b59baaf1fef7ebdba43 │
00:04:43 v #5861 > > │ 8fa6-3a151691dd5dc69d.exe)                                                   │
00:04:43 v #5862 > > │ 00:00:01 v #5 >                                                        │
00:04:43 v #5863 > > │ 00:00:01 v #6 > running 1 test                                         │
00:04:43 v #5864 > > │ 00:00:01 v #7 > test module_7f0841e8::Spiral_builder::a ... ok         │
00:04:43 v #5865 > > │ 00:00:01 v #8 >                                                        │
00:04:43 v #5866 > > │ 00:00:01 v #9 > successes:                                             │
00:04:43 v #5867 > > │ 00:00:01 v #10 >                                                       │
00:04:43 v #5868 > > │ 00:00:01 v #11 > ---- module_7f0841e8::Spiral_builder::a stdout ----   │
00:04:43 v #5869 > > │ 00:00:01 v #12 > __assert_eq / actual: "a" / expected: "a"             │
00:04:43 v #5870 > > │ 00:00:01 v #13 >                                                       │
00:04:43 v #5871 > > │ 00:00:01 v #14 >                                                       │
00:04:43 v #5872 > > │ 00:00:01 v #15 > successes:                                            │
00:04:43 v #5873 > > │ 00:00:01 v #16 >     module_7f0841e8::Spiral_builder::a                │
00:04:43 v #5874 > > │ 00:00:01 v #17 >                                                       │
00:04:43 v #5875 > > │ 00:00:01 v #18 > test result: ok. 1 passed; 0 failed; 0 ignored; 0     │
00:04:43 v #5876 > > │ measured; 0 filtered out; finished in 0.00s                                  │
00:04:43 v #5877 > > │ 00:00:01 v #19 >                                                       │
00:04:43 v #5878 > > │ 00:00:01 v #20 runtime.execute_with_options / result / { exit_code =   │
00:04:43 v #5879 > > │ 0; std_trace_length = 879 }                                                  │
00:04:43 v #5880 > > │ __assert_eq / actual: 0 / expected: 0                                        │
00:04:43 v #5881 > > │ __assert / actual: "test result: ok. 1 passed; 0 failed; 0 ignored;" /       │
00:04:43 v #5882 > > │ expected: "   Compiling                                                  │
00:04:43 v #5883 > > │ spiral_builder_8f5aa4cf3253d46e9e08fb1f9b922edb9c4885a13b59baaf1fef7ebdba438 │
00:04:43 v #5884 > > │ fa6 v0.0.1                                                                   │
00:04:43 v #5885 > > │ (C:\home\git\polyglot\target\spiral_builder\spiral_builder\packages\Rust\8f5 │
00:04:43 v #5886 > > │ aa4cf3253d46e9e08fb1f9b922edb9c4885a13b59baaf1fef7ebdba438fa6)             │
00:04:43 v #5887 > > │     Finished `test` profile [unoptimized + debuginfo] target(s) in 1.01s[ │
00:04:43 v #5888 > > │ 0m                                                                           │
00:04:43 v #5889 > > │      Running unittests spiral_builder.rs                                 │
00:04:43 v #5890 > > │ (c:\home\git\polyglot\target\spiral_builder\spiral_builder\target\debug\deps │
00:04:43 v #5891 > > │ \spiral_builder_8f5aa4cf3253d46e9e08fb1f9b922edb9c4885a13b59baaf1fef7ebdba43 │
00:04:43 v #5892 > > │ 8fa6-3a151691dd5dc69d.exe)                                                 │
00:04:43 v #5893 > > │                                                                              │
00:04:43 v #5894 > > │ running 1 test                                                               │
00:04:43 v #5895 > > │ test module_7f0841e8::Spiral_builder::a ... ok                               │
00:04:43 v #5896 > > │                                                                              │
00:04:43 v #5897 > > │ successes:                                                                   │
00:04:43 v #5898 > > │                                                                              │
00:04:43 v #5899 > > │ ---- module_7f0841e8::Spiral_builder::a stdout ----                          │
00:04:43 v #5900 > > │ __assert_eq / actual: "a" / expected: "a"                                    │
00:04:43 v #5901 > > │                                                                              │
00:04:43 v #5902 > > │                                                                              │
00:04:43 v #5903 > > │ successes:                                                                   │
00:04:43 v #5904 > > │     module_7f0841e8::Spiral_builder::a                                       │
00:04:43 v #5905 > > │                                                                              │
00:04:43 v #5906 > > │ test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out;  │
00:04:43 v #5907 > > │ finished in 0.00s                                                            │
00:04:43 v #5908 > > │ "                                                                            │
00:04:43 v #5909 > > │                                                                              │
00:04:43 v #5910 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:04:43 v #5911 > >
00:04:43 v #5912 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:43 v #5913 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:04:43 v #5914 > > │ ### run_tests_log                                                            │
00:04:43 v #5915 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:04:43 v #5916 > >
00:04:43 v #5917 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:43 v #5918 > > inl run_tests_log tests : () =
00:04:43 v #5919 > >     real
00:04:43 v #5920 > >         inl tests =
00:04:43 v #5921 > >             real_core.record_map
00:04:43 v #5922 > >                 fun { key value } =>
00:04:43 v #5923 > >                     (fun _ => value false) : () -> ()
00:04:43 v #5924 > >                 tests
00:04:43 v #5925 > >         run_tests `(`tests) tests
00:04:44 v #5926 > >
00:04:44 v #5927 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:44 v #5928 > > //// test
00:04:44 v #5929 > > ///! rust -d encoding_rs encoding_rs_io
00:04:44 v #5930 > >
00:04:44 v #5931 > > fun () =>
00:04:44 v #5932 > >     run_tests_log {
00:04:44 v #5933 > >         a = _assert_eq false
00:04:44 v #5934 > >     }
00:04:44 v #5935 > > |> run
00:05:07 v #5936 > >
00:05:07 v #5937 > > ╭─[ 22.91s - return value ]────────────────────────────────────────────────────╮
00:05:07 v #5938 > > │ 00:00:00 d #1 runtime.execute_with_options / { file_name = cargo;      │
00:05:07 v #5939 > > │ arguments = ["test", "--", "--show-output"]; options = { command = cargo     │
00:05:07 v #5940 > > │ test -- --show-output; cancellation_token = None; environment_variables =    │
00:05:07 v #5941 > > │ Array(MutCell([("TEST", "1")])); on_line = None; stdin = None; trace = true; │
00:05:07 v #5942 > > │ working_directory = Some(                                                    │
00:05:07 v #5943 > > │                                                                              │
00:05:07 v #5944 > > │ "c:\home\git\polyglot\target\spiral_builder\spiral_builder\packages\Rust\6be │
00:05:07 v #5945 > > │ 265cd8a75fa949641d440a47d9fb97380367bff0540914e99622cbf1a385d",              │
00:05:07 v #5946 > > │ ) } }                                                                        │
00:05:07 v #5947 > > │ 00:00:00 v #2 !    Compiling                                           │
00:05:07 v #5948 > > │ spiral_builder_6be265cd8a75fa949641d440a47d9fb97380367bff0540914e99622cbf1a3 │
00:05:07 v #5949 > > │ 85d v0.0.1                                                                   │
00:05:07 v #5950 > > │ (C:\home\git\polyglot\target\spiral_builder\spiral_builder\packages\Rust\6be │
00:05:07 v #5951 > > │ 265cd8a75fa949641d440a47d9fb97380367bff0540914e99622cbf1a385d)               │
00:05:07 v #5952 > > │ 00:00:01 v #3 !     Finished `test` profile [unoptimized + debuginfo]  │
00:05:07 v #5953 > > │ target(s) in 1.60s                                                           │
00:05:07 v #5954 > > │ 00:00:01 v #4 !      Running unittests spiral_builder.rs               │
00:05:07 v #5955 > > │ (c:\home\git\polyglot\target\spiral_builder\spiral_builder\target\debug\deps │
00:05:07 v #5956 > > │ \spiral_builder_6be265cd8a75fa949641d440a47d9fb97380367bff0540914e99622cbf1a │
00:05:07 v #5957 > > │ 385d-0907e28ed1415b65.exe)                                                   │
00:05:07 v #5958 > > │ 00:00:01 v #5 >                                                        │
00:05:07 v #5959 > > │ 00:00:01 v #6 > running 1 test                                         │
00:05:07 v #5960 > > │ 00:00:01 v #7 > test module_628427fa::Spiral_builder::a ... ok         │
00:05:07 v #5961 > > │ 00:00:01 v #8 >                                                        │
00:05:07 v #5962 > > │ 00:00:01 v #9 > successes:                                             │
00:05:07 v #5963 > > │ 00:00:01 v #10 >                                                       │
00:05:07 v #5964 > > │ 00:00:01 v #11 > ---- module_628427fa::Spiral_builder::a stdout ----   │
00:05:07 v #5965 > > │ 00:00:01 v #12 > __assert_eq / actual: false / expected: false         │
00:05:07 v #5966 > > │ 00:00:01 v #13 >                                                       │
00:05:07 v #5967 > > │ 00:00:01 v #14 >                                                       │
00:05:07 v #5968 > > │ 00:00:01 v #15 > successes:                                            │
00:05:07 v #5969 > > │ 00:00:01 v #16 >     module_628427fa::Spiral_builder::a                │
00:05:07 v #5970 > > │ 00:00:01 v #17 >                                                       │
00:05:07 v #5971 > > │ 00:00:01 v #18 > test result: ok. 1 passed; 0 failed; 0 ignored; 0     │
00:05:07 v #5972 > > │ measured; 0 filtered out; finished in 0.00s                                  │
00:05:07 v #5973 > > │ 00:00:01 v #19 >                                                       │
00:05:07 v #5974 > > │ 00:00:01 v #20 runtime.execute_with_options / result / { exit_code =   │
00:05:07 v #5975 > > │ 0; std_trace_length = 883 }                                                  │
00:05:07 v #5976 > > │ __assert_eq / actual: 0 / expected: 0                                        │
00:05:07 v #5977 > > │ __assert / actual: "test result: ok. 1 passed; 0 failed; 0 ignored;" /       │
00:05:07 v #5978 > > │ expected: "   Compiling                                                  │
00:05:07 v #5979 > > │ spiral_builder_6be265cd8a75fa949641d440a47d9fb97380367bff0540914e99622cbf1a3 │
00:05:07 v #5980 > > │ 85d v0.0.1                                                                   │
00:05:07 v #5981 > > │ (C:\home\git\polyglot\target\spiral_builder\spiral_builder\packages\Rust\6be │
00:05:07 v #5982 > > │ 265cd8a75fa949641d440a47d9fb97380367bff0540914e99622cbf1a385d)             │
00:05:07 v #5983 > > │     Finished `test` profile [unoptimized + debuginfo] target(s) in 1.60s[ │
00:05:07 v #5984 > > │ 0m                                                                           │
00:05:07 v #5985 > > │      Running unittests spiral_builder.rs                                 │
00:05:07 v #5986 > > │ (c:\home\git\polyglot\target\spiral_builder\spiral_builder\target\debug\deps │
00:05:07 v #5987 > > │ \spiral_builder_6be265cd8a75fa949641d440a47d9fb97380367bff0540914e99622cbf1a │
00:05:07 v #5988 > > │ 385d-0907e28ed1415b65.exe)                                                 │
00:05:07 v #5989 > > │                                                                              │
00:05:07 v #5990 > > │ running 1 test                                                               │
00:05:07 v #5991 > > │ test module_628427fa::Spiral_builder::a ... ok                               │
00:05:07 v #5992 > > │                                                                              │
00:05:07 v #5993 > > │ successes:                                                                   │
00:05:07 v #5994 > > │                                                                              │
00:05:07 v #5995 > > │ ---- module_628427fa::Spiral_builder::a stdout ----                          │
00:05:07 v #5996 > > │ __assert_eq / actual: false / expected: false                                │
00:05:07 v #5997 > > │                                                                              │
00:05:07 v #5998 > > │                                                                              │
00:05:07 v #5999 > > │ successes:                                                                   │
00:05:07 v #6000 > > │     module_628427fa::Spiral_builder::a                                       │
00:05:07 v #6001 > > │                                                                              │
00:05:07 v #6002 > > │ test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out;  │
00:05:07 v #6003 > > │ finished in 0.00s                                                            │
00:05:07 v #6004 > > │ "                                                                            │
00:05:07 v #6005 > > │                                                                              │
00:05:07 v #6006 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:05:07 v #6007 > 00:01:00 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 21197 }
00:05:07 v #6008 > 00:01:00 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/polyglot/lib/spiral/rust/testing.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/polyglot/lib/spiral/rust/testing.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:05:08 v #6009 > 00:01:02 v #5 ! [NbConvertApp] Converting notebook c:/home/git/polyglot/lib/spiral/rust/testing.dib.ipynb to html
00:05:08 v #6010 > 00:01:02 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:05:08 v #6011 > 00:01:02 v #7 !   validate(nb)
00:05:09 v #6012 > 00:01:02 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:05:09 v #6013 > 00:01:02 v #9 !   return _pygments_highlight(
00:05:09 v #6014 > 00:01:03 v #10 ! [NbConvertApp] Writing 298043 bytes to c:\home\git\polyglot\lib\spiral\rust\testing.dib.html
00:05:09 v #6015 > 00:01:03 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 866 }
00:05:09 v #6016 > 00:01:03 d #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 866 }
00:05:09 v #6017 > 00:01:03 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/rust/testing.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/rust/testing.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:05:09 v #6018 > 00:01:03 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:05:09 v #6019 > 00:01:03 d #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:05:09 v #6020 > 00:01:03 d #16 spiral_builder.run / dib / { exit_code = 0; result_length = 22122 }
00:05:09 d #6021 runtime.execute_with_options_async / { exit_code = 0; output_length = 25399 }
00:05:09 d #6 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder.exe dib --path rust/testing.dib --retries 3
00:05:09 d #6022 runtime.execute_with_options_async / { file_name = ../../workspace/target/release/spiral_builder.exe; arguments = US5_0 "dib --path rust/near.dib --retries 3"; options = { command = ../../workspace/target/release/spiral_builder.exe dib --path rust/near.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:05:10 v #6023 > 00:00:00 d #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "rust/near.dib", "--retries", "3"])) }
00:05:10 v #6024 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/polyglot/lib/spiral/rust/near.dib", "--output-path", "c:/home/git/polyglot/lib/spiral/rust/near.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/polyglot/lib/spiral/rust/near.dib" --output-path "c:/home/git/polyglot/lib/spiral/rust/near.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:05:11 v #6025 > >
00:05:11 v #6026 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:11 v #6027 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:05:11 v #6028 > > │ # near                                                                       │
00:05:11 v #6029 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:05:14 v #6030 > >
00:05:14 v #6031 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:14 v #6032 > > open rust
00:05:14 v #6033 > > open rust.rust_operators
00:05:16 v #6034 > >
00:05:16 v #6035 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:16 v #6036 > > //// test
00:05:16 v #6037 > >
00:05:16 v #6038 > > open testing
00:05:16 v #6039 > >
00:05:16 v #6040 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:16 v #6041 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:05:16 v #6042 > > │ ## near                                                                      │
00:05:16 v #6043 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:05:16 v #6044 > >
00:05:16 v #6045 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:16 v #6046 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:05:16 v #6047 > > │ ### vector                                                                   │
00:05:16 v #6048 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:05:16 v #6049 > >
00:05:16 v #6050 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:16 v #6051 > > nominal vector t =
00:05:16 v #6052 > >     `(
00:05:16 v #6053 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:05:16 v #6054 > > Fable.Core.Emit(\"near_sdk::store::vec::Vector<$0>\")>]]\n#endif\ntype
00:05:16 v #6055 > > near_sdk_store_vec_Vector<'T> = class end"
00:05:16 v #6056 > >         $'' : $'near_sdk_store_vec_Vector<`t>'
00:05:16 v #6057 > >     )
00:05:16 v #6058 > >
00:05:16 v #6059 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:16 v #6060 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:05:16 v #6061 > > │ ### lookup_map                                                               │
00:05:16 v #6062 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:05:16 v #6063 > >
00:05:16 v #6064 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:16 v #6065 > > nominal lookup_map k v =
00:05:16 v #6066 > >     `(
00:05:16 v #6067 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:05:16 v #6068 > > Fable.Core.Emit(\"near_sdk::store::LookupMap<$0, $1>\")>]]\n#endif\ntype
00:05:16 v #6069 > > near_sdk_store_LookupMap<'K, 'V> = class end"
00:05:16 v #6070 > >         $'' : $'near_sdk_store_LookupMap<`k, `v>'
00:05:16 v #6071 > >     )
00:05:17 v #6072 > >
00:05:17 v #6073 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:17 v #6074 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:05:17 v #6075 > > │ ### iterable_set                                                             │
00:05:17 v #6076 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:05:17 v #6077 > >
00:05:17 v #6078 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:17 v #6079 > > nominal iterable_set t =
00:05:17 v #6080 > >     `(
00:05:17 v #6081 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:05:17 v #6082 > > Fable.Core.Emit(\"near_sdk::store::IterableSet<$0>\")>]]\n#endif\ntype
00:05:17 v #6083 > > near_sdk_store_IterableSet<'T> = class end"
00:05:17 v #6084 > >         $'' : $'near_sdk_store_IterableSet<`t>'
00:05:17 v #6085 > >     )
00:05:17 v #6086 > >
00:05:17 v #6087 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:17 v #6088 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:05:17 v #6089 > > │ ### account_id                                                               │
00:05:17 v #6090 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:05:17 v #6091 > >
00:05:17 v #6092 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:17 v #6093 > > nominal account_id =
00:05:17 v #6094 > >     `(
00:05:17 v #6095 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:05:17 v #6096 > > Fable.Core.Emit(\"near_sdk::AccountId\")>]]\n#endif\ntype near_sdk_AccountId =
00:05:17 v #6097 > > class end"
00:05:17 v #6098 > >         $'' : $'near_sdk_AccountId'
00:05:17 v #6099 > >     )
00:05:18 v #6100 > >
00:05:18 v #6101 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:18 v #6102 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:05:18 v #6103 > > │ ### new_lookup_map                                                           │
00:05:18 v #6104 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:05:18 v #6105 > >
00:05:18 v #6106 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:18 v #6107 > > inl new_lookup_map prefix =
00:05:18 v #6108 > >     !\($'"near_sdk::store::LookupMap::new(!prefix)"')
00:05:18 v #6109 > >
00:05:18 v #6110 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:18 v #6111 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:05:18 v #6112 > > │ ### new_iterable_set                                                         │
00:05:18 v #6113 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:05:18 v #6114 > >
00:05:18 v #6115 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:18 v #6116 > > inl new_iterable_set prefix =
00:05:18 v #6117 > >     !\($'"near_sdk::store::IterableSet::new(!prefix)"')
00:05:18 v #6118 > >
00:05:18 v #6119 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:18 v #6120 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:05:18 v #6121 > > │ ### new_vector                                                               │
00:05:18 v #6122 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:05:18 v #6123 > >
00:05:18 v #6124 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:18 v #6125 > > inl new_vector prefix =
00:05:18 v #6126 > >     !\\(prefix, $'"near_sdk::store::vec::Vector::new($0)"')
00:05:19 v #6127 > >
00:05:19 v #6128 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:19 v #6129 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:05:19 v #6130 > > │ ### vector_extend                                                            │
00:05:19 v #6131 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:05:19 v #6132 > >
00:05:19 v #6133 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:19 v #6134 > > inl vector_extend forall t. (vec : am'.vec t) (vector : rust.ref (rust.mut'
00:05:19 v #6135 > > (vector t))) : () =
00:05:19 v #6136 > >     (!\\(vec, $'"true; !vector.extend($0); //"') : bool) |> ignore
00:05:19 v #6137 > >
00:05:19 v #6138 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:19 v #6139 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:05:19 v #6140 > > │ ### vector_to_vec                                                            │
00:05:19 v #6141 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:05:19 v #6142 > >
00:05:19 v #6143 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:19 v #6144 > > inl vector_to_vec forall (t : * -> *) u. (vector : t (vector u)) : am'.vec u =
00:05:19 v #6145 > >     !\($'$"!vector.iter().map(|x| *x).collect::<Vec<_>>()"')
00:05:20 v #6146 > >
00:05:20 v #6147 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:20 v #6148 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:05:20 v #6149 > > │ ### keccak512                                                                │
00:05:20 v #6150 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:05:20 v #6151 > >
00:05:20 v #6152 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:20 v #6153 > > inl keccak512 (entropy : am'.vec u8) : am'.vec u8 =
00:05:20 v #6154 > >     !\\(entropy, $'$"near_sdk::env::keccak512(&$0)"')
00:05:20 v #6155 > >
00:05:20 v #6156 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:20 v #6157 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:05:20 v #6158 > > │ ### log                                                                      │
00:05:20 v #6159 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:05:20 v #6160 > >
00:05:20 v #6161 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:20 v #6162 > > inl log text : () =
00:05:20 v #6163 > >     (!\\(text, $'$"true; near_sdk::log\!(\\\"{{}}\\\", $0)"') : bool) |> ignore
00:05:20 v #6164 > >
00:05:20 v #6165 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:20 v #6166 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:05:20 v #6167 > > │ ### panic_str                                                                │
00:05:20 v #6168 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:05:20 v #6169 > >
00:05:20 v #6170 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:20 v #6171 > > inl panic_str (text : string) : () =
00:05:20 v #6172 > >     (!\\(text, $'$"true; near_sdk::env::panic_str(&*$0); //"') : bool) |> ignore
00:05:21 v #6173 > >
00:05:21 v #6174 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:21 v #6175 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:05:21 v #6176 > > │ ### lookup_get                                                               │
00:05:21 v #6177 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:05:21 v #6178 > >
00:05:21 v #6179 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:21 v #6180 > > inl lookup_get forall k v.
00:05:21 v #6181 > >     (key : k)
00:05:21 v #6182 > >     (map : rust.ref (rust.mut' (lookup_map k v)))
00:05:21 v #6183 > >     : optionm'.option' (rust.ref v)
00:05:21 v #6184 > >     =
00:05:21 v #6185 > >     !\\(key, $'$"!map.get(&$0)"')
00:05:21 v #6186 > >
00:05:21 v #6187 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:21 v #6188 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:05:21 v #6189 > > │ ### lookup_insert                                                            │
00:05:21 v #6190 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:05:21 v #6191 > >
00:05:21 v #6192 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:21 v #6193 > > inl lookup_insert forall k v.
00:05:21 v #6194 > >     (key : k)
00:05:21 v #6195 > >     (value : v)
00:05:21 v #6196 > >     (map : rust.ref (rust.mut' (lookup_map k v)))
00:05:21 v #6197 > >     : ()
00:05:21 v #6198 > >     =
00:05:21 v #6199 > >     (!\\((key, value), $'$"true; !map.insert(&$0, $1); //"') : bool) |> ignore
00:05:22 v #6200 > >
00:05:22 v #6201 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:22 v #6202 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:05:22 v #6203 > > │ ### iterable_set_insert                                                      │
00:05:22 v #6204 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:05:22 v #6205 > >
00:05:22 v #6206 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:22 v #6207 > > inl iterable_set_insert forall t.
00:05:22 v #6208 > >     (x : t)
00:05:22 v #6209 > >     (set : rust.ref (rust.mut' (iterable_set t)))
00:05:22 v #6210 > >     : bool
00:05:22 v #6211 > >     =
00:05:22 v #6212 > >     !\\(x, $'$"!set.insert($0)"')
00:05:22 v #6213 > >
00:05:22 v #6214 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:22 v #6215 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:05:22 v #6216 > > │ ### iterable_set_remove                                                      │
00:05:22 v #6217 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:05:22 v #6218 > >
00:05:22 v #6219 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:22 v #6220 > > inl iterable_set_remove forall t.
00:05:22 v #6221 > >     (x : rust.ref t)
00:05:22 v #6222 > >     (set : rust.ref (rust.mut' (iterable_set t)))
00:05:22 v #6223 > >     : bool
00:05:22 v #6224 > >     =
00:05:22 v #6225 > >     !\\(x, $'$"!set.remove($0)"')
00:05:22 v #6226 > >
00:05:22 v #6227 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:22 v #6228 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:05:22 v #6229 > > │ ### iterable_set_contains                                                    │
00:05:22 v #6230 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:05:22 v #6231 > >
00:05:22 v #6232 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:22 v #6233 > > inl iterable_set_contains forall t.
00:05:22 v #6234 > >     (x : rust.ref t)
00:05:22 v #6235 > >     (set : rust.ref (rust.mut' (iterable_set t)))
00:05:22 v #6236 > >     : bool
00:05:22 v #6237 > >     =
00:05:22 v #6238 > >     !\\(x, $'$"!set.contains($0)"')
00:05:23 v #6239 > >
00:05:23 v #6240 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:23 v #6241 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:05:23 v #6242 > > │ ### near_token                                                               │
00:05:23 v #6243 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:05:23 v #6244 > >
00:05:23 v #6245 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:23 v #6246 > > nominal near_token =
00:05:23 v #6247 > >     `(
00:05:23 v #6248 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:05:23 v #6249 > > Fable.Core.Emit(\"near_token::NearToken\")>]]\n#endif\ntype near_token_NearToken
00:05:23 v #6250 > > = class end"
00:05:23 v #6251 > >         $'' : $'near_token_NearToken'
00:05:23 v #6252 > >     )
00:05:23 v #6253 > >
00:05:23 v #6254 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:23 v #6255 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:05:23 v #6256 > > │ ### near_token_sdk                                                           │
00:05:23 v #6257 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:05:23 v #6258 > >
00:05:23 v #6259 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:23 v #6260 > > nominal near_token_sdk =
00:05:23 v #6261 > >     `(
00:05:23 v #6262 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:05:23 v #6263 > > Fable.Core.Emit(\"near_sdk::NearToken\")>]]\n#endif\ntype near_sdk_NearToken =
00:05:23 v #6264 > > class end"
00:05:23 v #6265 > >         $'' : $'near_sdk_NearToken'
00:05:23 v #6266 > >     )
00:05:24 v #6267 > >
00:05:24 v #6268 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:24 v #6269 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:05:24 v #6270 > > │ ### random_seed                                                              │
00:05:24 v #6271 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:05:24 v #6272 > >
00:05:24 v #6273 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:24 v #6274 > > inl random_seed () : am'.vec u8 =
00:05:24 v #6275 > >     !\($'$"near_sdk::env::random_seed()"')
00:05:24 v #6276 > >
00:05:24 v #6277 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:24 v #6278 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:05:24 v #6279 > > │ ### block_timestamp                                                          │
00:05:24 v #6280 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:05:24 v #6281 > >
00:05:24 v #6282 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:24 v #6283 > > inl block_timestamp () : u64 =
00:05:24 v #6284 > >     !\($'$"near_sdk::env::block_timestamp()"')
00:05:24 v #6285 > >
00:05:24 v #6286 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:24 v #6287 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:05:24 v #6288 > > │ ### block_height                                                             │
00:05:24 v #6289 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:05:24 v #6290 > >
00:05:24 v #6291 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:24 v #6292 > > inl block_height () : u64 =
00:05:24 v #6293 > >     !\($'$"near_sdk::env::block_height()"')
00:05:25 v #6294 > >
00:05:25 v #6295 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:25 v #6296 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:05:25 v #6297 > > │ ### epoch_height                                                             │
00:05:25 v #6298 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:05:25 v #6299 > >
00:05:25 v #6300 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:25 v #6301 > > inl epoch_height () : u64 =
00:05:25 v #6302 > >     !\($'$"near_sdk::env::epoch_height()"')
00:05:25 v #6303 > >
00:05:25 v #6304 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:25 v #6305 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:05:25 v #6306 > > │ ### account_balance                                                          │
00:05:25 v #6307 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:05:25 v #6308 > >
00:05:25 v #6309 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:25 v #6310 > > inl account_balance () : near_token =
00:05:25 v #6311 > >     !\($'$"near_sdk::env::account_balance()"')
00:05:26 v #6312 > >
00:05:26 v #6313 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:26 v #6314 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:05:26 v #6315 > > │ ### predecessor_account_id                                                   │
00:05:26 v #6316 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:05:26 v #6317 > >
00:05:26 v #6318 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:26 v #6319 > > inl predecessor_account_id () : account_id =
00:05:26 v #6320 > >     !\($'$"near_sdk::env::predecessor_account_id()"')
00:05:26 v #6321 > >
00:05:26 v #6322 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:26 v #6323 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:05:26 v #6324 > > │ ### signer_account_id                                                        │
00:05:26 v #6325 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:05:26 v #6326 > >
00:05:26 v #6327 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:26 v #6328 > > inl signer_account_id () : account_id =
00:05:26 v #6329 > >     !\($'$"near_sdk::env::signer_account_id()"')
00:05:26 v #6330 > >
00:05:26 v #6331 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:26 v #6332 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:05:26 v #6333 > > │ ### as_yoctonear                                                             │
00:05:26 v #6334 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:05:26 v #6335 > >
00:05:26 v #6336 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:26 v #6337 > > inl as_yoctonear forall t. (gas : t) : rust.u128 =
00:05:26 v #6338 > >     !\\(gas, $'"$0.as_yoctonear()"')
00:05:27 v #6339 > >
00:05:27 v #6340 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:27 v #6341 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:05:27 v #6342 > > │ ### near_price_in_usd                                                        │
00:05:27 v #6343 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:05:27 v #6344 > >
00:05:27 v #6345 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:27 v #6346 > > inl near_price_in_usd () =
00:05:27 v #6347 > >     6.68f64
00:05:27 v #6348 > >
00:05:27 v #6349 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:27 v #6350 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:05:27 v #6351 > > │ ### gas_to_usd                                                               │
00:05:27 v #6352 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:05:27 v #6353 > >
00:05:27 v #6354 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:27 v #6355 > > inl gas_to_usd (gas : u64) =
00:05:27 v #6356 > >     (gas |> f64) / 10_000_000_000_000_000 * near_price_in_usd ()
00:05:28 v #6357 > >
00:05:28 v #6358 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:28 v #6359 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:05:28 v #6360 > > │ ### tokens_to_usd                                                            │
00:05:28 v #6361 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:05:28 v #6362 > >
00:05:28 v #6363 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:28 v #6364 > > inl tokens_to_usd (tokens : rust.u128) =
00:05:28 v #6365 > >     (tokens |> rust.f64) / 1_000_000_000_000_000_000_000_000 * near_price_in_usd
00:05:28 v #6366 > > ()
00:05:28 v #6367 > 00:00:18 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 17158 }
00:05:28 v #6368 > 00:00:18 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/polyglot/lib/spiral/rust/near.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/polyglot/lib/spiral/rust/near.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:05:29 v #6369 > 00:00:19 v #5 ! [NbConvertApp] Converting notebook c:/home/git/polyglot/lib/spiral/rust/near.dib.ipynb to html
00:05:29 v #6370 > 00:00:19 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:05:29 v #6371 > 00:00:19 v #7 !   validate(nb)
00:05:30 v #6372 > 00:00:20 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:05:30 v #6373 > 00:00:20 v #9 !   return _pygments_highlight(
00:05:30 v #6374 > 00:00:20 v #10 ! [NbConvertApp] Writing 322926 bytes to c:\home\git\polyglot\lib\spiral\rust\near.dib.html
00:05:31 v #6375 > 00:00:21 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 860 }
00:05:31 v #6376 > 00:00:21 d #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 860 }
00:05:31 v #6377 > 00:00:21 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/rust/near.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/rust/near.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:05:31 v #6378 > 00:00:21 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:05:31 v #6379 > 00:00:21 d #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:05:31 v #6380 > 00:00:21 d #16 spiral_builder.run / dib / { exit_code = 0; result_length = 18077 }
00:05:31 d #6381 runtime.execute_with_options_async / { exit_code = 0; output_length = 21355 }
00:05:31 d #7 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder.exe dib --path rust/near.dib --retries 3
00:05:31 d #6382 runtime.execute_with_options_async / { file_name = ../../workspace/target/release/spiral_builder.exe; arguments = US5_0 "dib --path rust/near_workspaces.dib --retries 3"; options = { command = ../../workspace/target/release/spiral_builder.exe dib --path rust/near_workspaces.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:05:31 v #6383 > 00:00:00 d #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "rust/near_workspaces.dib", "--retries", "3"])) }
00:05:31 v #6384 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/polyglot/lib/spiral/rust/near_workspaces.dib", "--output-path", "c:/home/git/polyglot/lib/spiral/rust/near_workspaces.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/polyglot/lib/spiral/rust/near_workspaces.dib" --output-path "c:/home/git/polyglot/lib/spiral/rust/near_workspaces.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:05:33 v #6385 > >
00:05:33 v #6386 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:33 v #6387 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:05:33 v #6388 > > │ # near_workspaces                                                            │
00:05:33 v #6389 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:05:36 v #6390 > >
00:05:36 v #6391 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:36 v #6392 > > open rust
00:05:36 v #6393 > > open rust.rust_operators
00:05:37 v #6394 > >
00:05:37 v #6395 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:37 v #6396 > > //// test
00:05:37 v #6397 > >
00:05:37 v #6398 > > open testing
00:05:38 v #6399 > >
00:05:38 v #6400 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:38 v #6401 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:05:38 v #6402 > > │ ## near                                                                      │
00:05:38 v #6403 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:05:38 v #6404 > >
00:05:38 v #6405 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:38 v #6406 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:05:38 v #6407 > > │ ### near_token_workspaces                                                    │
00:05:38 v #6408 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:05:38 v #6409 > >
00:05:38 v #6410 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:38 v #6411 > > nominal near_token_workspaces =
00:05:38 v #6412 > >     `(
00:05:38 v #6413 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:05:38 v #6414 > > Fable.Core.Emit(\"near_workspaces::types::NearToken\")>]]\n#endif\ntype
00:05:38 v #6415 > > near_workspaces_types_NearToken = class end"
00:05:38 v #6416 > >         $'' : $'near_workspaces_types_NearToken'
00:05:38 v #6417 > >     )
00:05:38 v #6418 > >
00:05:38 v #6419 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:38 v #6420 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:05:38 v #6421 > > │ ### gas                                                                      │
00:05:38 v #6422 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:05:38 v #6423 > >
00:05:38 v #6424 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:38 v #6425 > > nominal gas =
00:05:38 v #6426 > >     `(
00:05:38 v #6427 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:05:38 v #6428 > > Fable.Core.Emit(\"near_workspaces::types::Gas\")>]]\n#endif\ntype
00:05:38 v #6429 > > near_workspaces_types_Gas = class end"
00:05:38 v #6430 > >         $'' : $'near_workspaces_types_Gas'
00:05:38 v #6431 > >     )
00:05:39 v #6432 > >
00:05:39 v #6433 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:39 v #6434 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:05:39 v #6435 > > │ ### near_workspaces_error                                                    │
00:05:39 v #6436 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:05:39 v #6437 > >
00:05:39 v #6438 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:39 v #6439 > > nominal near_workspaces_error =
00:05:39 v #6440 > >     `(
00:05:39 v #6441 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:05:39 v #6442 > > Fable.Core.Emit(\"near_workspaces::error::Error\")>]]\n#endif\ntype
00:05:39 v #6443 > > near_workspaces_error_Error = class end"
00:05:39 v #6444 > >         $'' : $'near_workspaces_error_Error'
00:05:39 v #6445 > >     )
00:05:39 v #6446 > >
00:05:39 v #6447 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:39 v #6448 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:05:39 v #6449 > > │ ### sandbox                                                                  │
00:05:39 v #6450 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:05:39 v #6451 > >
00:05:39 v #6452 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:39 v #6453 > > nominal sandbox =
00:05:39 v #6454 > >     `(
00:05:39 v #6455 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:05:39 v #6456 > > Fable.Core.Emit(\"near_workspaces::network::Sandbox\")>]]\n#endif\ntype
00:05:39 v #6457 > > near_workspaces_network_Sandbox = class end"
00:05:39 v #6458 > >         $'' : $'near_workspaces_network_Sandbox'
00:05:39 v #6459 > >     )
00:05:39 v #6460 > >
00:05:39 v #6461 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:39 v #6462 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:05:39 v #6463 > > │ ### worker                                                                   │
00:05:39 v #6464 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:05:39 v #6465 > >
00:05:39 v #6466 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:39 v #6467 > > nominal worker t =
00:05:39 v #6468 > >     `(
00:05:39 v #6469 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:05:39 v #6470 > > Fable.Core.Emit(\"near_workspaces::Worker<$0>\")>]]\n#endif\ntype
00:05:39 v #6471 > > near_workspaces_Worker<'T> = class end"
00:05:39 v #6472 > >         $'' : $'near_workspaces_Worker<`t>'
00:05:39 v #6473 > >     )
00:05:40 v #6474 > >
00:05:40 v #6475 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:40 v #6476 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:05:40 v #6477 > > │ ### contract                                                                 │
00:05:40 v #6478 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:05:40 v #6479 > >
00:05:40 v #6480 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:40 v #6481 > > nominal contract =
00:05:40 v #6482 > >     `(
00:05:40 v #6483 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:05:40 v #6484 > > Fable.Core.Emit(\"near_workspaces::Contract\")>]]\n#endif\ntype
00:05:40 v #6485 > > near_workspaces_Contract = class end"
00:05:40 v #6486 > >         $'' : $'near_workspaces_Contract'
00:05:40 v #6487 > >     )
00:05:40 v #6488 > >
00:05:40 v #6489 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:40 v #6490 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:05:40 v #6491 > > │ ### call_transaction                                                         │
00:05:40 v #6492 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:05:40 v #6493 > >
00:05:40 v #6494 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:40 v #6495 > > nominal call_transaction =
00:05:40 v #6496 > >     `(
00:05:40 v #6497 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:05:40 v #6498 > > Fable.Core.Emit(\"near_workspaces::operations::CallTransaction\")>]]\n#endif\nty
00:05:40 v #6499 > > pe near_workspaces_operations_CallTransaction = class end"
00:05:40 v #6500 > >         $'' : $'near_workspaces_operations_CallTransaction'
00:05:40 v #6501 > >     )
00:05:40 v #6502 > >
00:05:40 v #6503 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:40 v #6504 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:05:40 v #6505 > > │ ### execution_final_result                                                   │
00:05:40 v #6506 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:05:40 v #6507 > >
00:05:40 v #6508 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:40 v #6509 > > nominal execution_final_result =
00:05:40 v #6510 > >     `(
00:05:40 v #6511 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:05:40 v #6512 > > Fable.Core.Emit(\"near_workspaces::result::ExecutionFinalResult\")>]]\n#endif\nt
00:05:40 v #6513 > > ype near_workspaces_result_ExecutionFinalResult = class end"
00:05:40 v #6514 > >         $'' : $'near_workspaces_result_ExecutionFinalResult'
00:05:40 v #6515 > >     )
00:05:41 v #6516 > >
00:05:41 v #6517 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:41 v #6518 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:05:41 v #6519 > > │ ### execution_result                                                         │
00:05:41 v #6520 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:05:41 v #6521 > >
00:05:41 v #6522 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:41 v #6523 > > nominal execution_result t =
00:05:41 v #6524 > >     `(
00:05:41 v #6525 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:05:41 v #6526 > > Fable.Core.Emit(\"near_workspaces::result::ExecutionResult<$0>\")>]]\n#endif\nty
00:05:41 v #6527 > > pe near_workspaces_result_ExecutionResult<'T> = class end"
00:05:41 v #6528 > >         $'' : $'near_workspaces_result_ExecutionResult<`t>'
00:05:41 v #6529 > >     )
00:05:41 v #6530 > >
00:05:41 v #6531 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:41 v #6532 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:05:41 v #6533 > > │ ### execution_success                                                        │
00:05:41 v #6534 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:05:41 v #6535 > >
00:05:41 v #6536 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:41 v #6537 > > nominal execution_success =
00:05:41 v #6538 > >     `(
00:05:41 v #6539 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:05:41 v #6540 > > Fable.Core.Emit(\"near_workspaces::result::ExecutionSuccess\")>]]\n#endif\ntype
00:05:41 v #6541 > > near_workspaces_result_ExecutionSuccess = class end"
00:05:41 v #6542 > >         $'' : $'near_workspaces_result_ExecutionSuccess'
00:05:41 v #6543 > >     )
00:05:42 v #6544 > >
00:05:42 v #6545 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:42 v #6546 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:05:42 v #6547 > > │ ### execution_failure                                                        │
00:05:42 v #6548 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:05:42 v #6549 > >
00:05:42 v #6550 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:42 v #6551 > > nominal execution_failure =
00:05:42 v #6552 > >     `(
00:05:42 v #6553 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:05:42 v #6554 > > Fable.Core.Emit(\"near_workspaces::result::ExecutionFailure\")>]]\n#endif\ntype
00:05:42 v #6555 > > near_workspaces_result_ExecutionFailure = class end"
00:05:42 v #6556 > >         $'' : $'near_workspaces_result_ExecutionFailure'
00:05:42 v #6557 > >     )
00:05:42 v #6558 > >
00:05:42 v #6559 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:42 v #6560 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:05:42 v #6561 > > │ ### execution_outcome                                                        │
00:05:42 v #6562 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:05:42 v #6563 > >
00:05:42 v #6564 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:42 v #6565 > > nominal execution_outcome =
00:05:42 v #6566 > >     `(
00:05:42 v #6567 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:05:42 v #6568 > > Fable.Core.Emit(\"near_workspaces::result::ExecutionOutcome\")>]]\n#endif\ntype
00:05:42 v #6569 > > near_workspaces_result_ExecutionOutcome = class end"
00:05:42 v #6570 > >         $'' : $'near_workspaces_result_ExecutionOutcome'
00:05:42 v #6571 > >     )
00:05:43 v #6572 > >
00:05:43 v #6573 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:43 v #6574 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:05:43 v #6575 > > │ ### sandbox_worker                                                           │
00:05:43 v #6576 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:05:43 v #6577 > >
00:05:43 v #6578 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:43 v #6579 > > inl sandbox_worker () : resultm.result' (worker sandbox) near_workspaces_error =
00:05:43 v #6580 > >     !\($'"near_workspaces::sandbox().await"')
00:05:43 v #6581 > >
00:05:43 v #6582 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:43 v #6583 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:05:43 v #6584 > > │ ### dev_deploy                                                               │
00:05:43 v #6585 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:05:43 v #6586 > >
00:05:43 v #6587 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:43 v #6588 > > inl dev_deploy
00:05:43 v #6589 > >     (wasm : am'.vec u8)
00:05:43 v #6590 > >     (worker : worker sandbox)
00:05:43 v #6591 > >     : async.future_pin (resultm.result' contract near_workspaces_error)
00:05:43 v #6592 > >     =
00:05:43 v #6593 > >     inl worker = worker |> rust.emit
00:05:43 v #6594 > >     !\\(wasm, $'"Box::pin(!worker.dev_deploy(&$0))"')
00:05:43 v #6595 > >
00:05:43 v #6596 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:43 v #6597 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:05:43 v #6598 > > │ ### call                                                                     │
00:05:43 v #6599 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:05:43 v #6600 > >
00:05:43 v #6601 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:43 v #6602 > > inl call (fn_name : string) (contract : contract) : call_transaction =
00:05:43 v #6603 > >     !\\((contract, fn_name), $'"$0.call(&*$1)"')
00:05:44 v #6604 > >
00:05:44 v #6605 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:44 v #6606 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:05:44 v #6607 > > │ ### logs                                                                     │
00:05:44 v #6608 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:05:44 v #6609 > >
00:05:44 v #6610 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:44 v #6611 > > inl logs (result : execution_final_result) : am'.vec (rust.ref sm'.str) =
00:05:44 v #6612 > >     !\($'"!result.logs()"')
00:05:44 v #6613 > >
00:05:44 v #6614 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:44 v #6615 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:05:44 v #6616 > > │ ### into_result                                                              │
00:05:44 v #6617 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:05:44 v #6618 > >
00:05:44 v #6619 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:44 v #6620 > > inl into_result
00:05:44 v #6621 > >     (result : execution_final_result)
00:05:44 v #6622 > >     : resultm.result' execution_success execution_failure
00:05:44 v #6623 > >     =
00:05:44 v #6624 > >     !\\(result, $'"$0.into_result()"')
00:05:45 v #6625 > >
00:05:45 v #6626 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:45 v #6627 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:05:45 v #6628 > > │ ### receipt_failures                                                         │
00:05:45 v #6629 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:05:45 v #6630 > >
00:05:45 v #6631 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:45 v #6632 > > inl receipt_failures (result : execution_final_result) : am'.vec (rust.ref
00:05:45 v #6633 > > execution_outcome) =
00:05:45 v #6634 > >     inl result = join result
00:05:45 v #6635 > >     !\($'"!result.receipt_failures()"')
00:05:45 v #6636 > >
00:05:45 v #6637 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:45 v #6638 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:05:45 v #6639 > > │ ### receipt_outcomes                                                         │
00:05:45 v #6640 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:05:45 v #6641 > >
00:05:45 v #6642 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:45 v #6643 > > inl receipt_outcomes (result : execution_final_result) : am'.vec
00:05:45 v #6644 > > execution_outcome =
00:05:45 v #6645 > >     inl result = join result
00:05:45 v #6646 > >     inl result : rust.ref (am'.slice execution_outcome) =
00:05:45 v #6647 > > !\($'"!result.receipt_outcomes()"')
00:05:45 v #6648 > >     result |> rust.into
00:05:45 v #6649 > >
00:05:45 v #6650 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:45 v #6651 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:05:45 v #6652 > > │ ### json                                                                     │
00:05:45 v #6653 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:05:45 v #6654 > >
00:05:45 v #6655 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:45 v #6656 > > inl json (result : execution_final_result) : resultm.result' sm'.std_string
00:05:45 v #6657 > > near_workspaces_error =
00:05:45 v #6658 > >     !\\(result, $'"$0.json()"')
00:05:46 v #6659 > >
00:05:46 v #6660 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:46 v #6661 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:05:46 v #6662 > > │ ### borsh                                                                    │
00:05:46 v #6663 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:05:46 v #6664 > >
00:05:46 v #6665 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:46 v #6666 > > inl borsh (result : execution_final_result) : resultm.result' sm'.std_string
00:05:46 v #6667 > > near_workspaces_error =
00:05:46 v #6668 > >     !\\(result, $'"$0.borsh()"')
00:05:46 v #6669 > >
00:05:46 v #6670 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:46 v #6671 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:05:46 v #6672 > > │ ### total_gas_burnt                                                          │
00:05:46 v #6673 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:05:46 v #6674 > >
00:05:46 v #6675 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:46 v #6676 > > inl total_gas_burnt (result : execution_final_result) : gas =
00:05:46 v #6677 > >     !\\(result, $'"$0.total_gas_burnt"')
00:05:47 v #6678 > >
00:05:47 v #6679 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:47 v #6680 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:05:47 v #6681 > > │ ### as_gas                                                                   │
00:05:47 v #6682 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:05:47 v #6683 > >
00:05:47 v #6684 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:47 v #6685 > > inl as_gas (gas : gas) : u64 =
00:05:47 v #6686 > >     !\\(gas, $'"$0.as_gas()"')
00:05:47 v #6687 > >
00:05:47 v #6688 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:47 v #6689 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:05:47 v #6690 > > │ ### outcomes                                                                 │
00:05:47 v #6691 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:05:47 v #6692 > >
00:05:47 v #6693 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:47 v #6694 > > inl outcomes (result : execution_final_result) : am'.vec (rust.ref
00:05:47 v #6695 > > execution_outcome) =
00:05:47 v #6696 > >     inl result = result |> rust.emit
00:05:47 v #6697 > >     !\($'"!result.outcomes()"')
00:05:47 v #6698 > >
00:05:47 v #6699 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:47 v #6700 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:05:47 v #6701 > > │ ### is_success                                                               │
00:05:47 v #6702 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:05:47 v #6703 > >
00:05:47 v #6704 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:47 v #6705 > > inl is_success (outcome : execution_outcome) : bool =
00:05:47 v #6706 > >     !\\(outcome, $'"$0.is_success()"')
00:05:48 v #6707 > >
00:05:48 v #6708 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:48 v #6709 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:05:48 v #6710 > > │ ### gas_burnt                                                                │
00:05:48 v #6711 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:05:48 v #6712 > >
00:05:48 v #6713 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:48 v #6714 > > inl gas_burnt (outcome : execution_outcome) : gas =
00:05:48 v #6715 > >     !\\(outcome, $'"$0.gas_burnt"')
00:05:48 v #6716 > >
00:05:48 v #6717 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:48 v #6718 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:05:48 v #6719 > > │ ### tokens_burnt                                                             │
00:05:48 v #6720 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:05:48 v #6721 > >
00:05:48 v #6722 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:48 v #6723 > > inl tokens_burnt (outcome : execution_outcome) : near_token_workspaces =
00:05:48 v #6724 > >     !\\(outcome, $'"$0.tokens_burnt"')
00:05:49 v #6725 > >
00:05:49 v #6726 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:49 v #6727 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:05:49 v #6728 > > │ ### transact                                                                 │
00:05:49 v #6729 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:05:49 v #6730 > >
00:05:49 v #6731 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:49 v #6732 > > inl transact
00:05:49 v #6733 > >     (call : call_transaction)
00:05:49 v #6734 > >     : async.future_pin (resultm.result' execution_final_result
00:05:49 v #6735 > > near_workspaces_error)
00:05:49 v #6736 > >     =
00:05:49 v #6737 > >     !\($'"Box::pin(!call.transact())"')
00:05:49 v #6738 > >
00:05:49 v #6739 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:49 v #6740 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:05:49 v #6741 > > │ ### gas                                                                      │
00:05:49 v #6742 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:05:49 v #6743 > >
00:05:49 v #6744 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:49 v #6745 > > inl gas
00:05:49 v #6746 > >     (gas : gas)
00:05:49 v #6747 > >     (call : call_transaction)
00:05:49 v #6748 > >     : call_transaction
00:05:49 v #6749 > >     =
00:05:49 v #6750 > >     !\($'"!call.gas(!gas)"')
00:05:50 v #6751 > >
00:05:50 v #6752 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:50 v #6753 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:05:50 v #6754 > > │ ### from_tgas                                                                │
00:05:50 v #6755 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:05:50 v #6756 > >
00:05:50 v #6757 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:50 v #6758 > > inl from_tgas
00:05:50 v #6759 > >     (tgas : i32)
00:05:50 v #6760 > >     : gas
00:05:50 v #6761 > >     =
00:05:50 v #6762 > >     !\($'"near_workspaces::types::Gas::from_tgas(!tgas)"')
00:05:50 v #6763 > >
00:05:50 v #6764 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:50 v #6765 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:05:50 v #6766 > > │ ### print_usd                                                                │
00:05:50 v #6767 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:05:50 v #6768 > >
00:05:50 v #6769 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:50 v #6770 > > inl print_usd retry (result : execution_final_result) =
00:05:50 v #6771 > >     inl total_gas_burnt = result |> total_gas_burnt |> as_gas
00:05:50 v #6772 > >     inl total_gas_burnt_usd = total_gas_burnt |> near.gas_to_usd
00:05:50 v #6773 > >
00:05:50 v #6774 > >     trace Info
00:05:50 v #6775 > >         fun () => "near_workspaces.print_usd"
00:05:50 v #6776 > >         fun () => { retry total_gas_burnt_usd total_gas_burnt }
00:05:50 v #6777 > >
00:05:50 v #6778 > >     result
00:05:50 v #6779 > >     |> outcomes
00:05:50 v #6780 > >     |> iter.into_iter
00:05:50 v #6781 > >     |> iter.cloned
00:05:50 v #6782 > >     |> iter.for_each fun outcome =>
00:05:50 v #6783 > >         inl is_success = outcome |> is_success
00:05:50 v #6784 > >
00:05:50 v #6785 > >         inl gas_burnt = outcome |> gas_burnt |> as_gas
00:05:50 v #6786 > >         inl gas_burnt_usd = gas_burnt |> near.gas_to_usd
00:05:50 v #6787 > >
00:05:50 v #6788 > >         inl tokens_burnt = outcome |> tokens_burnt |> near.as_yoctonear
00:05:50 v #6789 > >         inl tokens_burnt_usd = tokens_burnt |> near.tokens_to_usd
00:05:50 v #6790 > >
00:05:50 v #6791 > >         trace Info
00:05:50 v #6792 > >             fun () => "near_workspaces.print_usd / outcome"
00:05:50 v #6793 > >             fun () => { is_success gas_burnt_usd tokens_burnt_usd gas_burnt
00:05:50 v #6794 > > tokens_burnt }
00:05:50 v #6795 > 00:00:19 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 20065 }
00:05:50 v #6796 > 00:00:19 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/polyglot/lib/spiral/rust/near_workspaces.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/polyglot/lib/spiral/rust/near_workspaces.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:05:52 v #6797 > 00:00:20 v #5 ! [NbConvertApp] Converting notebook c:/home/git/polyglot/lib/spiral/rust/near_workspaces.dib.ipynb to html
00:05:52 v #6798 > 00:00:20 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:05:52 v #6799 > 00:00:20 v #7 !   validate(nb)
00:05:52 v #6800 > 00:00:21 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:05:52 v #6801 > 00:00:21 v #9 !   return _pygments_highlight(
00:05:53 v #6802 > 00:00:21 v #10 ! [NbConvertApp] Writing 329820 bytes to c:\home\git\polyglot\lib\spiral\rust\near_workspaces.dib.html
00:05:53 v #6803 > 00:00:21 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 882 }
00:05:53 v #6804 > 00:00:21 d #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 882 }
00:05:53 v #6805 > 00:00:21 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/rust/near_workspaces.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/rust/near_workspaces.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:05:53 v #6806 > 00:00:22 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:05:53 v #6807 > 00:00:22 d #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:05:53 v #6808 > 00:00:22 d #16 spiral_builder.run / dib / { exit_code = 0; result_length = 21006 }
00:05:53 d #6809 runtime.execute_with_options_async / { exit_code = 0; output_length = 24519 }
00:05:53 d #8 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder.exe dib --path rust/near_workspaces.dib --retries 3
00:05:53 d #6810 runtime.execute_with_options_async / { file_name = ../../workspace/target/release/spiral_builder.exe; arguments = US5_0 "dib --path testing.dib --retries 3"; options = { command = ../../workspace/target/release/spiral_builder.exe dib --path testing.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:05:53 v #6811 > 00:00:00 d #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "testing.dib", "--retries", "3"])) }
00:05:53 v #6812 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/polyglot/lib/spiral/testing.dib", "--output-path", "c:/home/git/polyglot/lib/spiral/testing.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/polyglot/lib/spiral/testing.dib" --output-path "c:/home/git/polyglot/lib/spiral/testing.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:05:55 v #6813 > >
00:05:55 v #6814 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:55 v #6815 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:05:55 v #6816 > > │ # testing                                                                    │
00:05:55 v #6817 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:05:55 v #6818 > >
00:05:55 v #6819 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:55 v #6820 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:05:55 v #6821 > > │ ## testing                                                                   │
00:05:55 v #6822 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:05:55 v #6823 > >
00:05:55 v #6824 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:55 v #6825 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:05:55 v #6826 > > │ ### testing_trace                                                            │
00:05:55 v #6827 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:05:58 v #6828 > >
00:05:58 v #6829 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:58 v #6830 > > union testing_trace =
00:05:58 v #6831 > >     | Console
00:05:58 v #6832 > >     | Trace
00:05:58 v #6833 > >     | TraceRaw
00:05:58 v #6834 > >     | Silent
00:05:59 v #6835 > >
00:05:59 v #6836 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:59 v #6837 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:05:59 v #6838 > > │ ### __expect                                                                 │
00:05:59 v #6839 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:05:59 v #6840 > >
00:05:59 v #6841 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:59 v #6842 > > inl rec __expect fn trace' name b a =
00:05:59 v #6843 > >     inl result = fn a b
00:05:59 v #6844 > >     inl result =
00:05:59 v #6845 > >         result || join result
00:05:59 v #6846 > >     inl get_raw_text () =
00:05:59 v #6847 > >         backend_switch {
00:05:59 v #6848 > >             Fsharp = fun () => $'$"{!name} / actual: %A{!a} / expected: %A{!b}"'
00:05:59 v #6849 > > : string
00:05:59 v #6850 > >             Python = fun () => $'f"{!name} / actual: {!a} / expected: {!b}"' :
00:05:59 v #6851 > > string
00:05:59 v #6852 > >         }
00:05:59 v #6853 > >     match trace' with
00:05:59 v #6854 > >     | Console =>
00:05:59 v #6855 > >         inl text = get_raw_text ()
00:05:59 v #6856 > >         text |> console.write_line
00:05:59 v #6857 > >         text
00:05:59 v #6858 > >     | Trace =>
00:05:59 v #6859 > >         trace Info (fun () => name) fun () => { actual = a; expected = b }
00:05:59 v #6860 > >         get_raw_text ()
00:05:59 v #6861 > >     | TraceRaw =>
00:05:59 v #6862 > >         inl text = get_raw_text ()
00:05:59 v #6863 > >         trace_raw Info fun () => text
00:05:59 v #6864 > >         text
00:05:59 v #6865 > >     | Silent => reflection.nameof { __expect }
00:05:59 v #6866 > >     |> assert result
00:06:00 v #6867 > >
00:06:00 v #6868 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:00 v #6869 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:06:00 v #6870 > > │ ### __assert_approx_eq                                                       │
00:06:00 v #6871 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:06:00 v #6872 > >
00:06:00 v #6873 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:00 v #6874 > > inl rec __assert_approx_eq trace e b a =
00:06:00 v #6875 > >     __expect
00:06:00 v #6876 > >         (fun a b => abs (b - a) < (e |> optionm.defaultWith 0.00000001))
00:06:00 v #6877 > >         trace
00:06:00 v #6878 > >         (reflection.nameof { __assert_approx_eq })
00:06:00 v #6879 > >         b
00:06:00 v #6880 > >         a
00:06:00 v #6881 > >
00:06:00 v #6882 > > inl _assert_approx_eq e b a =
00:06:00 v #6883 > >     __assert_approx_eq Console e b a
00:06:00 v #6884 > >
00:06:00 v #6885 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:00 v #6886 > > //// test
00:06:00 v #6887 > > ///! fsharp
00:06:00 v #6888 > > ///! cuda
00:06:00 v #6889 > > ///! rust
00:06:00 v #6890 > > ///! typescript
00:06:00 v #6891 > > ///! python
00:06:00 v #6892 > >
00:06:00 v #6893 > > 12.345f64
00:06:00 v #6894 > > |> _assert_approx_eq (Some 0.0001f64) 12.345f64
00:06:05 v #6895 > >
00:06:05 v #6896 > > ╭─[ 4.45s - return value ]─────────────────────────────────────────────────────╮
00:06:05 v #6897 > > │ .py output (Cuda):                                                           │
00:06:05 v #6898 > > │ __assert_approx_eq / actual: 12.345 / expected: 12.345                       │
00:06:05 v #6899 > > │                                                                              │
00:06:05 v #6900 > > │ .rs output:                                                                  │
00:06:05 v #6901 > > │ __assert_approx_eq / actual: 12.345 / expected: 12.345                       │
00:06:05 v #6902 > > │                                                                              │
00:06:05 v #6903 > > │ .ts output:                                                                  │
00:06:05 v #6904 > > │ __assert_approx_eq / actual: 12.345 / expected: 12.345                       │
00:06:05 v #6905 > > │                                                                              │
00:06:05 v #6906 > > │ .py output:                                                                  │
00:06:05 v #6907 > > │ __assert_approx_eq / actual: 12.345 / expected: 12.345                       │
00:06:05 v #6908 > > │                                                                              │
00:06:05 v #6909 > > │                                                                              │
00:06:05 v #6910 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:06:05 v #6911 > >
00:06:05 v #6912 > > ╭─[ 4.46s - stdout ]───────────────────────────────────────────────────────────╮
00:06:05 v #6913 > > │ .fsx output:                                                                 │
00:06:05 v #6914 > > │ __assert_approx_eq / actual: 12.345 / expected: 12.345                       │
00:06:05 v #6915 > > │                                                                              │
00:06:05 v #6916 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:06:05 v #6917 > >
00:06:05 v #6918 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:05 v #6919 > > //// test
00:06:05 v #6920 > > //// print_code
00:06:05 v #6921 > >
00:06:05 v #6922 > > 1f64
00:06:05 v #6923 > > |> __assert_approx_eq Console (Some 3) 2
00:06:05 v #6924 > >
00:06:05 v #6925 > > ╭─[ 393.29ms - stdout ]────────────────────────────────────────────────────────╮
00:06:05 v #6926 > > │ let rec closure0 (v0 : string) () : unit =                                   │
00:06:05 v #6927 > > │     let v1 : (string -> unit) = System.Console.WriteLine                     │
00:06:05 v #6928 > > │     v1 v0                                                                    │
00:06:05 v #6929 > > │ and method0 () : unit =                                                      │
00:06:05 v #6930 > > │     let v0 : string = "__assert_approx_eq"                                   │
00:06:05 v #6931 > > │     let v1 : string = $"{v0} / actual: %A{1.0} / expected: %A{2.0}"          │
00:06:05 v #6932 > > │     let v4 : unit = ()                                                       │
00:06:05 v #6933 > > │     let v5 : (unit -> unit) = closure0(v1)                                   │
00:06:05 v #6934 > > │     let v6 : unit = (fun () -> v5 (); v4) ()                                 │
00:06:05 v #6935 > > │     ()                                                                       │
00:06:05 v #6936 > > │ method0()                                                                    │
00:06:05 v #6937 > > │                                                                              │
00:06:05 v #6938 > > │ __assert_approx_eq / actual: 1.0 / expected: 2.0                             │
00:06:05 v #6939 > > │                                                                              │
00:06:05 v #6940 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:06:05 v #6941 > >
00:06:05 v #6942 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:05 v #6943 > > //// test
00:06:05 v #6944 > > //// print_code
00:06:05 v #6945 > >
00:06:05 v #6946 > > (dyn 1f64)
00:06:05 v #6947 > > |> _assert_approx_eq (Some 3) 2
00:06:06 v #6948 > >
00:06:06 v #6949 > > ╭─[ 526.37ms - stdout ]────────────────────────────────────────────────────────╮
00:06:06 v #6950 > > │ let rec method1 (v0 : bool) : bool =                                         │
00:06:06 v #6951 > > │     v0                                                                       │
00:06:06 v #6952 > > │ and closure0 (v0 : string) () : unit =                                       │
00:06:06 v #6953 > > │     let v1 : (string -> unit) = System.Console.WriteLine                     │
00:06:06 v #6954 > > │     v1 v0                                                                    │
00:06:06 v #6955 > > │ and method0 () : unit =                                                      │
00:06:06 v #6956 > > │     let v0 : float = 1.0                                                     │
00:06:06 v #6957 > > │     let v1 : float = 2.0 - v0                                                │
00:06:06 v #6958 > > │     let v2 : float =  -v1                                                    │
00:06:06 v #6959 > > │     let v3 : bool = v1 >= v2                                                 │
00:06:06 v #6960 > > │     let v4 : float =                                                         │
00:06:06 v #6961 > > │         if v3 then                                                           │
00:06:06 v #6962 > > │             v1                                                               │
00:06:06 v #6963 > > │         else                                                                 │
00:06:06 v #6964 > > │             v2                                                               │
00:06:06 v #6965 > > │     let v5 : bool = v4 < 3.0                                                 │
00:06:06 v #6966 > > │     let v7 : bool =                                                          │
00:06:06 v #6967 > > │         if v5 then                                                           │
00:06:06 v #6968 > > │             true                                                             │
00:06:06 v #6969 > > │         else                                                                 │
00:06:06 v #6970 > > │             method1(v5)                                                      │
00:06:06 v #6971 > > │     let v8 : string = "__assert_approx_eq"                                   │
00:06:06 v #6972 > > │     let v9 : string = $"{v8} / actual: %A{v0} / expected: %A{2.0}"           │
00:06:06 v #6973 > > │     let v12 : unit = ()                                                      │
00:06:06 v #6974 > > │     let v13 : (unit -> unit) = closure0(v9)                                  │
00:06:06 v #6975 > > │     let v14 : unit = (fun () -> v13 (); v12) ()                              │
00:06:06 v #6976 > > │     let v16 : bool = v7 = false                                              │
00:06:06 v #6977 > > │     if v16 then                                                              │
00:06:06 v #6978 > > │         failwith<unit> v9                                                    │
00:06:06 v #6979 > > │ method0()                                                                    │
00:06:06 v #6980 > > │                                                                              │
00:06:06 v #6981 > > │ __assert_approx_eq / actual: 1.0 / expected: 2.0                             │
00:06:06 v #6982 > > │                                                                              │
00:06:06 v #6983 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:06:06 v #6984 > >
00:06:06 v #6985 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:06 v #6986 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:06:06 v #6987 > > │ ### __assert_eq                                                              │
00:06:06 v #6988 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:06:06 v #6989 > >
00:06:06 v #6990 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:06 v #6991 > > inl rec __assert_eq trace b a =
00:06:06 v #6992 > >     __expect (=) trace (reflection.nameof { __assert_eq }) b a
00:06:06 v #6993 > >
00:06:06 v #6994 > > inl _assert_eq b a =
00:06:06 v #6995 > >     __assert_eq Console b a
00:06:06 v #6996 > >
00:06:06 v #6997 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:06 v #6998 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:06:06 v #6999 > > │ ### __assert_eq'                                                             │
00:06:06 v #7000 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:06:06 v #7001 > >
00:06:06 v #7002 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:06 v #7003 > > inl rec __assert_eq' trace b a =
00:06:06 v #7004 > >     __expect (=.) trace (reflection.nameof { __assert_eq' }) b a
00:06:06 v #7005 > >
00:06:06 v #7006 > > inl _assert_eq' b a =
00:06:06 v #7007 > >     __assert_eq' Console b a
00:06:06 v #7008 > >
00:06:06 v #7009 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:06 v #7010 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:06:06 v #7011 > > │ ### __assert_ne                                                              │
00:06:06 v #7012 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:06:06 v #7013 > >
00:06:06 v #7014 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:06 v #7015 > > inl rec __assert_ne trace b a =
00:06:06 v #7016 > >     __expect (<>.) trace (reflection.nameof { __assert_ne }) b a
00:06:06 v #7017 > >
00:06:06 v #7018 > > inl _assert_ne b a =
00:06:06 v #7019 > >     __assert_ne Console b a
00:06:07 v #7020 > >
00:06:07 v #7021 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:07 v #7022 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:06:07 v #7023 > > │ ### __assert_gt                                                              │
00:06:07 v #7024 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:06:07 v #7025 > >
00:06:07 v #7026 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:07 v #7027 > > inl rec __assert_gt trace b a =
00:06:07 v #7028 > >     __expect (>) trace (reflection.nameof { __assert_gt }) b a
00:06:07 v #7029 > >
00:06:07 v #7030 > > inl _assert_gt b a =
00:06:07 v #7031 > >     __assert_gt Console b a
00:06:07 v #7032 > >
00:06:07 v #7033 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:07 v #7034 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:06:07 v #7035 > > │ ### __assert_ge                                                              │
00:06:07 v #7036 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:06:07 v #7037 > >
00:06:07 v #7038 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:07 v #7039 > > inl rec __assert_ge trace b a =
00:06:07 v #7040 > >     __expect (>=) trace (reflection.nameof { __assert_ge }) b a
00:06:07 v #7041 > >
00:06:07 v #7042 > > inl _assert_ge b a =
00:06:07 v #7043 > >     __assert_ge Console b a
00:06:08 v #7044 > >
00:06:08 v #7045 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:08 v #7046 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:06:08 v #7047 > > │ ### __assert_lt                                                              │
00:06:08 v #7048 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:06:08 v #7049 > >
00:06:08 v #7050 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:08 v #7051 > > inl rec __assert_lt trace b a =
00:06:08 v #7052 > >     __expect (<) trace (reflection.nameof { __assert_lt }) b a
00:06:08 v #7053 > >
00:06:08 v #7054 > > inl _assert_lt b a =
00:06:08 v #7055 > >     __assert_lt Console b a
00:06:08 v #7056 > >
00:06:08 v #7057 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:08 v #7058 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:06:08 v #7059 > > │ ### __assert_le                                                              │
00:06:08 v #7060 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:06:08 v #7061 > >
00:06:08 v #7062 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:08 v #7063 > > inl rec __assert_le trace b a =
00:06:08 v #7064 > >     __expect (<=) trace (reflection.nameof { __assert_le }) b a
00:06:08 v #7065 > >
00:06:08 v #7066 > > inl _assert_le b a =
00:06:08 v #7067 > >     __assert_le Console b a
00:06:08 v #7068 > >
00:06:08 v #7069 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:08 v #7070 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:06:08 v #7071 > > │ ### __assert                                                                 │
00:06:08 v #7072 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:06:08 v #7073 > >
00:06:08 v #7074 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:08 v #7075 > > inl rec __assert fn trace b a =
00:06:08 v #7076 > >     __expect fn trace (reflection.nameof { __assert }) a b
00:06:08 v #7077 > >
00:06:08 v #7078 > > inl _assert fn b a =
00:06:08 v #7079 > >     __assert fn Console b a
00:06:09 v #7080 > >
00:06:09 v #7081 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:09 v #7082 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:06:09 v #7083 > > │ ### __assert_between                                                         │
00:06:09 v #7084 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:06:09 v #7085 > >
00:06:09 v #7086 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:09 v #7087 > > inl rec __assert_between trace a b actual =
00:06:09 v #7088 > >     inl assert_between actual (a, b) =
00:06:09 v #7089 > >         __assert_ge Silent a actual
00:06:09 v #7090 > >         __assert_le Silent b actual
00:06:09 v #7091 > >         true
00:06:09 v #7092 > >     __expect assert_between trace (reflection.nameof { __assert_between }) (a,
00:06:09 v #7093 > > b) actual
00:06:09 v #7094 > >
00:06:09 v #7095 > > inl _assert_between a b actual =
00:06:09 v #7096 > >     __assert_between Console a b actual
00:06:09 v #7097 > >
00:06:09 v #7098 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:09 v #7099 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:06:09 v #7100 > > │ ### _assert_fn                                                               │
00:06:09 v #7101 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:06:09 v #7102 > >
00:06:09 v #7103 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:09 v #7104 > > inl rec _assert_fn fn list =
00:06:09 v #7105 > >     list
00:06:09 v #7106 > >     |> listm.rev
00:06:09 v #7107 > >     |> listm.map fun input, expected => join
00:06:09 v #7108 > >         input
00:06:09 v #7109 > >         |> fn
00:06:09 v #7110 > >         |> resultm.get
00:06:09 v #7111 > >         |> fun x =>
00:06:09 v #7112 > >             inl expected' = join expected
00:06:09 v #7113 > >             inl name = reflection.nameof { _assert_fn }
00:06:09 v #7114 > >             try
00:06:09 v #7115 > >                 fun () =>
00:06:09 v #7116 > >                     console.write_line ""
00:06:09 v #7117 > >                     trace Verbose
00:06:09 v #7118 > >                         fun () => name
00:06:09 v #7119 > >                         fun () => { input }
00:06:09 v #7120 > >                     x
00:06:09 v #7121 > >                     |> sm'.format
00:06:09 v #7122 > >                     |> _assert_eq' (expected' |> sm'.format)
00:06:09 v #7123 > >                     true
00:06:09 v #7124 > >                 fun ex =>
00:06:09 v #7125 > >                     trace Critical
00:06:09 v #7126 > >                         fun () =>
00:06:09 v #7127 > >                             backend_switch {
00:06:09 v #7128 > >                                 Fsharp = fun () => $'$"{!name} / error"' :
00:06:09 v #7129 > > string
00:06:09 v #7130 > >                                 Python = fun () => $'f"{!name} / error"' :
00:06:09 v #7131 > > string
00:06:09 v #7132 > >                             }
00:06:09 v #7133 > >                         fun () => { ex expected }
00:06:09 v #7134 > >                     Some false
00:06:09 v #7135 > >             |> optionm.value
00:06:09 v #7136 > >     |> listm'.filter not
00:06:09 v #7137 > >     |> function
00:06:09 v #7138 > >         | [[]] => ()
00:06:09 v #7139 > >         | x => x |> sm'.format_debug |> failwith
00:06:10 v #7140 > >
00:06:10 v #7141 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:10 v #7142 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:06:10 v #7143 > > │ ## fsharp                                                                    │
00:06:10 v #7144 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:06:10 v #7145 > >
00:06:10 v #7146 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:10 v #7147 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:06:10 v #7148 > > │ ### __assert_contains                                                        │
00:06:10 v #7149 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:06:10 v #7150 > >
00:06:10 v #7151 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:10 v #7152 > > inl rec __assert_contains forall t u. (trace : testing_trace) (b : t) (a : u) :
00:06:10 v #7153 > > () =
00:06:10 v #7154 > >     __expect
00:06:10 v #7155 > >         fun a b =>
00:06:10 v #7156 > >             a
00:06:10 v #7157 > >             |> $'List.ofSeq'
00:06:10 v #7158 > >             |> fun x => x : listm'.list' t
00:06:10 v #7159 > >             |> $'List.tryFind' ((=) b)
00:06:10 v #7160 > >             |> optionm'.unbox
00:06:10 v #7161 > >             |> fun (x : option t) => x <> None
00:06:10 v #7162 > >         trace
00:06:10 v #7163 > >         // TODO: forall nameof (Cannot dyn a forall into a runtime var.)
00:06:10 v #7164 > >         // Metavars that are not part of the enclosing function's signature are
00:06:10 v #7165 > > not allowed. They need to be values.
00:06:10 v #7166 > >         // Got: {__assert_contains : testing_trace -> _ -> _ -> ()} -> string
00:06:10 v #7167 > >         // (reflection.nameof { __assert_contains })
00:06:10 v #7168 > >         "__assert_contains"
00:06:10 v #7169 > >         b
00:06:10 v #7170 > >         a
00:06:10 v #7171 > >
00:06:10 v #7172 > > inl _assert_contains b a =
00:06:10 v #7173 > >     __assert_contains Console b a
00:06:10 v #7174 > >
00:06:10 v #7175 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:10 v #7176 > > //// test
00:06:10 v #7177 > >
00:06:10 v #7178 > > ;[[ "a"; "b"; "c" ]]
00:06:10 v #7179 > > |> _assert_contains "b"
00:06:11 v #7180 > >
00:06:11 v #7181 > > ╭─[ 901.59ms - stdout ]────────────────────────────────────────────────────────╮
00:06:11 v #7182 > > │ __assert_contains / actual: [|"a"; "b"; "c"|] / expected: "b"                │
00:06:11 v #7183 > > │                                                                              │
00:06:11 v #7184 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:06:11 v #7185 > >
00:06:11 v #7186 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:11 v #7187 > > //// test
00:06:11 v #7188 > >
00:06:11 v #7189 > > "abcd"
00:06:11 v #7190 > > |> _assert_contains 'b'
00:06:11 v #7191 > >
00:06:11 v #7192 > > ╭─[ 406.50ms - stdout ]────────────────────────────────────────────────────────╮
00:06:11 v #7193 > > │ __assert_contains / actual: "abcd" / expected: 'b'                           │
00:06:11 v #7194 > > │                                                                              │
00:06:11 v #7195 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:06:11 v #7196 > >
00:06:11 v #7197 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:11 v #7198 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:06:11 v #7199 > > │ ### _throws                                                                  │
00:06:11 v #7200 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:06:11 v #7201 > >
00:06:11 v #7202 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:11 v #7203 > > inl _throws (fn : () -> ()) : option exn =
00:06:11 v #7204 > >     inl none = None : option exn
00:06:11 v #7205 > >     inl some (s : exn) = Some s
00:06:11 v #7206 > >     backend_switch {
00:06:11 v #7207 > >         Fsharp = fun () =>
00:06:11 v #7208 > >             $'try !fn (); !none with ex -> ex |> !some ' : option exn
00:06:11 v #7209 > >         Python = fun () =>
00:06:11 v #7210 > >             $'fn = !fn '
00:06:11 v #7211 > >             $'none = !none '
00:06:11 v #7212 > >             $'some = !some '
00:06:11 v #7213 > >             $'try: fn(); x = none '
00:06:11 v #7214 > >             $'except Exception as ex: x = some(ex)'
00:06:11 v #7215 > >             $'x' : option exn
00:06:11 v #7216 > >     }
00:06:12 v #7217 > >
00:06:12 v #7218 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:12 v #7219 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:06:12 v #7220 > > │ ### print_and_return                                                         │
00:06:12 v #7221 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:06:12 v #7222 > >
00:06:12 v #7223 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:12 v #7224 > > inl rec print_and_return x =
00:06:12 v #7225 > >     inl name = reflection.nameof { print_and_return }
00:06:12 v #7226 > >     backend_switch {
00:06:12 v #7227 > >         Fsharp = fun () => $'printfn $"{!name} / x: {!x}"' : ()
00:06:12 v #7228 > >         Python = fun () => $'print(f"{!name} / x: {!x}")' : ()
00:06:12 v #7229 > >     }
00:06:12 v #7230 > >     x
00:06:12 v #7231 > 00:00:19 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 19917 }
00:06:12 v #7232 > 00:00:19 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/polyglot/lib/spiral/testing.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/polyglot/lib/spiral/testing.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:06:13 v #7233 > 00:00:20 v #5 ! [NbConvertApp] Converting notebook c:/home/git/polyglot/lib/spiral/testing.dib.ipynb to html
00:06:13 v #7234 > 00:00:20 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:06:13 v #7235 > 00:00:20 v #7 !   validate(nb)
00:06:14 v #7236 > 00:00:20 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:06:14 v #7237 > 00:00:20 v #9 !   return _pygments_highlight(
00:06:14 v #7238 > 00:00:21 v #10 ! [NbConvertApp] Writing 321524 bytes to c:\home\git\polyglot\lib\spiral\testing.dib.html
00:06:14 v #7239 > 00:00:21 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 856 }
00:06:14 v #7240 > 00:00:21 d #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 856 }
00:06:14 v #7241 > 00:00:21 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/testing.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/testing.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:06:15 v #7242 > 00:00:21 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:06:15 v #7243 > 00:00:21 d #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:06:15 v #7244 > 00:00:21 d #16 spiral_builder.run / dib / { exit_code = 0; result_length = 20832 }
00:06:15 d #7245 runtime.execute_with_options_async / { exit_code = 0; output_length = 24244 }
00:06:15 d #9 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder.exe dib --path testing.dib --retries 3
00:06:15 d #7246 runtime.execute_with_options_async / { file_name = ../../workspace/target/release/spiral_builder.exe; arguments = US5_0 "dib --path guid.dib --retries 3"; options = { command = ../../workspace/target/release/spiral_builder.exe dib --path guid.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:06:15 v #7247 > 00:00:00 d #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "guid.dib", "--retries", "3"])) }
00:06:15 v #7248 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/polyglot/lib/spiral/guid.dib", "--output-path", "c:/home/git/polyglot/lib/spiral/guid.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/polyglot/lib/spiral/guid.dib" --output-path "c:/home/git/polyglot/lib/spiral/guid.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:06:17 v #7249 > >
00:06:17 v #7250 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:17 v #7251 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:06:17 v #7252 > > │ # guid                                                                       │
00:06:17 v #7253 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:06:20 v #7254 > >
00:06:20 v #7255 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:20 v #7256 > > //// test
00:06:20 v #7257 > >
00:06:20 v #7258 > > open testing
00:06:21 v #7259 > >
00:06:21 v #7260 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:21 v #7261 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:06:21 v #7262 > > │ ## guid                                                                      │
00:06:21 v #7263 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:06:21 v #7264 > >
00:06:21 v #7265 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:21 v #7266 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:06:21 v #7267 > > │ ### guid                                                                     │
00:06:21 v #7268 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:06:21 v #7269 > >
00:06:21 v #7270 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:21 v #7271 > > nominal guid_python =
00:06:21 v #7272 > >     `(
00:06:21 v #7273 > >         global "import uuid"
00:06:21 v #7274 > >         $'' : $'uuid.UUID'
00:06:21 v #7275 > >     )
00:06:21 v #7276 > > type guid_switch =
00:06:21 v #7277 > >     {
00:06:21 v #7278 > >         Fsharp : $'System.Guid'
00:06:21 v #7279 > >         Python : guid_python
00:06:21 v #7280 > >     }
00:06:21 v #7281 > > nominal guid = $'backend_switch `(guid_switch)'
00:06:21 v #7282 > >
00:06:21 v #7283 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:21 v #7284 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:06:21 v #7285 > > │ ### new_guid                                                                 │
00:06:21 v #7286 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:06:21 v #7287 > >
00:06:21 v #7288 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:21 v #7289 > > inl new_guid (x : string) : guid =
00:06:21 v #7290 > >     x |> convert
00:06:22 v #7291 > >
00:06:22 v #7292 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:22 v #7293 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:06:22 v #7294 > > │ ### new_raw_guid                                                             │
00:06:22 v #7295 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:06:22 v #7296 > >
00:06:22 v #7297 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:22 v #7298 > > inl new_raw_guid () : guid =
00:06:22 v #7299 > >     backend_switch {
00:06:22 v #7300 > >         Fsharp = fun () => $'System.Guid.NewGuid' () : guid
00:06:22 v #7301 > >         Python = fun () => $'uuid.uuid4()' : guid
00:06:22 v #7302 > >     }
00:06:22 v #7303 > >
00:06:22 v #7304 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:22 v #7305 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:06:22 v #7306 > > │ ### hash_guid                                                                │
00:06:22 v #7307 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:06:22 v #7308 > >
00:06:22 v #7309 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:22 v #7310 > > type hash_guid = guid
00:06:22 v #7311 > >
00:06:22 v #7312 > > let hash_guid (~hash : string) : hash_guid =
00:06:22 v #7313 > >     run_target function
00:06:22 v #7314 > >         | Rust (Contract) => fun () => null ()
00:06:22 v #7315 > >         | _ => fun () =>
00:06:22 v #7316 > >             inl hash = hash |> sm'.pad_left 32i32 '0'
00:06:22 v #7317 > >             backend_switch {
00:06:22 v #7318 > >                 Fsharp = fun () =>
00:06:22 v #7319 > >
00:06:22 v #7320 > > $'$"{!hash.[[0..7]]}-{!hash.[[8..11]]}-{!hash.[[12..15]]}-{!hash.[[16..19]]}-{!h
00:06:22 v #7321 > > ash.[[20..31]]}"' : string
00:06:22 v #7322 > >                 Python = fun () =>
00:06:22 v #7323 > > $'f"{!hash[[0:8]]}-{!hash[[8:12]]}-{!hash[[12:16]]}-{!hash[[16:20]]}-{!hash[[20:
00:06:22 v #7324 > > 32]]}"' : string
00:06:22 v #7325 > >             }
00:06:22 v #7326 > >             |> fun x => x : string
00:06:22 v #7327 > >             |> convert
00:06:22 v #7328 > >
00:06:22 v #7329 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:22 v #7330 > > //// test
00:06:22 v #7331 > > ///! fsharp
00:06:22 v #7332 > > ///! cuda
00:06:22 v #7333 > > ///! rust
00:06:22 v #7334 > > ///! typescript
00:06:22 v #7335 > > ///! python
00:06:22 v #7336 > >
00:06:22 v #7337 > > ""
00:06:22 v #7338 > > |> hash_guid
00:06:22 v #7339 > > |> _assert_eq' (new_guid "00000000-0000-0000-0000-000000000000")
00:06:22 v #7340 > >
00:06:22 v #7341 > > "123456789012345678901234567890123"
00:06:22 v #7342 > > |> hash_guid
00:06:22 v #7343 > > |> _assert_eq' (new_guid "12345678-9012-3456-7890-123456789012")
00:06:27 v #7344 > >
00:06:27 v #7345 > > ╭─[ 4.62s - return value ]─────────────────────────────────────────────────────╮
00:06:27 v #7346 > > │                                                                              │
00:06:27 v #7347 > > │ .py output (Cuda):                                                           │
00:06:27 v #7348 > > │ __assert_eq' / actual: 00000000-0000-0000-0000-000000000000 / expected:      │
00:06:27 v #7349 > > │ 00000000-0000-0000-0000-000000000000                                         │
00:06:27 v #7350 > > │ __assert_eq' / actual: 12345678-9012-3456-7890-123456789012 / expected:      │
00:06:27 v #7351 > > │ 12345678-9012-3456-7890-123456789012                                         │
00:06:27 v #7352 > > │                                                                              │
00:06:27 v #7353 > > │                                                                              │
00:06:27 v #7354 > > │ .rs output:                                                                  │
00:06:27 v #7355 > > │ __assert_eq' / actual: Guid(00000000-0000-0000-0000-000000000000) /          │
00:06:27 v #7356 > > │ expected: Guid(00000000-0000-0000-0000-000000000000)                         │
00:06:27 v #7357 > > │ __assert_eq' / actual: Guid(12345678-9012-3456-7890-123456789012) /          │
00:06:27 v #7358 > > │ expected: Guid(12345678-9012-3456-7890-123456789012)                         │
00:06:27 v #7359 > > │                                                                              │
00:06:27 v #7360 > > │                                                                              │
00:06:27 v #7361 > > │ .ts output:                                                                  │
00:06:27 v #7362 > > │ __assert_eq' / actual: 00000000-0000-0000-0000-000000000000 / expected:      │
00:06:27 v #7363 > > │ 00000000-0000-0000-0000-000000000000                                         │
00:06:27 v #7364 > > │ __assert_eq' / actual: 12345678-9012-3456-7890-123456789012 / expected:      │
00:06:27 v #7365 > > │ 12345678-9012-3456-7890-123456789012                                         │
00:06:27 v #7366 > > │                                                                              │
00:06:27 v #7367 > > │                                                                              │
00:06:27 v #7368 > > │ .py output:                                                                  │
00:06:27 v #7369 > > │ __assert_eq' / actual: 00000000-0000-0000-0000-000000000000 / expected:      │
00:06:27 v #7370 > > │ 00000000-0000-0000-0000-000000000000                                         │
00:06:27 v #7371 > > │ __assert_eq' / actual: 12345678-9012-3456-7890-123456789012 / expected:      │
00:06:27 v #7372 > > │ 12345678-9012-3456-7890-123456789012                                         │
00:06:27 v #7373 > > │                                                                              │
00:06:27 v #7374 > > │                                                                              │
00:06:27 v #7375 > > │                                                                              │
00:06:27 v #7376 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:06:27 v #7377 > >
00:06:27 v #7378 > > ╭─[ 4.63s - stdout ]───────────────────────────────────────────────────────────╮
00:06:27 v #7379 > > │ .fsx output:                                                                 │
00:06:27 v #7380 > > │ __assert_eq' / actual: 00000000-0000-0000-0000-000000000000 / expected:      │
00:06:27 v #7381 > > │ 00000000-0000-0000-0000-000000000000                                         │
00:06:27 v #7382 > > │ __assert_eq' / actual: 12345678-9012-3456-7890-123456789012 / expected:      │
00:06:27 v #7383 > > │ 12345678-9012-3456-7890-123456789012                                         │
00:06:27 v #7384 > > │                                                                              │
00:06:27 v #7385 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:06:27 v #7386 > >
00:06:27 v #7387 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:27 v #7388 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:06:27 v #7389 > > │ ## main                                                                      │
00:06:27 v #7390 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:06:27 v #7391 > >
00:06:27 v #7392 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:27 v #7393 > > inl main () =
00:06:27 v #7394 > >     $'let new_guid x = !new_guid x' : ()
00:06:27 v #7395 > >     $'let hash_guid x = !hash_guid x' : ()
00:06:27 v #7396 > >     $'let new_raw_guid x = !new_raw_guid x' : ()
00:06:28 v #7397 > 00:00:12 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 7594 }
00:06:28 v #7398 > 00:00:12 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/polyglot/lib/spiral/guid.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/polyglot/lib/spiral/guid.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:06:29 v #7399 > 00:00:14 v #5 ! [NbConvertApp] Converting notebook c:/home/git/polyglot/lib/spiral/guid.dib.ipynb to html
00:06:29 v #7400 > 00:00:14 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:06:29 v #7401 > 00:00:14 v #7 !   validate(nb)
00:06:29 v #7402 > 00:00:14 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:06:29 v #7403 > 00:00:14 v #9 !   return _pygments_highlight(
00:06:30 v #7404 > 00:00:14 v #10 ! [NbConvertApp] Writing 285035 bytes to c:\home\git\polyglot\lib\spiral\guid.dib.html
00:06:30 v #7405 > 00:00:14 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 850 }
00:06:30 v #7406 > 00:00:14 d #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 850 }
00:06:30 v #7407 > 00:00:14 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/guid.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/guid.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:06:30 v #7408 > 00:00:15 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:06:30 v #7409 > 00:00:15 d #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:06:30 v #7410 > 00:00:15 d #16 spiral_builder.run / dib / { exit_code = 0; result_length = 8503 }
00:06:30 d #7411 runtime.execute_with_options_async / { exit_code = 0; output_length = 11346 }
00:06:30 d #10 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder.exe dib --path guid.dib --retries 3
00:06:30 d #7412 runtime.execute_with_options_async / { file_name = ../../workspace/target/release/spiral_builder.exe; arguments = US5_0 "dib --path async.dib --retries 3"; options = { command = ../../workspace/target/release/spiral_builder.exe dib --path async.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:06:30 v #7413 > 00:00:00 d #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "async.dib", "--retries", "3"])) }
00:06:30 v #7414 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/polyglot/lib/spiral/async.dib", "--output-path", "c:/home/git/polyglot/lib/spiral/async.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/polyglot/lib/spiral/async.dib" --output-path "c:/home/git/polyglot/lib/spiral/async.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:06:32 v #7415 > >
00:06:32 v #7416 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:32 v #7417 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:06:32 v #7418 > > │ # async                                                                      │
00:06:32 v #7419 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:06:35 v #7420 > >
00:06:35 v #7421 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:35 v #7422 > > //// test
00:06:35 v #7423 > >
00:06:35 v #7424 > > open testing
00:06:36 v #7425 > >
00:06:36 v #7426 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:36 v #7427 > > open rust
00:06:36 v #7428 > > open rust_operators
00:06:37 v #7429 > >
00:06:37 v #7430 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:37 v #7431 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:06:37 v #7432 > > │ ## rust                                                                      │
00:06:37 v #7433 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:06:37 v #7434 > >
00:06:37 v #7435 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:37 v #7436 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:06:37 v #7437 > > │ ### future                                                                   │
00:06:37 v #7438 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:06:37 v #7439 > >
00:06:37 v #7440 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:37 v #7441 > > nominal future t =
00:06:37 v #7442 > >     `(
00:06:37 v #7443 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:06:37 v #7444 > > Fable.Core.Emit(\"std::future::Future<Output = $0>\")>]]\n#endif\ntype
00:06:37 v #7445 > > std_future_Future<'T> = class end"
00:06:37 v #7446 > >         $'' : $'std_future_Future<`t>'
00:06:37 v #7447 > >     )
00:06:37 v #7448 > >
00:06:37 v #7449 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:37 v #7450 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:06:37 v #7451 > > │ ### future_pin                                                               │
00:06:37 v #7452 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:06:37 v #7453 > >
00:06:37 v #7454 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:37 v #7455 > > type future_pin t = rust.pin (rust.box (rust.dyn' (future t)))
00:06:37 v #7456 > >
00:06:37 v #7457 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:37 v #7458 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:06:37 v #7459 > > │ ### future_pin_send                                                          │
00:06:37 v #7460 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:06:37 v #7461 > >
00:06:37 v #7462 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:37 v #7463 > > type future_pin_send t = rust.pin (rust.box (rust.send (rust.dyn' (future t))))
00:06:38 v #7464 > >
00:06:38 v #7465 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:38 v #7466 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:06:38 v #7467 > > │ ### block_on_tokio                                                           │
00:06:38 v #7468 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:06:38 v #7469 > >
00:06:38 v #7470 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:38 v #7471 > > inl block_on_tokio forall t. (fn : future_pin t) : t =
00:06:38 v #7472 > >     inl runtime : infer =
00:06:38 v #7473 > >
00:06:38 v #7474 > > !\($'$"tokio::runtime::Builder::new_multi_thread().enable_all().build().unwrap()
00:06:38 v #7475 > > "')
00:06:38 v #7476 > >     !\\(fn, $'"!runtime.handle().block_on($0)"')
00:06:38 v #7477 > >
00:06:38 v #7478 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:38 v #7479 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:06:38 v #7480 > > │ ### block_on_futures_lite                                                    │
00:06:38 v #7481 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:06:38 v #7482 > >
00:06:38 v #7483 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:38 v #7484 > > inl block_on_futures_lite forall t. (fn : future_pin t) : t =
00:06:38 v #7485 > >     !\\(fn, $'"futures_lite::future::block_on($0)"')
00:06:39 v #7486 > >
00:06:39 v #7487 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:39 v #7488 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:06:39 v #7489 > > │ ### block_on_futures                                                         │
00:06:39 v #7490 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:06:39 v #7491 > >
00:06:39 v #7492 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:39 v #7493 > > inl block_on_futures forall t. (fn : future_pin t) : t =
00:06:39 v #7494 > >     !\\(fn, $'"futures::executor::block_on($0)"')
00:06:39 v #7495 > >
00:06:39 v #7496 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:39 v #7497 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:06:39 v #7498 > > │ ### block_on_async_std                                                       │
00:06:39 v #7499 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:06:39 v #7500 > >
00:06:39 v #7501 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:39 v #7502 > > inl block_on_async_std forall t. (fn : future_pin t) : t =
00:06:39 v #7503 > >     !\\(fn, $'"async_std::task::block_on($0)"')
00:06:40 v #7504 > >
00:06:40 v #7505 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:40 v #7506 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:06:40 v #7507 > > │ ### block_on_tokio_send                                                      │
00:06:40 v #7508 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:06:40 v #7509 > >
00:06:40 v #7510 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:40 v #7511 > > inl block_on_tokio_send forall t. (fn : future_pin_send t) : t =
00:06:40 v #7512 > >     !\($'"tokio::runtime::block_on(!fn)"')
00:06:40 v #7513 > >
00:06:40 v #7514 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:40 v #7515 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:06:40 v #7516 > > │ ### stream_ext_tokio                                                         │
00:06:40 v #7517 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:06:40 v #7518 > >
00:06:40 v #7519 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:40 v #7520 > > nominal stream_ext_tokio =
00:06:40 v #7521 > >     `(
00:06:40 v #7522 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:06:40 v #7523 > > Fable.Core.Emit(\"tokio_stream::StreamExt\")>]]\n#endif\ntype
00:06:40 v #7524 > > tokio_stream_StreamExt = class end"
00:06:40 v #7525 > >         $'' : $'tokio_stream_StreamExt'
00:06:40 v #7526 > >     )
00:06:40 v #7527 > >
00:06:40 v #7528 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:40 v #7529 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:06:40 v #7530 > > │ ### join_handle_tokio                                                        │
00:06:40 v #7531 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:06:40 v #7532 > >
00:06:40 v #7533 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:40 v #7534 > > nominal join_handle_tokio t =
00:06:40 v #7535 > >     `(
00:06:40 v #7536 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:06:40 v #7537 > > Fable.Core.Emit(\"tokio::task::JoinHandle<$0>\")>]]\n#endif\ntype
00:06:40 v #7538 > > tokio_task_JoinHandle<'T> = class end"
00:06:40 v #7539 > >         $'' : $'tokio_task_JoinHandle<`t>'
00:06:40 v #7540 > >     )
00:06:41 v #7541 > >
00:06:41 v #7542 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:41 v #7543 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:06:41 v #7544 > > │ ### stream_collect_tokio                                                     │
00:06:41 v #7545 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:06:41 v #7546 > >
00:06:41 v #7547 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:41 v #7548 > > inl stream_collect_tokio forall t u.
00:06:41 v #7549 > >     (stream : t)
00:06:41 v #7550 > >     : future_pin (am'.vec u)
00:06:41 v #7551 > >     =
00:06:41 v #7552 > >     !\($'"Box::pin(tokio_stream::StreamExt::collect(!stream))"')
00:06:41 v #7553 > >
00:06:41 v #7554 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:41 v #7555 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:06:41 v #7556 > > │ ### stream_collect_futures                                                   │
00:06:41 v #7557 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:06:41 v #7558 > >
00:06:41 v #7559 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:41 v #7560 > > inl stream_collect_futures forall t u.
00:06:41 v #7561 > >     (stream : t)
00:06:41 v #7562 > >     : future_pin (am'.vec u)
00:06:41 v #7563 > >     =
00:06:41 v #7564 > >     !\($'"Box::pin(futures::stream::StreamExt::collect(!stream))"')
00:06:42 v #7565 > >
00:06:42 v #7566 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:42 v #7567 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:06:42 v #7568 > > │ ### stream_next_tokio                                                        │
00:06:42 v #7569 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:06:42 v #7570 > >
00:06:42 v #7571 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:42 v #7572 > > inl stream_next_tokio forall t u.
00:06:42 v #7573 > >     (stream : t)
00:06:42 v #7574 > >     : future_pin (optionm'.option' u)
00:06:42 v #7575 > >     =
00:06:42 v #7576 > >     !\($'"let mut !stream = !stream"')
00:06:42 v #7577 > >     !\($'"Box::pin(tokio_stream::StreamExt::next(&mut !stream))"')
00:06:42 v #7578 > >
00:06:42 v #7579 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:42 v #7580 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:06:42 v #7581 > > │ ### stream_filter_map_tokio                                                  │
00:06:42 v #7582 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:06:42 v #7583 > >
00:06:42 v #7584 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:42 v #7585 > > inl stream_filter_map_tokio forall t u v.
00:06:42 v #7586 > >     (fn : u -> optionm'.option' v)
00:06:42 v #7587 > >     (stream : t)
00:06:42 v #7588 > >     : infer' v
00:06:42 v #7589 > >     =
00:06:42 v #7590 > >     inl fn = join fn
00:06:42 v #7591 > >     !\($'"tokio_stream::StreamExt::filter_map(!stream, |x| !fn(x))"')
00:06:42 v #7592 > >
00:06:42 v #7593 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:42 v #7594 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:06:42 v #7595 > > │ ### stream_filter_map_futures                                                │
00:06:42 v #7596 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:06:42 v #7597 > >
00:06:42 v #7598 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:42 v #7599 > > inl stream_filter_map_futures forall t u v.
00:06:42 v #7600 > >     (fn : u -> optionm'.option' v)
00:06:42 v #7601 > >     (stream : t)
00:06:42 v #7602 > >     : infer' v
00:06:42 v #7603 > >     =
00:06:42 v #7604 > >     inl fn = join fn
00:06:42 v #7605 > >     !\($'"futures::stream::StreamExt::filter_map(!stream, |x| async { !fn(x)
00:06:42 v #7606 > > })"')
00:06:43 v #7607 > >
00:06:43 v #7608 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:43 v #7609 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:06:43 v #7610 > > │ ### spawn_tokio                                                              │
00:06:43 v #7611 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:06:43 v #7612 > >
00:06:43 v #7613 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:43 v #7614 > > inl spawn_tokio forall t. (fn : future_pin_send t) : join_handle_tokio t =
00:06:43 v #7615 > >     !\($'"tokio::runtime::spawn(!fn)"')
00:06:43 v #7616 > >
00:06:43 v #7617 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:43 v #7618 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:06:43 v #7619 > > │ ### try_join_all                                                             │
00:06:43 v #7620 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:06:43 v #7621 > >
00:06:43 v #7622 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:43 v #7623 > > nominal try_join_all t =
00:06:43 v #7624 > >     `(
00:06:43 v #7625 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:06:43 v #7626 > > Fable.Core.Emit(\"futures::future::TryJoinAll<$0>\")>]]\n#endif\ntype
00:06:43 v #7627 > > futures_future_TryJoinAll<'T> = class end"
00:06:43 v #7628 > >         $'' : $'futures_future_TryJoinAll<`t>'
00:06:43 v #7629 > >     )
00:06:43 v #7630 > >
00:06:43 v #7631 > > inl try_join_all forall t. (x : am'.vec (future_pin (resultm.result' t
00:06:43 v #7632 > > sm'.std_string))) : try_join_all (future_pin (resultm.result' t sm'.std_string))
00:06:43 v #7633 > > =
00:06:43 v #7634 > >     inl x = join x
00:06:43 v #7635 > >     !\($'"futures::future::try_join_all(!x)"')
00:06:44 v #7636 > >
00:06:44 v #7637 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:44 v #7638 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:06:44 v #7639 > > │ ### fuse_tokio                                                               │
00:06:44 v #7640 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:06:44 v #7641 > >
00:06:44 v #7642 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:44 v #7643 > > nominal fuse_tokio t =
00:06:44 v #7644 > >     `(
00:06:44 v #7645 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:06:44 v #7646 > > Fable.Core.Emit(\"tokio::prelude::stream::Fuse<$0>\")>]]\n#endif\ntype
00:06:44 v #7647 > > tokio_prelude_stream_Fuse<'T> = class end"
00:06:44 v #7648 > >         $'' : $'tokio_prelude_stream_Fuse<`t>'
00:06:44 v #7649 > >     )
00:06:44 v #7650 > >
00:06:44 v #7651 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:44 v #7652 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:06:44 v #7653 > > │ ### fuse'                                                                    │
00:06:44 v #7654 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:06:44 v #7655 > >
00:06:44 v #7656 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:44 v #7657 > > type fuse' t = fuse_tokio t
00:06:44 v #7658 > >
00:06:44 v #7659 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:44 v #7660 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:06:44 v #7661 > > │ ### future_fuse                                                              │
00:06:44 v #7662 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:06:44 v #7663 > >
00:06:44 v #7664 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:44 v #7665 > > inl future_fuse forall t. (x : future_pin t) : fuse' (future_pin t) =
00:06:44 v #7666 > >     !\($'"futures::future::FutureExt::fuse(!x)"')
00:06:45 v #7667 > >
00:06:45 v #7668 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:45 v #7669 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:06:45 v #7670 > > │ ### join_all                                                                 │
00:06:45 v #7671 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:06:45 v #7672 > >
00:06:45 v #7673 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:45 v #7674 > > nominal join_all t =
00:06:45 v #7675 > >     `(
00:06:45 v #7676 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:06:45 v #7677 > > Fable.Core.Emit(\"futures::future::JoinAll<$0>\")>]]\n#endif\ntype
00:06:45 v #7678 > > futures_future_JoinAll<'T> = class end"
00:06:45 v #7679 > >         $'' : $'futures_future_JoinAll<`t>'
00:06:45 v #7680 > >     )
00:06:45 v #7681 > >
00:06:45 v #7682 > > inl join_all forall t. (x : am'.vec (future_pin t)) : join_all (future_pin t) =
00:06:45 v #7683 > >     inl x = join x
00:06:45 v #7684 > >     !\($'"futures::future::join_all(!x)"')
00:06:45 v #7685 > >
00:06:45 v #7686 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:45 v #7687 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:06:45 v #7688 > > │ ### join_all_send                                                            │
00:06:45 v #7689 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:06:45 v #7690 > >
00:06:45 v #7691 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:45 v #7692 > > inl join_all_send forall t. (x : am'.vec (future_pin_send t)) : join_all
00:06:45 v #7693 > > (future_pin_send t) =
00:06:45 v #7694 > >     inl x = join x
00:06:45 v #7695 > >     !\($'"futures::future::join_all(!x)"')
00:06:46 v #7696 > >
00:06:46 v #7697 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:46 v #7698 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:06:46 v #7699 > > │ ### join_handle'                                                             │
00:06:46 v #7700 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:06:46 v #7701 > >
00:06:46 v #7702 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:46 v #7703 > > type join_handle' t = join_handle_tokio t
00:06:46 v #7704 > >
00:06:46 v #7705 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:46 v #7706 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:06:46 v #7707 > > │ ### await_handle                                                             │
00:06:46 v #7708 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:06:46 v #7709 > >
00:06:46 v #7710 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:46 v #7711 > > inl await_handle forall t. (x : join_handle' t) : t =
00:06:46 v #7712 > >     !\($'"!x.await"')
00:06:47 v #7713 > >
00:06:47 v #7714 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:47 v #7715 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:06:47 v #7716 > > │ ### await_all                                                                │
00:06:47 v #7717 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:06:47 v #7718 > >
00:06:47 v #7719 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:47 v #7720 > > inl await_all forall t. (x : join_all (future_pin t)) : am'.vec t =
00:06:47 v #7721 > >     !\($'"!x.await"')
00:06:47 v #7722 > >
00:06:47 v #7723 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:47 v #7724 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:06:47 v #7725 > > │ ### await_all_send                                                           │
00:06:47 v #7726 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:06:47 v #7727 > >
00:06:47 v #7728 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:47 v #7729 > > inl await_all_send forall t. (x : join_all (future_pin_send t)) : am'.vec t =
00:06:47 v #7730 > >     !\($'"!x.await"')
00:06:47 v #7731 > >
00:06:47 v #7732 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:47 v #7733 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:06:47 v #7734 > > │ ### try_await_all                                                            │
00:06:47 v #7735 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:06:47 v #7736 > >
00:06:47 v #7737 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:47 v #7738 > > inl try_await_all forall t. (x : try_join_all (future_pin (resultm.result' t
00:06:47 v #7739 > > sm'.std_string))) : resultm.result' (am'.vec t) sm'.std_string =
00:06:47 v #7740 > >     !\($'"!x.await"')
00:06:48 v #7741 > >
00:06:48 v #7742 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:48 v #7743 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:06:48 v #7744 > > │ ### try_await_all_send                                                       │
00:06:48 v #7745 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:06:48 v #7746 > >
00:06:48 v #7747 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:48 v #7748 > > inl try_await_all_send forall t. (x : try_join_all (future_pin_send
00:06:48 v #7749 > > (resultm.result' t sm'.std_string))) : resultm.result' (am'.vec t)
00:06:48 v #7750 > > sm'.std_string =
00:06:48 v #7751 > >     !\($'"!x.await"')
00:06:48 v #7752 > >
00:06:48 v #7753 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:48 v #7754 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:06:48 v #7755 > > │ ### await                                                                    │
00:06:48 v #7756 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:06:48 v #7757 > >
00:06:48 v #7758 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:48 v #7759 > > inl await forall t. (x : future_pin t) : t =
00:06:48 v #7760 > >     !\($'"!x.await"')
00:06:49 v #7761 > >
00:06:49 v #7762 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:49 v #7763 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:06:49 v #7764 > > │ ### await                                                                    │
00:06:49 v #7765 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:06:49 v #7766 > >
00:06:49 v #7767 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:49 v #7768 > > inl await_send forall t. (x : future_pin_send t) : t =
00:06:49 v #7769 > >     !\($'"!x.await"')
00:06:49 v #7770 > >
00:06:49 v #7771 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:49 v #7772 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:06:49 v #7773 > > │ ### into_iter                                                                │
00:06:49 v #7774 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:06:49 v #7775 > >
00:06:49 v #7776 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:49 v #7777 > > nominal into_iter t =
00:06:49 v #7778 > >     `(
00:06:49 v #7779 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:06:49 v #7780 > > Fable.Core.Emit(\"rayon::vec::IntoIter<$0>\")>]]\n#endif\ntype
00:06:49 v #7781 > > rayon_vec_IntoIter<'T> = class end"
00:06:49 v #7782 > >         $'' : $'rayon_vec_IntoIter<`t>'
00:06:49 v #7783 > >     )
00:06:49 v #7784 > >
00:06:49 v #7785 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:49 v #7786 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:06:49 v #7787 > > │ ### into_par_iter                                                            │
00:06:49 v #7788 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:06:49 v #7789 > >
00:06:49 v #7790 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:49 v #7791 > > inl into_par_iter forall t. (x : am'.vec t) : into_iter t =
00:06:49 v #7792 > >     !\\(x, $'"rayon::iter::IntoParallelIterator::into_par_iter($0)"')
00:06:50 v #7793 > >
00:06:50 v #7794 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:50 v #7795 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:06:50 v #7796 > > │ ### par_iter                                                                 │
00:06:50 v #7797 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:06:50 v #7798 > >
00:06:50 v #7799 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:50 v #7800 > > inl par_iter forall t. (x : am'.vec t) : into_iter t =
00:06:50 v #7801 > >     !\($'"rayon::iter::IntoParallelIterator::par_iter(!x)"')
00:06:50 v #7802 > >
00:06:50 v #7803 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:50 v #7804 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:06:50 v #7805 > > │ ### iter_map                                                                 │
00:06:50 v #7806 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:06:50 v #7807 > >
00:06:50 v #7808 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:50 v #7809 > > nominal iter_map t u =
00:06:50 v #7810 > >     `(
00:06:50 v #7811 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:06:50 v #7812 > > Fable.Core.Emit(\"rayon::iter::Map<$0, _>\")>]]\n#endif\ntype rayon_iter_Map<'T>
00:06:50 v #7813 > > = class end"
00:06:50 v #7814 > >         $'' : $'rayon_iter_Map<`t>'
00:06:50 v #7815 > >     )
00:06:51 v #7816 > >
00:06:51 v #7817 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:51 v #7818 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:06:51 v #7819 > > │ ### par_map                                                                  │
00:06:51 v #7820 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:06:51 v #7821 > >
00:06:51 v #7822 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:51 v #7823 > > inl par_map forall t u. (fn : t -> u) (ar : into_iter t) : iter_map (into_iter
00:06:51 v #7824 > > t) u =
00:06:51 v #7825 > >     !\\((ar, fn), $'"rayon::iter::ParallelIterator::map($0, |x| $1(x))"')
00:06:51 v #7826 > >
00:06:51 v #7827 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:51 v #7828 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:06:51 v #7829 > > │ ### par_collect                                                              │
00:06:51 v #7830 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:06:51 v #7831 > >
00:06:51 v #7832 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:51 v #7833 > > inl par_collect forall t u. (iter : iter_map (into_iter t) u) : am'.vec u =
00:06:51 v #7834 > >     !\\(iter, $'"rayon::iter::ParallelIterator::collect($0)"')
00:06:51 v #7835 > >
00:06:51 v #7836 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:51 v #7837 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:06:51 v #7838 > > │ ### try_join_all_iter                                                        │
00:06:51 v #7839 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:06:51 v #7840 > >
00:06:51 v #7841 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:51 v #7842 > > inl try_join_all_iter forall t. (x : am'.vec (future_pin_send (resultm.result' t
00:06:51 v #7843 > > sm'.std_string))) : try_join_all (future_pin_send (resultm.result' t
00:06:51 v #7844 > > sm'.std_string)) =
00:06:51 v #7845 > >     inl x = join x
00:06:51 v #7846 > >     !\($'"futures::future::try_join_all(!x)"')
00:06:52 v #7847 > >
00:06:52 v #7848 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:52 v #7849 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:06:52 v #7850 > > │ ### future_init                                                              │
00:06:52 v #7851 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:06:52 v #7852 > >
00:06:52 v #7853 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:52 v #7854 > > inl future_init forall t. (move : bool) (x : () -> t) : infer' t =
00:06:52 v #7855 > >     if move
00:06:52 v #7856 > >     then (!\($'"true; let __future_init = Box::pin(async move { //"') : bool) |>
00:06:52 v #7857 > > ignore
00:06:52 v #7858 > >     else (!\($'"true; let __future_init = Box::pin(async { //"') : bool) |>
00:06:52 v #7859 > > ignore
00:06:52 v #7860 > >
00:06:52 v #7861 > >     inl is_unit : bool =
00:06:52 v #7862 > >         real
00:06:52 v #7863 > >             typecase t with
00:06:52 v #7864 > >             | () => true
00:06:52 v #7865 > >             | _ => false
00:06:52 v #7866 > >
00:06:52 v #7867 > >     inl x' = x ()
00:06:52 v #7868 > >     inl x' = join x'
00:06:52 v #7869 > >
00:06:52 v #7870 > >     inl depth =
00:06:52 v #7871 > >         if is_unit
00:06:52 v #7872 > >         then 2, 1
00:06:52 v #7873 > >         else 1, 0
00:06:52 v #7874 > >
00:06:52 v #7875 > >     x' |> rust.fix_closure depth
00:06:52 v #7876 > >
00:06:52 v #7877 > >     !\($'"__future_init"')
00:06:52 v #7878 > >
00:06:52 v #7879 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:52 v #7880 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:06:52 v #7881 > > │ ### new_future                                                               │
00:06:52 v #7882 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:06:52 v #7883 > >
00:06:52 v #7884 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:52 v #7885 > > inl new_future forall t. (x : () -> t) : future_pin t =
00:06:52 v #7886 > >     inl result = future_init false x
00:06:52 v #7887 > >     !\($'"!result"')
00:06:53 v #7888 > >
00:06:53 v #7889 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:53 v #7890 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:06:53 v #7891 > > │ ### new_future_move                                                          │
00:06:53 v #7892 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:06:53 v #7893 > >
00:06:53 v #7894 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:53 v #7895 > > inl new_future_move forall t. (x : () -> t) : future_pin t =
00:06:53 v #7896 > >     inl result = future_init true x
00:06:53 v #7897 > >     !\($'"!result"')
00:06:53 v #7898 > >
00:06:53 v #7899 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:53 v #7900 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:06:53 v #7901 > > │ ### new_future_send                                                          │
00:06:53 v #7902 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:06:53 v #7903 > >
00:06:53 v #7904 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:53 v #7905 > > inl new_future_send forall t. (x : () -> t) : future_pin_send t =
00:06:53 v #7906 > >     inl result = future_init false x
00:06:53 v #7907 > >     !\($'"!result"')
00:06:53 v #7908 > >
00:06:53 v #7909 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:53 v #7910 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:06:53 v #7911 > > │ ### new_future_move_send                                                     │
00:06:53 v #7912 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:06:53 v #7913 > >
00:06:53 v #7914 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:53 v #7915 > > inl new_future_move_send forall t. (x : () -> t) : future_pin_send t =
00:06:53 v #7916 > >     inl result = future_init true x
00:06:53 v #7917 > >     !\($'"!result"')
00:06:54 v #7918 > >
00:06:54 v #7919 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:54 v #7920 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:06:54 v #7921 > > │ ## fsharp                                                                    │
00:06:54 v #7922 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:06:54 v #7923 > >
00:06:54 v #7924 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:54 v #7925 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:06:54 v #7926 > > │ ### async                                                                    │
00:06:54 v #7927 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:06:54 v #7928 > >
00:06:54 v #7929 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:54 v #7930 > > nominal async t = $'Async<`t>'
00:06:54 v #7931 > >
00:06:54 v #7932 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:54 v #7933 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:06:54 v #7934 > > │ ### task                                                                     │
00:06:54 v #7935 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:06:54 v #7936 > >
00:06:54 v #7937 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:54 v #7938 > > nominal task t =
00:06:54 v #7939 > >     `(
00:06:54 v #7940 > >         typecase t with
00:06:54 v #7941 > >         | () => $'' : $'System.Threading.Tasks.Task'
00:06:54 v #7942 > >         | _ => $'' : $'System.Threading.Tasks.Task<`t>'
00:06:54 v #7943 > >     )
00:06:55 v #7944 > >
00:06:55 v #7945 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:55 v #7946 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:06:55 v #7947 > > │ ### new_async_unit                                                           │
00:06:55 v #7948 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:06:55 v #7949 > >
00:06:55 v #7950 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:55 v #7951 > > inl new_async_unit forall t. (fn : () -> ()) : async t =
00:06:55 v #7952 > >     run_target_args' fn function
00:06:55 v #7953 > >         | Fsharp _
00:06:55 v #7954 > >         // | Rust _
00:06:55 v #7955 > >         | TypeScript _
00:06:55 v #7956 > >         | Python _ => fun fn =>
00:06:55 v #7957 > >             fun () =>
00:06:55 v #7958 > >                 $'async {'
00:06:55 v #7959 > >                 fun () =>
00:06:55 v #7960 > >                     fn ()
00:06:55 v #7961 > >                     real
00:06:55 v #7962 > >                         typecase t with
00:06:55 v #7963 > >                         | () => $'()' : ()
00:06:55 v #7964 > >                         | _ => ()
00:06:55 v #7965 > >                 |> indent
00:06:55 v #7966 > >                 $'}' : ()
00:06:55 v #7967 > >             |> let'
00:06:55 v #7968 > >         | _ => fun _ => null ()
00:06:55 v #7969 > >
00:06:55 v #7970 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:55 v #7971 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:06:55 v #7972 > > │ ### new_async                                                                │
00:06:55 v #7973 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:06:55 v #7974 > >
00:06:55 v #7975 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:55 v #7976 > > inl new_async forall t. (fn : () -> t) : async t =
00:06:55 v #7977 > >     new_async_unit (fn >> ignore)
00:06:55 v #7978 > >
00:06:55 v #7979 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:55 v #7980 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:06:55 v #7981 > > │ ### new_task                                                                 │
00:06:55 v #7982 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:06:55 v #7983 > >
00:06:55 v #7984 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:55 v #7985 > > inl new_task forall t. (fn : () -> t) : task t =
00:06:55 v #7986 > >     run_target_args' fn function
00:06:55 v #7987 > >         | Fsharp _ => fun fn =>
00:06:55 v #7988 > >             inl result : optionm'.option' (task t) = optionm'.none' ()
00:06:55 v #7989 > >             $'let mutable _!result = !result '
00:06:55 v #7990 > >             $'task {'
00:06:55 v #7991 > >             fn () |> ignore
00:06:55 v #7992 > >             $'}'
00:06:55 v #7993 > >             $'|> fun x -> _!result <- Some x'
00:06:55 v #7994 > >             $'match _!result with Some x -> x | None -> failwith "async.new_task
00:06:55 v #7995 > > / _!result=None"'
00:06:55 v #7996 > >         | _ => fun _ => null ()
00:06:56 v #7997 > >
00:06:56 v #7998 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:56 v #7999 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:06:56 v #8000 > > │ ### await_task                                                               │
00:06:56 v #8001 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:06:56 v #8002 > >
00:06:56 v #8003 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:56 v #8004 > > inl await_task forall t. (a : task t) : async t =
00:06:56 v #8005 > >     run_target function
00:06:56 v #8006 > >         | Fsharp _
00:06:56 v #8007 > >         | Rust _
00:06:56 v #8008 > >         | TypeScript _
00:06:56 v #8009 > >         | Python _ => fun () =>
00:06:56 v #8010 > >             a |> $'Async.AwaitTask'
00:06:56 v #8011 > >         | _ => fun () => null ()
00:06:56 v #8012 > >
00:06:56 v #8013 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:56 v #8014 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:06:56 v #8015 > > │ ### ignore                                                                   │
00:06:56 v #8016 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:06:56 v #8017 > >
00:06:56 v #8018 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:56 v #8019 > > inl ignore forall t. (a : async t) : async () =
00:06:56 v #8020 > >     run_target function
00:06:56 v #8021 > >         | Fsharp _
00:06:56 v #8022 > >         // | Rust _
00:06:56 v #8023 > >         | TypeScript _
00:06:56 v #8024 > >         | Python _ => fun () =>
00:06:56 v #8025 > >             a |> $'Async.Ignore'
00:06:56 v #8026 > >         | _ => fun () => null ()
00:06:57 v #8027 > >
00:06:57 v #8028 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:57 v #8029 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:06:57 v #8030 > > │ ### run_synchronously                                                        │
00:06:57 v #8031 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:06:57 v #8032 > >
00:06:57 v #8033 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:57 v #8034 > > inl run_synchronously forall t. (a : async t) : t =
00:06:57 v #8035 > >     run_target function
00:06:57 v #8036 > >         | Fsharp _
00:06:57 v #8037 > >         // | Rust _
00:06:57 v #8038 > >         | Python _ => fun () =>
00:06:57 v #8039 > >             a |> $'Async.RunSynchronously'
00:06:57 v #8040 > >         | _ => fun () => null ()
00:06:57 v #8041 > >
00:06:57 v #8042 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:57 v #8043 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:06:57 v #8044 > > │ ### start                                                                    │
00:06:57 v #8045 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:06:57 v #8046 > >
00:06:57 v #8047 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:57 v #8048 > > inl start (a : async ()) : () =
00:06:57 v #8049 > >     run_target function
00:06:57 v #8050 > >         | Fsharp _
00:06:57 v #8051 > >         | Rust _
00:06:57 v #8052 > >         | TypeScript _
00:06:57 v #8053 > >         | Python _ => fun () =>
00:06:57 v #8054 > >             a |> $'Async.Start'
00:06:57 v #8055 > >         | _ => fun () => null ()
00:06:57 v #8056 > >
00:06:57 v #8057 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:57 v #8058 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:06:57 v #8059 > > │ ### start_child                                                              │
00:06:57 v #8060 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:06:57 v #8061 > >
00:06:57 v #8062 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:57 v #8063 > > inl start_child forall t. (a : async t) : async (async t) =
00:06:57 v #8064 > >     run_target function
00:06:57 v #8065 > >         | Fsharp _
00:06:57 v #8066 > >         | Rust _
00:06:57 v #8067 > >         | TypeScript _
00:06:57 v #8068 > >         | Python _ => fun () =>
00:06:57 v #8069 > >             a |> $'Async.StartChild'
00:06:57 v #8070 > >         | _ => fun () => null ()
00:06:58 v #8071 > >
00:06:58 v #8072 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:58 v #8073 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:06:58 v #8074 > > │ ### start_child_timeout                                                      │
00:06:58 v #8075 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:06:58 v #8076 > >
00:06:58 v #8077 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:58 v #8078 > > inl start_child_timeout forall t. (timeout : i32) (a : async t) : async (async
00:06:58 v #8079 > > t) =
00:06:58 v #8080 > >     run_target function
00:06:58 v #8081 > >         | Fsharp _
00:06:58 v #8082 > >         | Rust _
00:06:58 v #8083 > >         | TypeScript _
00:06:58 v #8084 > >         | Python _ => fun () =>
00:06:58 v #8085 > >             $'Async.StartChild (!a, !timeout)'
00:06:58 v #8086 > >         | _ => fun () => null ()
00:06:58 v #8087 > >
00:06:58 v #8088 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:58 v #8089 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:06:58 v #8090 > > │ ### start_immediate                                                          │
00:06:58 v #8091 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:06:58 v #8092 > >
00:06:58 v #8093 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:58 v #8094 > > inl start_immediate forall t. (a : async t) : () =
00:06:58 v #8095 > >     run_target function
00:06:58 v #8096 > >         | Fsharp _
00:06:58 v #8097 > >         // | Rust _
00:06:58 v #8098 > >         | TypeScript _
00:06:58 v #8099 > >         | Python _ => fun () =>
00:06:58 v #8100 > >             a |> $'Async.StartImmediate'
00:06:58 v #8101 > >         | _ => fun () => null ()
00:06:59 v #8102 > >
00:06:59 v #8103 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:59 v #8104 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:06:59 v #8105 > > │ ### start_with_continuations                                                 │
00:06:59 v #8106 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:06:59 v #8107 > >
00:06:59 v #8108 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:59 v #8109 > > inl start_with_continuations forall t. (a : async t) : () =
00:06:59 v #8110 > >     run_target_args' a function
00:06:59 v #8111 > >         | Fsharp _
00:06:59 v #8112 > >         | Rust _
00:06:59 v #8113 > >         | TypeScript _
00:06:59 v #8114 > >         | Python _ => fun a =>
00:06:59 v #8115 > >             $'Async.StartWithContinuations (!a, ignore, ignore, ignore)'
00:06:59 v #8116 > >         | _ => fun _ => null ()
00:06:59 v #8117 > >
00:06:59 v #8118 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:59 v #8119 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:06:59 v #8120 > > │ ### task_canceled_exception                                                  │
00:06:59 v #8121 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:06:59 v #8122 > >
00:06:59 v #8123 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:59 v #8124 > > nominal task_canceled_exception =
00:06:59 v #8125 > > $'System.Threading.Tasks.TaskCanceledException'
00:06:59 v #8126 > >
00:06:59 v #8127 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:59 v #8128 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:06:59 v #8129 > > │ ### sleep                                                                    │
00:06:59 v #8130 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:06:59 v #8131 > >
00:06:59 v #8132 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:59 v #8133 > > inl sleep (ms : i32) : async () =
00:06:59 v #8134 > >     run_target function
00:06:59 v #8135 > >         | Fsharp _
00:06:59 v #8136 > >         | Rust _
00:06:59 v #8137 > >         | TypeScript _
00:06:59 v #8138 > >         | Python _ => fun () =>
00:06:59 v #8139 > >             ms |> $'Async.Sleep'
00:06:59 v #8140 > >         | _ => fun () => null ()
00:07:00 v #8141 > >
00:07:00 v #8142 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:00 v #8143 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:00 v #8144 > > │ ### do                                                                       │
00:07:00 v #8145 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:00 v #8146 > >
00:07:00 v #8147 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:00 v #8148 > > inl do (a : async ()) : () =
00:07:00 v #8149 > >     $'do\! !a '
00:07:00 v #8150 > >
00:07:00 v #8151 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:00 v #8152 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:00 v #8153 > > │ ### let'                                                                     │
00:07:00 v #8154 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:00 v #8155 > >
00:07:00 v #8156 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:00 v #8157 > > inl let' forall t. (a : async t) : t =
00:07:00 v #8158 > >     $'let\! !a = !a '
00:07:00 v #8159 > >     $'!a '
00:07:01 v #8160 > >
00:07:01 v #8161 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:01 v #8162 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:01 v #8163 > > │ ### return_await                                                             │
00:07:01 v #8164 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:01 v #8165 > >
00:07:01 v #8166 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:01 v #8167 > > inl return_await forall t. (a : async t) : () =
00:07:01 v #8168 > >     $'return\! !a '
00:07:01 v #8169 > >
00:07:01 v #8170 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:01 v #8171 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:01 v #8172 > > │ ### return_await'                                                            │
00:07:01 v #8173 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:01 v #8174 > >
00:07:01 v #8175 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:01 v #8176 > > inl return_await' forall t. (a : async t) : t =
00:07:01 v #8177 > >     $'return\! !a '
00:07:01 v #8178 > >
00:07:01 v #8179 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:01 v #8180 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:01 v #8181 > > │ ### map                                                                      │
00:07:01 v #8182 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:01 v #8183 > >
00:07:01 v #8184 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:01 v #8185 > > inl map forall t u. (fn : t -> u) (a : async t) : async u =
00:07:01 v #8186 > >     fun () =>
00:07:01 v #8187 > >         inl x = a |> let'
00:07:01 v #8188 > >         fn x |> return
00:07:01 v #8189 > >     |> new_async_unit
00:07:02 v #8190 > >
00:07:02 v #8191 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:02 v #8192 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:02 v #8193 > > │ ### catch'                                                                   │
00:07:02 v #8194 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:02 v #8195 > >
00:07:02 v #8196 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:02 v #8197 > > inl catch' forall t e. (a : async t) : async (choice2' t e) =
00:07:02 v #8198 > >     run_target function
00:07:02 v #8199 > >         | Fsharp _
00:07:02 v #8200 > >         | Rust _
00:07:02 v #8201 > >         | TypeScript _
00:07:02 v #8202 > >         | Python _ => fun () =>
00:07:02 v #8203 > >             a |> $'Async.Catch'
00:07:02 v #8204 > >         | _ => fun () => null ()
00:07:02 v #8205 > >
00:07:02 v #8206 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:02 v #8207 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:02 v #8208 > > │ ### catch                                                                    │
00:07:02 v #8209 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:02 v #8210 > >
00:07:02 v #8211 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:02 v #8212 > > inl catch forall t e. (a : async t) : async (result t e) =
00:07:02 v #8213 > >     a
00:07:02 v #8214 > >     |> catch'
00:07:02 v #8215 > >     |> map choice2_unbox
00:07:02 v #8216 > >     |> map function
00:07:02 v #8217 > >         | C1of2 result => Ok result
00:07:02 v #8218 > >         | C2of2 ex => Error ex
00:07:03 v #8219 > >
00:07:03 v #8220 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:03 v #8221 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:03 v #8222 > > │ ### run_with_timeout_async                                                   │
00:07:03 v #8223 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:03 v #8224 > >
00:07:03 v #8225 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:03 v #8226 > > let run_with_timeout_async forall t. (timeout : i32) (fn : async t) : async
00:07:03 v #8227 > > (option t) =
00:07:03 v #8228 > >     run_target function
00:07:03 v #8229 > >         | Fsharp _
00:07:03 v #8230 > >         | Rust _
00:07:03 v #8231 > >         | TypeScript _
00:07:03 v #8232 > >         | Python _ => fun () =>
00:07:03 v #8233 > >             fun () =>
00:07:03 v #8234 > >                 inl child = fn |> start_child_timeout timeout |> let'
00:07:03 v #8235 > >                 child
00:07:03 v #8236 > >                 |> catch
00:07:03 v #8237 > >                 |> map function
00:07:03 v #8238 > >                     | Ok result => Some result
00:07:03 v #8239 > >                     | Error ex when ex |> sm'.format_debug |> sm'.contains
00:07:03 v #8240 > > "System.TimeoutException" =>
00:07:03 v #8241 > >                         trace Verbose
00:07:03 v #8242 > >                             fun () => "async.run_with_timeout_async"
00:07:03 v #8243 > >                             fun () => { timeout }
00:07:03 v #8244 > >                         None
00:07:03 v #8245 > >                     | Error (ex : exn) =>
00:07:03 v #8246 > >                         trace Critical
00:07:03 v #8247 > >                             fun () => "async.run_with_timeout_async**"
00:07:03 v #8248 > >                             fun () => { timeout ex = ex |> sm'.format_exception
00:07:03 v #8249 > > }
00:07:03 v #8250 > >                         None
00:07:03 v #8251 > >                 |> return_await
00:07:03 v #8252 > >             |> new_async_unit
00:07:03 v #8253 > >         | _ => fun () => null ()
00:07:03 v #8254 > >
00:07:03 v #8255 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:03 v #8256 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:03 v #8257 > > │ ### run_with_timeout                                                         │
00:07:03 v #8258 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:03 v #8259 > >
00:07:03 v #8260 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:03 v #8261 > > inl run_with_timeout timeout fn =
00:07:03 v #8262 > >     fn
00:07:03 v #8263 > >     |> run_with_timeout_async timeout
00:07:03 v #8264 > >     |> run_synchronously
00:07:04 v #8265 > >
00:07:04 v #8266 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:04 v #8267 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:04 v #8268 > > │ ### cancellation_token                                                       │
00:07:04 v #8269 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:04 v #8270 > >
00:07:04 v #8271 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:04 v #8272 > > inl cancellation_token () : async threading.cancellation_token =
00:07:04 v #8273 > >     $'Async.CancellationToken'
00:07:04 v #8274 > >
00:07:04 v #8275 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:04 v #8276 > > inl default_cancellation_token () : threading.cancellation_token =
00:07:04 v #8277 > >     $'Async.DefaultCancellationToken'
00:07:04 v #8278 > >
00:07:04 v #8279 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:04 v #8280 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:04 v #8281 > > │ ### merge_cancellation_token_with_default_async                              │
00:07:04 v #8282 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:04 v #8283 > >
00:07:04 v #8284 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:04 v #8285 > > inl merge_cancellation_token_with_default_async
00:07:04 v #8286 > >     (token : threading.cancellation_token)
00:07:04 v #8287 > >     : async threading.cancellation_token
00:07:04 v #8288 > >     =
00:07:04 v #8289 > >     run_target function
00:07:04 v #8290 > >         | Fsharp (Native) => fun () =>
00:07:04 v #8291 > >             fun () =>
00:07:04 v #8292 > >                 inl ct = cancellation_token () |> let'
00:07:04 v #8293 > >                 inl dct = default_cancellation_token ()
00:07:04 v #8294 > >                 inl cts = threading.create_linked_token_source ;[[ ct; dct;
00:07:04 v #8295 > > token ]]
00:07:04 v #8296 > >                 cts |> threading.cancellation_source_token |> return
00:07:04 v #8297 > >             |> new_async_unit
00:07:04 v #8298 > >         | _ => fun () => null ()
00:07:05 v #8299 > >
00:07:05 v #8300 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:05 v #8301 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:05 v #8302 > > │ ### with_trace_level                                                         │
00:07:05 v #8303 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:05 v #8304 > >
00:07:05 v #8305 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:05 v #8306 > > inl with_trace_level forall t. level fn : _ t = new_async fun () =>
00:07:05 v #8307 > >     inl trace_state = get_trace_state_or_init None
00:07:05 v #8308 > >     inl old_trace_level = *trace_state.level
00:07:05 v #8309 > >     inl trace_level = trace_state.level
00:07:05 v #8310 > >     try_finally
00:07:05 v #8311 > >         fun () =>
00:07:05 v #8312 > >             trace_level <- level
00:07:05 v #8313 > >             fn |> return_await
00:07:05 v #8314 > >         fun () =>
00:07:05 v #8315 > >             trace_level <- old_trace_level
00:07:05 v #8316 > >
00:07:05 v #8317 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:05 v #8318 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:05 v #8319 > > │ ### value_task                                                               │
00:07:05 v #8320 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:05 v #8321 > >
00:07:05 v #8322 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:05 v #8323 > > nominal value_task = $'System.Threading.Tasks.ValueTask'
00:07:06 v #8324 > >
00:07:06 v #8325 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:06 v #8326 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:06 v #8327 > > │ ### value_task_as_task                                                       │
00:07:06 v #8328 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:06 v #8329 > >
00:07:06 v #8330 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:06 v #8331 > > inl value_task_as_task (task : value_task) : task () =
00:07:06 v #8332 > >     run_target function
00:07:06 v #8333 > >         | Fsharp (Native) => fun () => $'!task.AsTask' ()
00:07:06 v #8334 > >         | _ => fun () => null ()
00:07:06 v #8335 > >
00:07:06 v #8336 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:06 v #8337 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:06 v #8338 > > │ ### await_value_task_unit                                                    │
00:07:06 v #8339 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:06 v #8340 > >
00:07:06 v #8341 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:06 v #8342 > > inl await_value_task_unit (task : value_task) : async () =
00:07:06 v #8343 > >     task |> value_task_as_task |> await_task
00:07:06 v #8344 > >
00:07:06 v #8345 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:06 v #8346 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:06 v #8347 > > │ ## main                                                                      │
00:07:06 v #8348 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:06 v #8349 > >
00:07:06 v #8350 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:06 v #8351 > > inl main () =
00:07:06 v #8352 > >     $'let merge_cancellation_token_with_default_async x =
00:07:06 v #8353 > > !merge_cancellation_token_with_default_async x' : ()
00:07:08 v #8354 > 00:00:37 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 45176 }
00:07:08 v #8355 > 00:00:37 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/polyglot/lib/spiral/async.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/polyglot/lib/spiral/async.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:07:09 v #8356 > 00:00:38 v #5 ! [NbConvertApp] Converting notebook c:/home/git/polyglot/lib/spiral/async.dib.ipynb to html
00:07:09 v #8357 > 00:00:38 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:07:09 v #8358 > 00:00:38 v #7 !   validate(nb)
00:07:09 v #8359 > 00:00:39 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:07:09 v #8360 > 00:00:39 v #9 !   return _pygments_highlight(
00:07:10 v #8361 > 00:00:40 v #10 ! [NbConvertApp] Writing 416230 bytes to c:\home\git\polyglot\lib\spiral\async.dib.html
00:07:10 v #8362 > 00:00:40 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 852 }
00:07:10 v #8363 > 00:00:40 d #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 852 }
00:07:10 v #8364 > 00:00:40 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/async.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/async.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:07:11 v #8365 > 00:00:40 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:07:11 v #8366 > 00:00:40 d #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:07:11 v #8367 > 00:00:40 d #16 spiral_builder.run / dib / { exit_code = 0; result_length = 46087 }
00:07:11 d #8368 runtime.execute_with_options_async / { exit_code = 0; output_length = 50523 }
00:07:11 d #11 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder.exe dib --path async.dib --retries 3
00:07:11 d #8369 runtime.execute_with_options_async / { file_name = ../../workspace/target/release/spiral_builder.exe; arguments = US5_0 "dib --path runtime.dib --retries 3"; options = { command = ../../workspace/target/release/spiral_builder.exe dib --path runtime.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:07:11 v #8370 > 00:00:00 d #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "runtime.dib", "--retries", "3"])) }
00:07:11 v #8371 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/polyglot/lib/spiral/runtime.dib", "--output-path", "c:/home/git/polyglot/lib/spiral/runtime.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/polyglot/lib/spiral/runtime.dib" --output-path "c:/home/git/polyglot/lib/spiral/runtime.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:07:13 v #8372 > >
00:07:13 v #8373 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:13 v #8374 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:13 v #8375 > > │ # runtime                                                                    │
00:07:13 v #8376 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:16 v #8377 > >
00:07:16 v #8378 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:16 v #8379 > > open rust
00:07:16 v #8380 > > open rust_operators
00:07:16 v #8381 > > open sm'_operators
00:07:17 v #8382 > >
00:07:17 v #8383 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:17 v #8384 > > //// test
00:07:17 v #8385 > >
00:07:17 v #8386 > > open testing
00:07:17 v #8387 > > open file_system_operators
00:07:17 v #8388 > >
00:07:17 v #8389 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:17 v #8390 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:17 v #8391 > > │ ## runtime                                                                   │
00:07:17 v #8392 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:17 v #8393 > >
00:07:17 v #8394 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:17 v #8395 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:17 v #8396 > > │ ### split_args                                                               │
00:07:17 v #8397 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:17 v #8398 > >
00:07:17 v #8399 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:17 v #8400 > > let split_args (args : string) : result (array_base string) string =
00:07:17 v #8401 > >     open parsing
00:07:17 v #8402 > >     inl esc = [[ '\\'; '`' ]]
00:07:17 v #8403 > >     inl quotes = [[ '"' ]]
00:07:17 v #8404 > >     inl special = esc ++ quotes
00:07:17 v #8405 > >     inl p_esc_char c =
00:07:17 v #8406 > >         p_char c >>. any_char () |>> fun c' => $c +. $c'
00:07:17 v #8407 > >     inl p_word = special |> none_of |>> sm'.obj_to_string
00:07:17 v #8408 > >     inl p_plain = special ++ [[ ' ' ]] |> none_of |> many1_chars
00:07:17 v #8409 > >     inl p_text = p_word |> many1_strings
00:07:17 v #8410 > >     inl p_esc = esc |> listm.map p_esc_char |> choice
00:07:17 v #8411 > >     inl p_quoted = (p_word <|> p_esc) |> many |>> sm'.concat_list ""
00:07:17 v #8412 > >     inl p_quoted_all = p_quoted |> between (p_char '"') (p_char '"')
00:07:17 v #8413 > >     inl p_esc_root = p_esc >>% "" >>. (p_word |> many) |>> sm'.concat_list ""
00:07:17 v #8414 > >     inl p_content = p_plain <|> p_quoted_all <|> p_esc_root
00:07:17 v #8415 > >     inl p_args = spaces1 () |> sep_by p_content
00:07:17 v #8416 > >     args
00:07:17 v #8417 > >     |> parse p_args
00:07:17 v #8418 > >     |> resultm.map (fst >> listm'.box >> listm'.to_array')
00:07:18 v #8419 > >
00:07:18 v #8420 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:18 v #8421 > > //// test
00:07:18 v #8422 > > ///! fsharp
00:07:18 v #8423 > > ///! cuda
00:07:18 v #8424 > > ///! rust
00:07:18 v #8425 > > ///! typescript
00:07:18 v #8426 > > ///! python
00:07:18 v #8427 > >
00:07:18 v #8428 > > [[
00:07:18 v #8429 > >     "a b c",
00:07:18 v #8430 > >     ;[[ "a"; "b"; "c" ]]
00:07:18 v #8431 > >
00:07:18 v #8432 > >     "e f \"g h\" i",
00:07:18 v #8433 > >     ;[[ "e"; "f"; "g h"; "i" ]]
00:07:18 v #8434 > >
00:07:18 v #8435 > >     "\"j k\" \"l\" \"m\"",
00:07:18 v #8436 > >     ;[[ "j k"; "l"; "m" ]]
00:07:18 v #8437 > >
00:07:18 v #8438 > >     "s -t \"u \`\"v\`\" w\"",
00:07:18 v #8439 > >     ;[[ "s"; "-t"; "u \`\"v\`\" w" ]]
00:07:18 v #8440 > >
00:07:18 v #8441 > >     "n -o \"p \\\"q\\\" r\"",
00:07:18 v #8442 > >     ;[[ "n"; "-o"; "p \\\"q\\\" r" ]]
00:07:18 v #8443 > >
00:07:18 v #8444 > >     "r -s \"t \\\"u\\\"\"",
00:07:18 v #8445 > >     ;[[ "r"; "-s"; "t \\\"u\\\"" ]]
00:07:18 v #8446 > >
00:07:18 v #8447 > >     $'"x -y \\\"$z -a \'(b=\\\\\\"c-id=)[[a-fA-F0-9]]{8}\', { \`$_[[1]] + \`$d++
00:07:18 v #8448 > > }\\\""',
00:07:18 v #8449 > >     ;[[ "x"; "-y"; "$z -a '(b=\\\"c-id=)[[a-fA-F0-9]]{8}', { `$_[[1]] + `$d++ }"
00:07:18 v #8450 > > ]]
00:07:18 v #8451 > >
00:07:18 v #8452 > >     "e -f \"$g -h '(i=`\"j-id=)[[a-fA-F0-9]]{8}', { `$_[[1]] + `$k++ }\"",
00:07:18 v #8453 > >     ;[[ "e"; "-f"; "$g -h '(i=`\"j-id=)[[a-fA-F0-9]]{8}', { `$_[[1]] + `$k++ }"
00:07:18 v #8454 > > ]]
00:07:18 v #8455 > >
00:07:18 v #8456 > >     $'"--l \\\\\\"\'\'\' m \'\'\'\\\\\\" "',
00:07:18 v #8457 > >     ;[[ "--l"; "''' m '''" ]]
00:07:18 v #8458 > >
00:07:18 v #8459 > >     $'"n --o --p q --r \\\"s:/t u/v.w\\\" --x \\\"y:/z.a\\\" --b c.d
00:07:18 v #8460 > > \\\"\\\\e{f-g}\\\" h.i \\\"j (k)\\\""',
00:07:18 v #8461 > >     ;[[ "n"; "--o"; "--p"; "q"; "--r"; "s:/t u/v.w"; "--x"; "y:/z.a"; "--b";
00:07:18 v #8462 > > "c.d"; "\\e{f-g}"; "h.i"; "j (k)" ]]
00:07:18 v #8463 > >
00:07:18 v #8464 > >     $'"l \\\"m n:\\\\o.p\\\""',
00:07:18 v #8465 > >     ;[[ "l"; "m n:\\o.p" ]]
00:07:18 v #8466 > > ]]
00:07:18 v #8467 > > |> _assert_fn split_args
00:07:26 v #8468 > >
00:07:26 v #8469 > > ╭─[ 8.14s - return value ]─────────────────────────────────────────────────────╮
00:07:26 v #8470 > > │                                                                              │
00:07:26 v #8471 > > │ .py output (Cuda):                                                           │
00:07:26 v #8472 > > │                                                                              │
00:07:26 v #8473 > > │ 00:00:00 v #1 _assert_fn / { input = a b c }                            │
00:07:26 v #8474 > > │ __assert_eq' / actual: ['a' 'b' 'c'] / expected: ['a' 'b' 'c']               │
00:07:26 v #8475 > > │                                                                              │
00:07:26 v #8476 > > │ 00:00:00 v #2 _assert_fn / { input = e f "g h" i }                      │
00:07:26 v #8477 > > │ __assert_eq' / actual: ['e' 'f' 'g h' 'i'] / expected: ['e' 'f' 'g h' 'i']   │
00:07:26 v #8478 > > │                                                                              │
00:07:26 v #8479 > > │ 00:00:00 v #3 _assert_fn / { input = "j k" "l" "m" }                    │
00:07:26 v #8480 > > │ __assert_eq' / actual: ['j k' 'l' 'm'] / expected: ['j k' 'l' 'm']           │
00:07:26 v #8481 > > │                                                                              │
00:07:26 v #8482 > > │ 00:00:00 v #4 _assert_fn / { input = s -t "u `"v`" w" }                 │
00:07:26 v #8483 > > │ __assert_eq' / actual: ['s' '-t' 'u `"v`" w'] / expected: ['s' '-t' 'u `"v`" │
00:07:26 v #8484 > > │ w']                                                                          │
00:07:26 v #8485 > > │                                                                              │
00:07:26 v #8486 > > │ 00:00:00 v #5 _assert_fn / { input = n -o "p \"q\" r" }                 │
00:07:26 v #8487 > > │ __assert_eq' / actual: ['n' '-o' 'p \\"q\\" r'] / expected: ['n' '-o' 'p     │
00:07:26 v #8488 > > │ \\"q\\" r']                                                                  │
00:07:26 v #8489 > > │                                                                              │
00:07:26 v #8490 > > │ 00:00:00 v #6 _assert_fn / { input = r -s "t \"u\"" }                   │
00:07:26 v #8491 > > │ __assert_eq' / actual: ['r' '-s' 't \\"u\\"'] / expected: ['r' '-s' 't       │
00:07:26 v #8492 > > │ \\"u\\"']                                                                    │
00:07:26 v #8493 > > │                                                                              │
00:07:26 v #8494 > > │ 00:00:00 v #7 _assert_fn / { input = x -y "$z -a '(b=\"c-id=)[          │
00:07:26 v #8495 > > │ a-fA-F0-9]{8}', { `$_[1] + `$d++ }" }                                        │
00:07:26 v #8496 > > │ __assert_eq' / actual: ['x' '-y' '$z -a \'(b=\\"c-id=)[a-fA-F0-9]{8}\', {    │
00:07:26 v #8497 > > │ `$_[1] + `$d++ }'] / expected: ['x' '-y' '$z -a \'(b=\\"c-id=)[              │
00:07:26 v #8498 > > │ a-fA-F0-9]{8}\', { `$_[1] + `$d++ }']                                        │
00:07:26 v #8499 > > │                                                                              │
00:07:26 v #8500 > > │ 00:00:00 v #8 _assert_fn / { input = e -f "$g -h '(i=`"j-id=)[          │
00:07:26 v #8501 > > │ a-fA-F0-9]{8}', { `$_[1] + `$k++ }" }                                        │
00:07:26 v #8502 > > │ __assert_eq' / actual: ['e' '-f' '$g -h \'(i=`"j-id=)[a-fA-F0-9]{8}\', { `$_ │
00:07:26 v #8503 > > │ [1] + `$k++ }'] / expected: ['e' '-f' '$g -h \'(i=`"j-id=)[a-fA-F0-9]{8}\',  │
00:07:26 v #8504 > > │ { `$_[1] + `$k++ }']                                                         │
00:07:26 v #8505 > > │                                                                              │
00:07:26 v #8506 > > │ 00:00:00 v #9 _assert_fn / { input = --l \"''' m '''\"  }               │
00:07:26 v #8507 > > │ __assert_eq' / a...t_fn / { input = n -o "p \"q\" r" }                       │
00:07:26 v #8508 > > │ __assert_eq' / actual: ['n', '-o', 'p \\"q\\" r'] / expected: ['n', '-o', 'p │
00:07:26 v #8509 > > │ \\"q\\" r']                                                                  │
00:07:26 v #8510 > > │                                                                              │
00:07:26 v #8511 > > │ 00:00:00 v #6 _assert_fn / { input = r -s "t \"u\"" }                   │
00:07:26 v #8512 > > │ __assert_eq' / actual: ['r', '-s', 't \\"u\\"'] / expected: ['r', '-s', 't   │
00:07:26 v #8513 > > │ \\"u\\"']                                                                    │
00:07:26 v #8514 > > │                                                                              │
00:07:26 v #8515 > > │ 00:00:00 v #7 _assert_fn / { input = x -y "$z -a '(b=\"c-id=)[          │
00:07:26 v #8516 > > │ a-fA-F0-9]{8}', { `$_[1] + `$d++ }" }                                        │
00:07:26 v #8517 > > │ __assert_eq' / actual: ['x', '-y', '$z -a \'(b=\\"c-id=)[a-fA-F0-9]{8}\', {  │
00:07:26 v #8518 > > │ `$_[1] + `$d++ }'] / expected: ['x', '-y', '$z -a \'(b=\\"c-id=)[            │
00:07:26 v #8519 > > │ a-fA-F0-9]{8}\', { `$_[1] + `$d++ }']                                        │
00:07:26 v #8520 > > │                                                                              │
00:07:26 v #8521 > > │ 00:00:00 v #8 _assert_fn / { input = e -f "$g -h '(i=`"j-id=)[          │
00:07:26 v #8522 > > │ a-fA-F0-9]{8}', { `$_[1] + `$k++ }" }                                        │
00:07:26 v #8523 > > │ __assert_eq' / actual: ['e', '-f', '$g -h \'(i=`"j-id=)[a-fA-F0-9]{8}\', {   │
00:07:26 v #8524 > > │ `$_[1] + `$k++ }'] / expected: ['e', '-f', '$g -h \'(i=`"j-id=)[             │
00:07:26 v #8525 > > │ a-fA-F0-9]{8}\', { `$_[1] + `$k++ }']                                        │
00:07:26 v #8526 > > │                                                                              │
00:07:26 v #8527 > > │ 00:00:00 v #9 _assert_fn / { input = --l \"''' m '''\"  }               │
00:07:26 v #8528 > > │ __assert_eq' / actual: ['--l', "''' m '''"] / expected: ['--l', "''' m '''"] │
00:07:26 v #8529 > > │                                                                              │
00:07:26 v #8530 > > │ 00:00:00 v #10 _assert_fn / { input = n --o --p q --r "s:/t u/v.w" --x  │
00:07:26 v #8531 > > │ "y:/z.a" --b c.d "\e{f-g}" h.i "j (k)" }                                     │
00:07:26 v #8532 > > │ __assert_eq' / actual: ['n', '--o', '--p', 'q', '--r', 's:/t u/v.w', '--x',  │
00:07:26 v #8533 > > │ 'y:/z.a', '--b', 'c.d', '\\e{f-g}', 'h.i', 'j (k)'] / expected: ['n', '--o', │
00:07:26 v #8534 > > │ '--p', 'q', '--r', 's:/t u/v.w', '--x', 'y:/z.a', '--b', 'c.d', '\\e{f-g}',  │
00:07:26 v #8535 > > │ 'h.i', 'j (k)']                                                              │
00:07:26 v #8536 > > │                                                                              │
00:07:26 v #8537 > > │ 00:00:00 v #11 _assert_fn / { input = l "m n:\o.p" }                    │
00:07:26 v #8538 > > │ __assert_eq' / actual: ['l', 'm n:\\o.p'] / expected: ['l', 'm n:\\o.p']     │
00:07:26 v #8539 > > │                                                                              │
00:07:26 v #8540 > > │                                                                              │
00:07:26 v #8541 > > │                                                                              │
00:07:26 v #8542 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:26 v #8543 > >
00:07:26 v #8544 > > ╭─[ 8.16s - stdout ]───────────────────────────────────────────────────────────╮
00:07:26 v #8545 > > │ .fsx output:                                                                 │
00:07:26 v #8546 > > │                                                                              │
00:07:26 v #8547 > > │ 00:00:00 v #1 _assert_fn / { input = a b c }                            │
00:07:26 v #8548 > > │ __assert_eq' / actual: "[|"a"; "b"; "c"|]" / expected: "[|"a"; "b"; "c"|]"   │
00:07:26 v #8549 > > │                                                                              │
00:07:26 v #8550 > > │ 00:00:00 v #2 _assert_fn / { input = e f "g h" i }                      │
00:07:26 v #8551 > > │ __assert_eq' / actual: "[|"e"; "f"; "g h"; "i"|]" / expected: "[|"e"; "f";   │
00:07:26 v #8552 > > │ "g h"; "i"|]"                                                                │
00:07:26 v #8553 > > │                                                                              │
00:07:26 v #8554 > > │ 00:00:00 v #3 _assert_fn / { input = "j k" "l" "m" }                    │
00:07:26 v #8555 > > │ __assert_eq' / actual: "[|"j k"; "l"; "m"|]" / expected: "[|"j k"; "l";      │
00:07:26 v #8556 > > │ "m"|]"                                                                       │
00:07:26 v #8557 > > │                                                                              │
00:07:26 v #8558 > > │ 00:00:00 v #4 _assert_fn / { input = s -t "u `"v`" w" }                 │
00:07:26 v #8559 > > │ __assert_eq' / actual: "[|"s"; "-t"; "u `"v`" w"|]" / expected: "[|"s";      │
00:07:26 v #8560 > > │ "-t"; "u `"v`" w"|]"                                                         │
00:07:26 v #8561 > > │                                                                              │
00:07:26 v #8562 > > │ 00:00:00 v #5 _assert_fn / { input = n -o "p \"q\" r" }                 │
00:07:26 v #8563 > > │ __assert_eq' / actual: "[|"n"; "-o"; "p \"q\" r"|]" / expected: "[|"n";      │
00:07:26 v #8564 > > │ "-o"; "p \"q\" r"|]"                                                         │
00:07:26 v #8565 > > │                                                                              │
00:07:26 v #8566 > > │ 00:00:00 v #6 _assert_fn / { input = r -s "t \"u\"" }                   │
00:07:26 v #8567 > > │ __assert_eq' / actual: "[|"r"; "-s"; "t \"u\""|]" / expected: "[|"r"; "-s";  │
00:07:26 v #8568 > > │ "t \"u\""|]"                                                                 │
00:07:26 v #8569 > > │                                                                              │
00:07:26 v #8570 > > │ 00:00:00 v #7 _assert_fn / { input = x -y "$z -a '(b=\"c-id=)[          │
00:07:26 v #8571 > > │ a-fA-F0-9]{8}', { `$_[1] + `$d++ }" }                                        │
00:07:26 v #8572 > > │ __assert_eq' / actual: "[|"x"; "-y"; "$z -a '(b=\"c-id=)[a-fA-F0-9]{8}', {   │
00:07:26 v #8573 > > │ `$_[1] + `$d++ }"|]" / expected: "[|"x"; "-y"; "$z -a '(b=\"c-id=)[          │
00:07:26 v #8574 > > │ a-fA-F0-9]{8}', { `$_[1] + `$d++ }"|]"                                       │
00:07:26 v #8575 > > │                                                                              │
00:07:26 v #8576 > > │ 00:00:00 v #8 _assert_fn / { input = e -f "$g -h '(i=`"j-id=)[          │
00:07:26 v #8577 > > │ a-fA-F0-9]{8}', { `$_[1] + `$k++ }" }                                        │
00:07:26 v #8578 > > │ __assert_eq' / actual: "[|"e"; "-f"; "$g -h '(i=`"j-id=)[a-fA-F0-9]{8}', {   │
00:07:26 v #8579 > > │ `$_[1] + `$k++ }"|]" / expected: "[|"e"; "-f"; "$g -h '(i=`"j-id=)[          │
00:07:26 v #8580 > > │ a-fA-F0-9]{8}', { `$_[1] + `$k++ }"|]"                                       │
00:07:26 v #8581 > > │                                                                              │
00:07:26 v #8582 > > │ 00:00:00 v #9 _assert_fn / { input = --l \"''' m '''\"  }               │
00:07:26 v #8583 > > │ __assert_eq' / actual: "[|"--l"; "''' m '''"|]" / expected: "[|"--l"; "''' m │
00:07:26 v #8584 > > │ '''"|]"                                                                      │
00:07:26 v #8585 > > │                                                                              │
00:07:26 v #8586 > > │ 00:00:00 v #10 _assert_fn / { input = n --o --p q --r "s:/t u/v.w" --x  │
00:07:26 v #8587 > > │ "y:/z.a" --b c.d "\e{f-g}" h.i "j (k)" }                                     │
00:07:26 v #8588 > > │ __assert_eq' / actual: "[|"n"; "--o"; "--p"; "q"; "--r"; "s:/t u/v.w";       │
00:07:26 v #8589 > > │ "--x"; "y:/z.a"; "--b"; "c.d";                                               │
00:07:26 v #8590 > > │   "\e{f-g}"; "h.i"; "j (k)"|]" / expected: "[|"n"; "--o"; "--p"; "q"; "--r"; │
00:07:26 v #8591 > > │ "s:/t u/v.w"; "--x"; "y:/z.a"; "--b"; "c.d";                                 │
00:07:26 v #8592 > > │   "\e{f-g}"; "h.i"; "j (k)"|]"                                               │
00:07:26 v #8593 > > │                                                                              │
00:07:26 v #8594 > > │ 00:00:00 v #11 _assert_fn / { input = l "m n:\o.p" }                    │
00:07:26 v #8595 > > │ __assert_eq' / actual: "[|"l"; "m n:\o.p"|]" / expected: "[|"l"; "m          │
00:07:26 v #8596 > > │ n:\o.p"|]"                                                                   │
00:07:26 v #8597 > > │                                                                              │
00:07:26 v #8598 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:26 v #8599 > >
00:07:26 v #8600 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:26 v #8601 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:26 v #8602 > > │ ### split_command                                                            │
00:07:26 v #8603 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:26 v #8604 > >
00:07:26 v #8605 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:26 v #8606 > > let split_command (command : string) : result (string * option string) string =
00:07:26 v #8607 > >     open parsing
00:07:26 v #8608 > >     inl quotes = [[ '"'; '\'' ]]
00:07:26 v #8609 > >     inl p_quoted_char = quotes |> listm.map p_char |> choice
00:07:26 v #8610 > >     inl normalize = function '\\' => '/' | c => c
00:07:26 v #8611 > >     inl p_quoted = quotes |> none_of |>> normalize |> many_chars |> between
00:07:26 v #8612 > > p_quoted_char p_quoted_char
00:07:26 v #8613 > >     inl p_unquoted = quotes ++ [[ ' ' ]] |> none_of |>> normalize |> many1_chars
00:07:26 v #8614 > >     inl p_path = p_quoted <|> p_unquoted <|> eof () >>% "" .>> spaces ()
00:07:26 v #8615 > >     inl p_args = p_char ' ' |> opt >>. (any_char () |> many1_chars)
00:07:26 v #8616 > >     inl p_command = p_path .>>. (p_args |> opt)
00:07:26 v #8617 > >     command
00:07:26 v #8618 > >     |> parse p_command
00:07:26 v #8619 > >     |> resultm.map fst
00:07:26 v #8620 > >
00:07:26 v #8621 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:26 v #8622 > > //// test
00:07:26 v #8623 > > ///! fsharp
00:07:26 v #8624 > > ///! cuda
00:07:26 v #8625 > > ///! rust
00:07:26 v #8626 > > ///! typescript
00:07:26 v #8627 > > ///! python
00:07:26 v #8628 > >
00:07:26 v #8629 > > [[
00:07:26 v #8630 > >     "",
00:07:26 v #8631 > >     ("", None)
00:07:26 v #8632 > >
00:07:26 v #8633 > >     "/a/b/c",
00:07:26 v #8634 > >     ("/a/b/c", None)
00:07:26 v #8635 > >
00:07:26 v #8636 > >     "d e.f",
00:07:26 v #8637 > >     ("d", Some "e.f")
00:07:26 v #8638 > >
00:07:26 v #8639 > >     "..\\..\\g.h i.j k.l",
00:07:26 v #8640 > >     ("../../g.h", Some "i.j k.l")
00:07:26 v #8641 > >
00:07:26 v #8642 > >     "m:\\n\\o.p \"q.r s.t\"",
00:07:26 v #8643 > >     ("m:/n/o.p", Some "\"q.r s.t\"")
00:07:26 v #8644 > >
00:07:26 v #8645 > >     "\"..\\..\\u v\\w.x\" \"y z.a\" b.c",
00:07:26 v #8646 > >     ("../../u v/w.x", Some "\"y z.a\" b.c")
00:07:26 v #8647 > >
00:07:26 v #8648 > >     "\"..\\..\\d e.f\" -g \\\\\"h i\\\\\"",
00:07:26 v #8649 > >     ("../../d e.f", Some "-g \\\\\"h i\\\\\"")
00:07:26 v #8650 > >
00:07:26 v #8651 > >     "..\\..\\j k.l -m \\\\\"n o\\\\\"",
00:07:26 v #8652 > >     ("../../j", Some "k.l -m \\\\\"n o\\\\\"")
00:07:26 v #8653 > > ]]
00:07:26 v #8654 > > |> _assert_fn split_command
00:07:32 v #8655 > >
00:07:32 v #8656 > > ╭─[ 5.80s - return value ]─────────────────────────────────────────────────────╮
00:07:32 v #8657 > > │                                                                              │
00:07:32 v #8658 > > │ .py output (Cuda):                                                           │
00:07:32 v #8659 > > │                                                                              │
00:07:32 v #8660 > > │ 00:00:00 v #1 _assert_fn / { input =  }                                 │
00:07:32 v #8661 > > │ __assert_eq' / actual: , US1_1() / expected: , US1_1()                       │
00:07:32 v #8662 > > │                                                                              │
00:07:32 v #8663 > > │ 00:00:00 v #2 _assert_fn / { input = /a/b/c }                           │
00:07:32 v #8664 > > │ __assert_eq' / actual: /a/b/c, US1_1() / expected: /a/b/c, US1_1()           │
00:07:32 v #8665 > > │                                                                              │
00:07:32 v #8666 > > │ 00:00:00 v #3 _assert_fn / { input = d e.f }                            │
00:07:32 v #8667 > > │ __assert_eq' / actual: d, US1_0(v0='e.f') / expected: d, US1_0(v0='e.f')     │
00:07:32 v #8668 > > │                                                                              │
00:07:32 v #8669 > > │ 00:00:00 v #4 _assert_fn / { input = ..\..\g.h i.j k.l }                │
00:07:32 v #8670 > > │ __assert_eq' / actual: ../../g.h, US1_0(v0='i.j k.l') / expected: ../../g.h, │
00:07:32 v #8671 > > │ US1_0(v0='i.j k.l')                                                          │
00:07:32 v #8672 > > │                                                                              │
00:07:32 v #8673 > > │ 00:00:00 v #5 _assert_fn / { input = m:\n\o.p "q.r s.t" }               │
00:07:32 v #8674 > > │ __assert_eq' / actual: m:/n/o.p, US1_0(v0='"q.r s.t"') / expected: m:/n/o.p, │
00:07:32 v #8675 > > │ US1_0(v0='"q.r s.t"')                                                        │
00:07:32 v #8676 > > │                                                                              │
00:07:32 v #8677 > > │ 00:00:00 v #6 _assert_fn / { input = "..\..\u v\w.x" "y z.a" b.c }      │
00:07:32 v #8678 > > │ __assert_eq' / actual: ../../u v/w.x, US1_0(v0='"y z.a" b.c') / expected:    │
00:07:32 v #8679 > > │ ../../u v/w.x, US1_0(v0='"y z.a" b.c')                                       │
00:07:32 v #8680 > > │                                                                              │
00:07:32 v #8681 > > │ 00:00:00 v #7 _assert_fn / { input = "..\..\d e.f" -g \\"h i\\" }       │
00:07:32 v #8682 > > │ __assert_eq' / actual: ../../d e.f, US1_0(v0='-g \\\\"h i\\\\"') / expected: │
00:07:32 v #8683 > > │ ../../d e.f, US1_0(v0='-g \\\\"h i\\\\"')                                    │
00:07:32 v #8684 > > │                                                                              │
00:07:32 v #8685 > > │ 00:00:00 v #8 _assert_fn / { input = ..\..\j k.l -m \\"n o\\" }         │
00:07:32 v #8686 > > │ __assert_eq' / actual: ../../j, US1_0(v0='k.l -m \\\\"n o\\\\"') / expected: │
00:07:32 v #8687 > > │ ../../j, US1_0(v0='k.l -m \\\\"n o\\\\"')                                    │
00:07:32 v #8688 > > │                                                                              │
00:07:32 v #8689 > > │                                                                              │
00:07:32 v #8690 > > │ .rs output:                                                                  │
00:07:32 v #8691 > > │                                                                              │
00:07:32 v #8692 > > │ 00:00:00 v #1 _assert_fn / { input =  }                                │
00:07:32 v #8693 > > │ __assert_eq' / actual: ", US1_1" / expected: ", US1_1"                       │
00:07:32 v #8694 > > │                                                                              │
00:07:32 v #8695 > > │ 00:00:00 v #2 _assert_fn / { input = /a/b/c }                          │
00:07:32 v #8696 > > │ __assert_eq' / actual: "/a/b/c, US1_1...eq' / actual: ../../d e.f, US1_0 (-g │
00:07:32 v #8697 > > │ \\"h i\\") / expected: ../../d e.f, US1_0 (-g \\"h i\\")                     │
00:07:32 v #8698 > > │                                                                              │
00:07:32 v #8699 > > │ 00:00:00 v #8 _assert_fn / { input = ..\..\j k.l -m \\"n o\\" }         │
00:07:32 v #8700 > > │ __assert_eq' / actual: ../../j, US1_0 (k.l -m \\"n o\\") / expected:         │
00:07:32 v #8701 > > │ ../../j, US1_0 (k.l -m \\"n o\\")                                            │
00:07:32 v #8702 > > │                                                                              │
00:07:32 v #8703 > > │                                                                              │
00:07:32 v #8704 > > │ .py output:                                                                  │
00:07:32 v #8705 > > │                                                                              │
00:07:32 v #8706 > > │ 00:00:00 v #1 _assert_fn / { input =  }                                 │
00:07:32 v #8707 > > │ __assert_eq' / actual: , US1_1 / expected: , US1_1                           │
00:07:32 v #8708 > > │                                                                              │
00:07:32 v #8709 > > │ 00:00:00 v #2 _assert_fn / { input = /a/b/c }                           │
00:07:32 v #8710 > > │ __assert_eq' / actual: /a/b/c, US1_1 / expected: /a/b/c, US1_1               │
00:07:32 v #8711 > > │                                                                              │
00:07:32 v #8712 > > │ 00:00:00 v #3 _assert_fn / { input = d e.f }                            │
00:07:32 v #8713 > > │ __assert_eq' / actual: d, US1_0 "e.f" / expected: d, US1_0 "e.f"             │
00:07:32 v #8714 > > │                                                                              │
00:07:32 v #8715 > > │ 00:00:00 v #4 _assert_fn / { input = ..\..\g.h i.j k.l }                │
00:07:32 v #8716 > > │ __assert_eq' / actual: ../../g.h, US1_0 ("i.j k.l") / expected: ../../g.h,   │
00:07:32 v #8717 > > │ US1_0 ("i.j k.l")                                                            │
00:07:32 v #8718 > > │                                                                              │
00:07:32 v #8719 > > │ 00:00:00 v #5 _assert_fn / { input = m:\n\o.p "q.r s.t" }               │
00:07:32 v #8720 > > │ __assert_eq' / actual: m:/n/o.p, US1_0 (""q.r s.t"") / expected: m:/n/o.p,   │
00:07:32 v #8721 > > │ US1_0 (""q.r s.t"")                                                          │
00:07:32 v #8722 > > │                                                                              │
00:07:32 v #8723 > > │ 00:00:00 v #6 _assert_fn / { input = "..\..\u v\w.x" "y z.a" b.c }      │
00:07:32 v #8724 > > │ __assert_eq' / actual: ../../u v/w.x, US1_0 (""y z.a" b.c") / expected:      │
00:07:32 v #8725 > > │ ../../u v/w.x, US1_0 (""y z.a" b.c")                                         │
00:07:32 v #8726 > > │                                                                              │
00:07:32 v #8727 > > │ 00:00:00 v #7 _assert_fn / { input = "..\..\d e.f" -g \\"h i\\" }       │
00:07:32 v #8728 > > │ __assert_eq' / actual: ../../d e.f, US1_0 ("-g \\"h i\\"") / expected:       │
00:07:32 v #8729 > > │ ../../d e.f, US1_0 ("-g \\"h i\\"")                                          │
00:07:32 v #8730 > > │                                                                              │
00:07:32 v #8731 > > │ 00:00:00 v #8 _assert_fn / { input = ..\..\j k.l -m \\"n o\\" }         │
00:07:32 v #8732 > > │ __assert_eq' / actual: ../../j, US1_0 ("k.l -m \\"n o\\"") / expected:       │
00:07:32 v #8733 > > │ ../../j, US1_0 ("k.l -m \\"n o\\"")                                          │
00:07:32 v #8734 > > │                                                                              │
00:07:32 v #8735 > > │                                                                              │
00:07:32 v #8736 > > │                                                                              │
00:07:32 v #8737 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:32 v #8738 > >
00:07:32 v #8739 > > ╭─[ 5.81s - stdout ]───────────────────────────────────────────────────────────╮
00:07:32 v #8740 > > │ .fsx output:                                                                 │
00:07:32 v #8741 > > │                                                                              │
00:07:32 v #8742 > > │ 00:00:00 v #1 _assert_fn / { input =  }                                 │
00:07:32 v #8743 > > │ __assert_eq' / actual: ", US1_1" / expected: ", US1_1"                       │
00:07:32 v #8744 > > │                                                                              │
00:07:32 v #8745 > > │ 00:00:00 v #2 _assert_fn / { input = /a/b/c }                           │
00:07:32 v #8746 > > │ __assert_eq' / actual: "/a/b/c, US1_1" / expected: "/a/b/c, US1_1"           │
00:07:32 v #8747 > > │                                                                              │
00:07:32 v #8748 > > │ 00:00:00 v #3 _assert_fn / { input = d e.f }                            │
00:07:32 v #8749 > > │ __assert_eq' / actual: "d, US1_0 "e.f"" / expected: "d, US1_0 "e.f""         │
00:07:32 v #8750 > > │                                                                              │
00:07:32 v #8751 > > │ 00:00:00 v #4 _assert_fn / { input = ..\..\g.h i.j k.l }                │
00:07:32 v #8752 > > │ __assert_eq' / actual: "../../g.h, US1_0 "i.j k.l"" / expected: "../../g.h,  │
00:07:32 v #8753 > > │ US1_0 "i.j k.l""                                                             │
00:07:32 v #8754 > > │                                                                              │
00:07:32 v #8755 > > │ 00:00:00 v #5 _assert_fn / { input = m:\n\o.p "q.r s.t" }               │
00:07:32 v #8756 > > │ __assert_eq' / actual: "m:/n/o.p, US1_0 ""q.r s.t""" / expected: "m:/n/o.p,  │
00:07:32 v #8757 > > │ US1_0 ""q.r s.t"""                                                           │
00:07:32 v #8758 > > │                                                                              │
00:07:32 v #8759 > > │ 00:00:00 v #6 _assert_fn / { input = "..\..\u v\w.x" "y z.a" b.c }      │
00:07:32 v #8760 > > │ __assert_eq' / actual: "../../u v/w.x, US1_0 ""y z.a" b.c"" / expected:      │
00:07:32 v #8761 > > │ "../../u v/w.x, US1_0 ""y z.a" b.c""                                         │
00:07:32 v #8762 > > │                                                                              │
00:07:32 v #8763 > > │ 00:00:00 v #7 _assert_fn / { input = "..\..\d e.f" -g \\"h i\\" }       │
00:07:32 v #8764 > > │ __assert_eq' / actual: "../../d e.f, US1_0 "-g \\"h i\\""" / expected:       │
00:07:32 v #8765 > > │ "../../d e.f, US1_0 "-g \\"h i\\"""                                          │
00:07:32 v #8766 > > │                                                                              │
00:07:32 v #8767 > > │ 00:00:00 v #8 _assert_fn / { input = ..\..\j k.l -m \\"n o\\" }         │
00:07:32 v #8768 > > │ __assert_eq' / actual: "../../j, US1_0 "k.l -m \\"n o\\""" / expected:       │
00:07:32 v #8769 > > │ "../../j, US1_0 "k.l -m \\"n o\\"""                                          │
00:07:32 v #8770 > > │                                                                              │
00:07:32 v #8771 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:32 v #8772 > >
00:07:32 v #8773 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:32 v #8774 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:32 v #8775 > > │ ### execution_line                                                           │
00:07:32 v #8776 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:32 v #8777 > >
00:07:32 v #8778 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:32 v #8779 > > type execution_line =
00:07:32 v #8780 > >     {
00:07:32 v #8781 > >         process_id : int
00:07:32 v #8782 > >         line : string
00:07:32 v #8783 > >         error : bool
00:07:32 v #8784 > >     }
00:07:32 v #8785 > >
00:07:32 v #8786 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:32 v #8787 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:32 v #8788 > > │ ## rust                                                                      │
00:07:32 v #8789 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:32 v #8790 > >
00:07:32 v #8791 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:32 v #8792 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:32 v #8793 > > │ ### process_child                                                            │
00:07:32 v #8794 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:32 v #8795 > >
00:07:32 v #8796 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:32 v #8797 > > nominal process_child =
00:07:32 v #8798 > >     `(
00:07:32 v #8799 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:07:32 v #8800 > > Fable.Core.Emit(\"std::process::Child\")>]]\n#endif\ntype std_process_Child =
00:07:32 v #8801 > > class end"
00:07:32 v #8802 > >         $'' : $'std_process_Child'
00:07:32 v #8803 > >     )
00:07:33 v #8804 > >
00:07:33 v #8805 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:33 v #8806 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:33 v #8807 > > │ ### process_child_stdin                                                      │
00:07:33 v #8808 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:33 v #8809 > >
00:07:33 v #8810 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:33 v #8811 > > nominal process_child_stdin =
00:07:33 v #8812 > >     `(
00:07:33 v #8813 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:07:33 v #8814 > > Fable.Core.Emit(\"std::process::ChildStdin\")>]]\n#endif\ntype
00:07:33 v #8815 > > std_process_ChildStdin = class end"
00:07:33 v #8816 > >         $'' : $'std_process_ChildStdin'
00:07:33 v #8817 > >     )
00:07:33 v #8818 > >
00:07:33 v #8819 > > inl process_child_stdin
00:07:33 v #8820 > >     (child : rust.ref (rust.mut' process_child))
00:07:33 v #8821 > >     : rust.ref (rust.mut' (optionm'.option' process_child_stdin))
00:07:33 v #8822 > >     =
00:07:33 v #8823 > >     !\\(child, $'"&mut $0.stdin"')
00:07:33 v #8824 > >
00:07:33 v #8825 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:33 v #8826 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:33 v #8827 > > │ ## runtime                                                                   │
00:07:33 v #8828 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:33 v #8829 > >
00:07:33 v #8830 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:33 v #8831 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:33 v #8832 > > │ ### execution_options                                                        │
00:07:33 v #8833 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:33 v #8834 > >
00:07:33 v #8835 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:33 v #8836 > > type execution_options =
00:07:33 v #8837 > >     {
00:07:33 v #8838 > >         command : string
00:07:33 v #8839 > >         cancellation_token : optionm'.option' threading.cancellation_token
00:07:33 v #8840 > >         environment_variables : array_base (string * string)
00:07:33 v #8841 > >         on_line : optionm'.option' (execution_line -> async.async ())
00:07:33 v #8842 > >         stdin : optionm'.option' (threading.arc (threading.mutex
00:07:33 v #8843 > > process_child_stdin) -> ())
00:07:33 v #8844 > >         trace : bool
00:07:33 v #8845 > >         working_directory : optionm'.option' string
00:07:33 v #8846 > >     }
00:07:33 v #8847 > >
00:07:33 v #8848 > > inl execution_options (fn : execution_options -> execution_options) :
00:07:33 v #8849 > > execution_options =
00:07:33 v #8850 > >     {
00:07:33 v #8851 > >         command = ""
00:07:33 v #8852 > >         cancellation_token = None |> optionm'.box
00:07:33 v #8853 > >         environment_variables = ;[[]]
00:07:33 v #8854 > >         on_line = None |> optionm'.box
00:07:33 v #8855 > >         stdin = None |> optionm'.box
00:07:33 v #8856 > >         trace = true
00:07:33 v #8857 > >         working_directory = None |> optionm'.box
00:07:33 v #8858 > >     }
00:07:33 v #8859 > >     |> fn
00:07:34 v #8860 > >
00:07:34 v #8861 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:34 v #8862 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:34 v #8863 > > │ ## rust                                                                      │
00:07:34 v #8864 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:34 v #8865 > >
00:07:34 v #8866 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:34 v #8867 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:34 v #8868 > > │ ### process_child_stderr                                                     │
00:07:34 v #8869 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:34 v #8870 > >
00:07:34 v #8871 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:34 v #8872 > > nominal process_child_stderr =
00:07:34 v #8873 > >     `(
00:07:34 v #8874 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:07:34 v #8875 > > Fable.Core.Emit(\"std::process::ChildStderr\")>]]\n#endif\ntype
00:07:34 v #8876 > > std_process_ChildStderr = class end"
00:07:34 v #8877 > >         $'' : $'std_process_ChildStderr'
00:07:34 v #8878 > >     )
00:07:34 v #8879 > >
00:07:34 v #8880 > > inl process_child_stderr
00:07:34 v #8881 > >     (child : rust.ref (rust.mut' process_child))
00:07:34 v #8882 > >     : rust.ref (rust.mut' (optionm'.option' process_child_stderr))
00:07:34 v #8883 > >     =
00:07:34 v #8884 > >     !\\(child, $'"&mut $0.stderr"')
00:07:34 v #8885 > >
00:07:34 v #8886 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:34 v #8887 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:34 v #8888 > > │ ### process_child_stdout                                                     │
00:07:34 v #8889 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:34 v #8890 > >
00:07:34 v #8891 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:34 v #8892 > > nominal process_child_stdout =
00:07:34 v #8893 > >     `(
00:07:34 v #8894 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:07:34 v #8895 > > Fable.Core.Emit(\"std::process::ChildStdout\")>]]\n#endif\ntype
00:07:34 v #8896 > > std_process_ChildStdout = class end"
00:07:34 v #8897 > >         $'' : $'std_process_ChildStdout'
00:07:34 v #8898 > >     )
00:07:34 v #8899 > >
00:07:34 v #8900 > > inl process_child_stdout
00:07:34 v #8901 > >     (child : rust.ref (rust.mut' process_child))
00:07:34 v #8902 > >     : rust.ref (rust.mut' (optionm'.option' process_child_stdout))
00:07:34 v #8903 > >     =
00:07:34 v #8904 > >     !\\(child, $'"&mut $0.stdout"')
00:07:34 v #8905 > >
00:07:34 v #8906 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:34 v #8907 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:34 v #8908 > > │ ### process_command                                                          │
00:07:34 v #8909 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:34 v #8910 > >
00:07:34 v #8911 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:34 v #8912 > > nominal process_command =
00:07:34 v #8913 > >     `(
00:07:34 v #8914 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:07:34 v #8915 > > Fable.Core.Emit(\"std::process::Command\")>]]\n#endif\ntype std_process_Command
00:07:34 v #8916 > > = class end"
00:07:34 v #8917 > >         $'' : $'std_process_Command'
00:07:34 v #8918 > >     )
00:07:35 v #8919 > >
00:07:35 v #8920 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:35 v #8921 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:35 v #8922 > > │ ### process_stdio                                                            │
00:07:35 v #8923 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:35 v #8924 > >
00:07:35 v #8925 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:35 v #8926 > > nominal process_stdio =
00:07:35 v #8927 > >     `(
00:07:35 v #8928 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:07:35 v #8929 > > Fable.Core.Emit(\"std::process::Stdio\")>]]\n#endif\ntype std_process_Stdio =
00:07:35 v #8930 > > class end"
00:07:35 v #8931 > >         $'' : $'std_process_Stdio'
00:07:35 v #8932 > >     )
00:07:35 v #8933 > >
00:07:35 v #8934 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:35 v #8935 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:35 v #8936 > > │ ### process_output                                                           │
00:07:35 v #8937 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:35 v #8938 > >
00:07:35 v #8939 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:35 v #8940 > > nominal process_output =
00:07:35 v #8941 > >     `(
00:07:35 v #8942 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:07:35 v #8943 > > Fable.Core.Emit(\"std::process::Output\")>]]\n#endif\ntype std_process_Output =
00:07:35 v #8944 > > class end"
00:07:35 v #8945 > >         $'' : $'std_process_Output'
00:07:35 v #8946 > >     )
00:07:36 v #8947 > >
00:07:36 v #8948 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:36 v #8949 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:36 v #8950 > > │ ### process_exit_status                                                      │
00:07:36 v #8951 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:36 v #8952 > >
00:07:36 v #8953 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:36 v #8954 > > nominal process_exit_status =
00:07:36 v #8955 > >     `(
00:07:36 v #8956 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:07:36 v #8957 > > Fable.Core.Emit(\"std::process::ExitStatus\")>]]\n#endif\ntype
00:07:36 v #8958 > > std_process_ExitStatus = class end"
00:07:36 v #8959 > >         $'' : $'std_process_ExitStatus'
00:07:36 v #8960 > >     )
00:07:36 v #8961 > >
00:07:36 v #8962 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:36 v #8963 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:36 v #8964 > > │ ### process_output_status                                                    │
00:07:36 v #8965 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:36 v #8966 > >
00:07:36 v #8967 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:36 v #8968 > > inl process_output_status (output : process_output) : process_exit_status =
00:07:36 v #8969 > >     !\\(output, $'"$0.status"')
00:07:36 v #8970 > >
00:07:36 v #8971 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:36 v #8972 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:36 v #8973 > > │ ### process_exit_status_code                                                 │
00:07:36 v #8974 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:36 v #8975 > >
00:07:36 v #8976 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:36 v #8977 > > inl process_exit_status_code (status : process_exit_status) : optionm'.option'
00:07:36 v #8978 > > i32 =
00:07:36 v #8979 > >     !\\(status, $'"$0.code()"')
00:07:37 v #8980 > >
00:07:37 v #8981 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:37 v #8982 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:37 v #8983 > > │ ### stdin_write_all                                                          │
00:07:37 v #8984 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:37 v #8985 > >
00:07:37 v #8986 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:37 v #8987 > > inl stdin_write_all (stdin : threading.mutex_guard process_child_stdin) (text :
00:07:37 v #8988 > > string) : () =
00:07:37 v #8989 > >     inl stream = text |> sm'.as_bytes
00:07:37 v #8990 > >     inl stdin = join stdin
00:07:37 v #8991 > >     (!\($'"true; let mut !stdin = !stdin"') : bool) |> ignore
00:07:37 v #8992 > >     (!\\(stdin, $'"true; std::io::Write::write_all(&mut *$0,
00:07:37 v #8993 > > !stream).unwrap()"') : bool) |> ignore
00:07:37 v #8994 > >
00:07:37 v #8995 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:37 v #8996 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:37 v #8997 > > │ ### stdin_flush                                                              │
00:07:37 v #8998 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:37 v #8999 > >
00:07:37 v #9000 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:37 v #9001 > > inl stdin_flush (stdin : threading.mutex_guard process_child_stdin) : () =
00:07:37 v #9002 > >     inl stdin = join stdin
00:07:37 v #9003 > >     (!\($'"true; let mut !stdin = !stdin"') : bool) |> ignore
00:07:37 v #9004 > >     (!\\(stdin, $'"true; std::io::Write::flush(&mut *$0).unwrap()"') : bool) |>
00:07:37 v #9005 > > ignore
00:07:38 v #9006 > >
00:07:38 v #9007 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:38 v #9008 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:38 v #9009 > > │ ### new_process_command                                                      │
00:07:38 v #9010 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:38 v #9011 > >
00:07:38 v #9012 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:38 v #9013 > > inl new_process_command (file_name : string) : process_command =
00:07:38 v #9014 > >     !\\(file_name, $'"std::process::Command::new(&*$0)"')
00:07:38 v #9015 > >
00:07:38 v #9016 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:38 v #9017 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:38 v #9018 > > │ ### process_stdio_piped                                                      │
00:07:38 v #9019 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:38 v #9020 > >
00:07:38 v #9021 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:38 v #9022 > > inl process_stdio_piped () : process_stdio =
00:07:38 v #9023 > >     !\($'"std::process::Stdio::piped()"')
00:07:38 v #9024 > >
00:07:38 v #9025 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:38 v #9026 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:38 v #9027 > > │ ### process_command_args                                                     │
00:07:38 v #9028 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:38 v #9029 > >
00:07:38 v #9030 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:38 v #9031 > > inl process_command_args (args : am'.vec sm'.std_string) (c : process_command) :
00:07:38 v #9032 > > rust.ref (rust.mut' process_command) =
00:07:38 v #9033 > >     (!\($'"true; let mut !c = !c"') : bool) |> ignore
00:07:38 v #9034 > >     !\\((c, args), $'"std::process::Command::args(&mut $0, &*$1)"')
00:07:39 v #9035 > >
00:07:39 v #9036 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:39 v #9037 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:39 v #9038 > > │ ### process_command_stdout                                                   │
00:07:39 v #9039 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:39 v #9040 > >
00:07:39 v #9041 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:39 v #9042 > > inl process_command_stdout (stdio : process_stdio) (c : rust.ref (rust.mut'
00:07:39 v #9043 > > process_command)) : rust.ref (rust.mut' process_command) =
00:07:39 v #9044 > >     !\\(c, $'"std::process::Command::stdout($0, std::process::Stdio::piped())"')
00:07:39 v #9045 > >
00:07:39 v #9046 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:39 v #9047 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:39 v #9048 > > │ ### process_command_stderr                                                   │
00:07:39 v #9049 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:39 v #9050 > >
00:07:39 v #9051 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:39 v #9052 > > inl process_command_stderr (stdio : process_stdio) (c : rust.ref (rust.mut'
00:07:39 v #9053 > > process_command)) : rust.ref (rust.mut' process_command) =
00:07:39 v #9054 > >     !\\(c, $'"std::process::Command::stderr($0, std::process::Stdio::piped())"')
00:07:40 v #9055 > >
00:07:40 v #9056 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:40 v #9057 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:40 v #9058 > > │ ### process_command_stdin                                                    │
00:07:40 v #9059 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:40 v #9060 > >
00:07:40 v #9061 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:40 v #9062 > > inl process_command_stdin (stdio : process_stdio) (c : rust.ref (rust.mut'
00:07:40 v #9063 > > process_command)) : rust.ref (rust.mut' process_command) =
00:07:40 v #9064 > >     !\\(c, $'"std::process::Command::stdin($0, std::process::Stdio::piped())"')
00:07:40 v #9065 > >
00:07:40 v #9066 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:40 v #9067 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:40 v #9068 > > │ ### process_command_current_dir                                              │
00:07:40 v #9069 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:40 v #9070 > >
00:07:40 v #9071 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:40 v #9072 > > inl process_command_current_dir
00:07:40 v #9073 > >     (dir : string)
00:07:40 v #9074 > >     (c : rust.ref (rust.mut' process_command))
00:07:40 v #9075 > >     : rust.ref (rust.mut' process_command)
00:07:40 v #9076 > >     =
00:07:40 v #9077 > >     !\\(dir, $'"std::process::Command::current_dir(!c, &*$0)"')
00:07:40 v #9078 > >
00:07:40 v #9079 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:40 v #9080 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:40 v #9081 > > │ ### process_command_env                                                      │
00:07:40 v #9082 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:40 v #9083 > >
00:07:40 v #9084 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:40 v #9085 > > inl process_command_env
00:07:40 v #9086 > >     (key : string)
00:07:40 v #9087 > >     (value : string)
00:07:40 v #9088 > >     (c : rust.ref (rust.mut' process_command))
00:07:40 v #9089 > >     : rust.ref (rust.mut' process_command)
00:07:40 v #9090 > >     =
00:07:40 v #9091 > >     !\\((key, value), $'"std::process::Command::env(!c, &*$0, &*$1)"')
00:07:41 v #9092 > >
00:07:41 v #9093 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:41 v #9094 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:41 v #9095 > > │ ### process_command_spawn                                                    │
00:07:41 v #9096 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:41 v #9097 > >
00:07:41 v #9098 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:41 v #9099 > > inl process_command_spawn
00:07:41 v #9100 > >     (c : rust.ref (rust.mut' process_command))
00:07:41 v #9101 > >     : resultm.result' process_child stream.io_error
00:07:41 v #9102 > >     =
00:07:41 v #9103 > >     !\\(c, $'"std::process::Command::spawn($0)"')
00:07:41 v #9104 > >
00:07:41 v #9105 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:41 v #9106 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:41 v #9107 > > │ ### child_wait_with_output                                                   │
00:07:41 v #9108 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:41 v #9109 > >
00:07:41 v #9110 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:41 v #9111 > > inl child_wait_with_output
00:07:41 v #9112 > >     (child : process_child)
00:07:41 v #9113 > >     : resultm.result' process_output stream.io_error
00:07:41 v #9114 > >     =
00:07:41 v #9115 > >     !\\(child, $'"$0.wait_with_output()"')
00:07:42 v #9116 > >
00:07:42 v #9117 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:42 v #9118 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:42 v #9119 > > │ ### stdio_line                                                               │
00:07:42 v #9120 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:42 v #9121 > >
00:07:42 v #9122 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:42 v #9123 > > inl stdio_line
00:07:42 v #9124 > >     (stdio : result () ())
00:07:42 v #9125 > >     (trace' : bool)
00:07:42 v #9126 > >     (channel_sender : threading.arc (threading.mutex (threading.channel_sender
00:07:42 v #9127 > > sm'.std_string)))
00:07:42 v #9128 > >     (line : resultm.result' sm'.std_string stream.io_error)
00:07:42 v #9129 > >     : resultm.result' () sm'.std_string
00:07:42 v #9130 > >     =
00:07:42 v #9131 > >     inl highlight text =
00:07:42 v #9132 > >         $'$"\\u001b[[4;7m{!text}\\u001b[[0m"'
00:07:42 v #9133 > >     inl line =
00:07:42 v #9134 > >         match
00:07:42 v #9135 > >             line
00:07:42 v #9136 > >             |> resultm.map_error' sm'.format'
00:07:42 v #9137 > >             |> resultm.unbox'
00:07:42 v #9138 > >         with
00:07:42 v #9139 > >         | Ok line =>
00:07:42 v #9140 > >             inl line =
00:07:42 v #9141 > >                 line
00:07:42 v #9142 > >                 |> sm'.from_std_string
00:07:42 v #9143 > >                 // |> sm'.as_bytes
00:07:42 v #9144 > >                 // |> am'.slice_to_vec
00:07:42 v #9145 > >                 |> sm'.encoding_encode' (sm'.encoding_utf8' ())
00:07:42 v #9146 > >                 |> rust.cow_as_ref
00:07:42 v #9147 > >                 |> sm'.str_from_utf8
00:07:42 v #9148 > >                 // |> sm'.utf8_decode
00:07:42 v #9149 > >                 |> resultm.unwrap'
00:07:42 v #9150 > >                 |> sm'.ref_to_std_string
00:07:42 v #9151 > >                 // String::from_utf8_lossy(line.as_bytes()).into()
00:07:42 v #9152 > >             inl line_log = line |> sm'.from_std_string
00:07:42 v #9153 > >             inl text =
00:07:42 v #9154 > >                 match stdio with
00:07:42 v #9155 > >                 | Ok () => $'$"> {!line_log}"'
00:07:42 v #9156 > >                 | Error () => $'$"\! {!line_log}"'
00:07:42 v #9157 > >             if trace'
00:07:42 v #9158 > >             then trace Verbose (fun () => text) id
00:07:42 v #9159 > >             else text |> console.write_line
00:07:42 v #9160 > >             match stdio with
00:07:42 v #9161 > >             | Ok () => line
00:07:42 v #9162 > >             | Error () => line |> highlight |> sm'.to_std_string
00:07:42 v #9163 > >         | Error e =>
00:07:42 v #9164 > >             trace Critical
00:07:42 v #9165 > >                 fun () => "runtime.stdio_line"
00:07:42 v #9166 > >                 fun () => { trace' e }
00:07:42 v #9167 > >             e |> highlight |> sm'.to_std_string
00:07:42 v #9168 > >     channel_sender
00:07:42 v #9169 > >     |> threading.arc_mutex_lock
00:07:42 v #9170 > >     |> resultm.unwrap'
00:07:42 v #9171 > >     |> threading.mutex_guard_ref
00:07:42 v #9172 > >     |> threading.channel_send line
00:07:42 v #9173 > >     |> resultm.map_error' sm'.format'
00:07:42 v #9174 > >
00:07:42 v #9175 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:42 v #9176 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:42 v #9177 > > │ ### command                                                                  │
00:07:42 v #9178 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:42 v #9179 > >
00:07:42 v #9180 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:42 v #9181 > > nominal command =
00:07:42 v #9182 > >     `(
00:07:42 v #9183 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:07:42 v #9184 > > Fable.Core.Emit(\"clap::Command\")>]]\n#endif\ntype clap_Command = class end"
00:07:42 v #9185 > >         $'' : $'clap_Command'
00:07:42 v #9186 > >     )
00:07:42 v #9187 > >
00:07:42 v #9188 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:42 v #9189 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:42 v #9190 > > │ ### new_command                                                              │
00:07:42 v #9191 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:42 v #9192 > >
00:07:42 v #9193 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:42 v #9194 > > inl new_command (s : rust.static_ref sm'.str) : command =
00:07:42 v #9195 > >     !\\(s, $'"clap::Command::new($0)"')
00:07:43 v #9196 > >
00:07:43 v #9197 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:43 v #9198 > > //// test
00:07:43 v #9199 > > ///! rust -d clap
00:07:43 v #9200 > >
00:07:43 v #9201 > > ##"command"
00:07:43 v #9202 > > |> new_command
00:07:43 v #9203 > > |> sm'.format_pretty
00:07:43 v #9204 > > |> _assert sm'.contains "\"command\""
00:07:46 v #9205 > >
00:07:46 v #9206 > > ╭─[ 2.87s - return value ]─────────────────────────────────────────────────────╮
00:07:46 v #9207 > > │ __assert / actual: ""command"" / expected: "Command {                        │
00:07:46 v #9208 > > │     name: "command",                                                         │
00:07:46 v #9209 > > │     long_flag: None,                                                         │
00:07:46 v #9210 > > │     short_flag: None,                                                        │
00:07:46 v #9211 > > │     display_name: None,                                                      │
00:07:46 v #9212 > > │     bin_name: None,                                                          │
00:07:46 v #9213 > > │     author: None,                                                            │
00:07:46 v #9214 > > │     version: None,                                                           │
00:07:46 v #9215 > > │     long_version: None,                                                      │
00:07:46 v #9216 > > │     about: None,                                                             │
00:07:46 v #9217 > > │     long_about: None,                                                        │
00:07:46 v #9218 > > │     before_help: None,                                                       │
00:07:46 v #9219 > > │     before_long_help: None,                                                  │
00:07:46 v #9220 > > │     after_help: None,                                                        │
00:07:46 v #9221 > > │     after_long_help: None,                                                   │
00:07:46 v #9222 > > │     aliases: [],                                                             │
00:07:46 v #9223 > > │     short_flag_aliases: [],                                                  │
00:07:46 v #9224 > > │     long_flag_aliases: [],                                                   │
00:07:46 v #9225 > > │     usage_str: None,                                                         │
00:07:46 v #9226 > > │     usage_name: None,                                                        │
00:07:46 v #9227 > > │     help_str: None,                                                          │
00:07:46 v #9228 > > │     disp_ord: None,                                                          │
00:07:46 v #9229 > > │     template: None,                                                          │
00:07:46 v #9230 > > │     settings: AppFlags(                                                      │
00:07:46 v #9231 > > │         0,                                                                   │
00:07:46 v #9232 > > │     ),                                                                       │
00:07:46 v #9233 > > │     g_settings: AppFlags(                                                    │
00:07:46 v #9234 > > │         0,                                                                   │
00:07:46 v #9235 > > │     ),                                                                       │
00:07:46 v #9236 > > │     args: MKeyMap {                                                          │
00:07:46 v #9237 > > │         args: [],                                                            │
00:07:46 v #9238 > > │         keys: [],                                                            │
00:07:46 v #9239 > > │     },                                                                       │
00:07:46 v #9240 > > │     subcommands: [],                                                         │
00:07:46 v #9241 > > │     groups: [],                                                              │
00:07:46 v #9242 > > │     current_help_heading: None,                                              │
00:07:46 v #9243 > > │     current_disp_ord: Some(                                                  │
00:07:46 v #9244 > > │         0,                                                                   │
00:07:46 v #9245 > > │     ),                                                                       │
00:07:46 v #9246 > > │     subcommand_value_name: None,                                             │
00:07:46 v #9247 > > │     subcommand_heading: None,                                                │
00:07:46 v #9248 > > │     external_value_parser: None,                                             │
00:07:46 v #9249 > > │     long_help_exists: false,                                                 │
00:07:46 v #9250 > > │     deferred: None,                                                          │
00:07:46 v #9251 > > │     app_ext: Extensions {                                                    │
00:07:46 v #9252 > > │         extensions: FlatMap {                                                │
00:07:46 v #9253 > > │             keys: [],                                                        │
00:07:46 v #9254 > > │             values: [],                                                      │
00:07:46 v #9255 > > │         },                                                                   │
00:07:46 v #9256 > > │     },                                                                       │
00:07:46 v #9257 > > │ }"                                                                           │
00:07:46 v #9258 > > │                                                                              │
00:07:46 v #9259 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:46 v #9260 > >
00:07:46 v #9261 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:46 v #9262 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:46 v #9263 > > │ ### arg                                                                      │
00:07:46 v #9264 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:46 v #9265 > >
00:07:46 v #9266 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:46 v #9267 > > nominal arg =
00:07:46 v #9268 > >     `(
00:07:46 v #9269 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:07:46 v #9270 > > Fable.Core.Emit(\"clap::Arg\")>]]\n#endif\ntype clap_Arg = class end"
00:07:46 v #9271 > >         $'' : $'clap_Arg'
00:07:46 v #9272 > >     )
00:07:46 v #9273 > >
00:07:46 v #9274 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:46 v #9275 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:46 v #9276 > > │ ### new_arg                                                                  │
00:07:46 v #9277 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:46 v #9278 > >
00:07:46 v #9279 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:46 v #9280 > > inl new_arg (s : rust.static_ref sm'.str) : arg =
00:07:46 v #9281 > >     !\\(s, $'"clap::Arg::new($0)"')
00:07:47 v #9282 > >
00:07:47 v #9283 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:47 v #9284 > > //// test
00:07:47 v #9285 > > ///! rust -d clap
00:07:47 v #9286 > >
00:07:47 v #9287 > > ##"arg"
00:07:47 v #9288 > > |> new_arg
00:07:47 v #9289 > > |> sm'.format_pretty
00:07:47 v #9290 > > |> _assert sm'.contains "\"arg\""
00:07:49 v #9291 > >
00:07:49 v #9292 > > ╭─[ 2.71s - return value ]─────────────────────────────────────────────────────╮
00:07:49 v #9293 > > │ __assert / actual: ""arg"" / expected: "Arg {                                │
00:07:49 v #9294 > > │     id: "arg",                                                               │
00:07:49 v #9295 > > │     help: None,                                                              │
00:07:49 v #9296 > > │     long_help: None,                                                         │
00:07:49 v #9297 > > │     action: None,                                                            │
00:07:49 v #9298 > > │     value_parser: None,                                                      │
00:07:49 v #9299 > > │     blacklist: [],                                                           │
00:07:49 v #9300 > > │     settings: ArgFlags(                                                      │
00:07:49 v #9301 > > │         0,                                                                   │
00:07:49 v #9302 > > │     ),                                                                       │
00:07:49 v #9303 > > │     overrides: [],                                                           │
00:07:49 v #9304 > > │     groups: [],                                                              │
00:07:49 v #9305 > > │     requires: [],                                                            │
00:07:49 v #9306 > > │     r_ifs: [],                                                               │
00:07:49 v #9307 > > │     r_unless: [],                                                            │
00:07:49 v #9308 > > │     short: None,                                                             │
00:07:49 v #9309 > > │     long: None,                                                              │
00:07:49 v #9310 > > │     aliases: [],                                                             │
00:07:49 v #9311 > > │     short_aliases: [],                                                       │
00:07:49 v #9312 > > │     disp_ord: None,                                                          │
00:07:49 v #9313 > > │     val_names: [],                                                           │
00:07:49 v #9314 > > │     num_vals: None,                                                          │
00:07:49 v #9315 > > │     val_delim: None,                                                         │
00:07:49 v #9316 > > │     default_vals: [],                                                        │
00:07:49 v #9317 > > │     default_vals_ifs: [],                                                    │
00:07:49 v #9318 > > │     terminator: None,                                                        │
00:07:49 v #9319 > > │     index: None,                                                             │
00:07:49 v #9320 > > │     help_heading: None,                                                      │
00:07:49 v #9321 > > │     default_missing_vals: [],                                                │
00:07:49 v #9322 > > │     ext: Extensions {                                                        │
00:07:49 v #9323 > > │         extensions: FlatMap {                                                │
00:07:49 v #9324 > > │             keys: [],                                                        │
00:07:49 v #9325 > > │             values: [],                                                      │
00:07:49 v #9326 > > │         },                                                                   │
00:07:49 v #9327 > > │     },                                                                       │
00:07:49 v #9328 > > │ }"                                                                           │
00:07:49 v #9329 > > │                                                                              │
00:07:49 v #9330 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:49 v #9331 > >
00:07:49 v #9332 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:49 v #9333 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:49 v #9334 > > │ ### command_arg                                                              │
00:07:49 v #9335 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:49 v #9336 > >
00:07:49 v #9337 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:49 v #9338 > > inl command_arg (arg : arg) (command : command) : command =
00:07:49 v #9339 > >     !\\((command, arg), $'"clap::Command::arg($0, $1)"')
00:07:50 v #9340 > >
00:07:50 v #9341 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:50 v #9342 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:50 v #9343 > > │ ### arg_required                                                             │
00:07:50 v #9344 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:50 v #9345 > >
00:07:50 v #9346 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:50 v #9347 > > inl arg_required (value : bool) (arg : arg) : arg =
00:07:50 v #9348 > >     !\\((arg, value), $'"$0.required($1)"')
00:07:50 v #9349 > >
00:07:50 v #9350 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:50 v #9351 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:50 v #9352 > > │ ### arg_require_equals                                                       │
00:07:50 v #9353 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:50 v #9354 > >
00:07:50 v #9355 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:50 v #9356 > > inl arg_require_equals (value : bool) (arg : arg) : arg =
00:07:50 v #9357 > >     !\\((arg, value), $'"$0.require_equals($1)"')
00:07:50 v #9358 > >
00:07:50 v #9359 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:50 v #9360 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:50 v #9361 > > │ ### arg_default_value                                                        │
00:07:50 v #9362 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:50 v #9363 > >
00:07:50 v #9364 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:50 v #9365 > > inl arg_default_value (value : string) (arg : arg) : arg =
00:07:50 v #9366 > >     inl value = #value
00:07:50 v #9367 > >     !\\((arg, value), $'"$0.default_value($1)"')
00:07:51 v #9368 > >
00:07:51 v #9369 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:51 v #9370 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:51 v #9371 > > │ ### arg_default_missing_value                                                │
00:07:51 v #9372 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:51 v #9373 > >
00:07:51 v #9374 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:51 v #9375 > > inl arg_default_missing_value (value : string) (arg : arg) : arg =
00:07:51 v #9376 > >     inl value = #value
00:07:51 v #9377 > >     !\\((arg, value), $'"$0.default_missing_value($1)"')
00:07:51 v #9378 > >
00:07:51 v #9379 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:51 v #9380 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:51 v #9381 > > │ ### arg_overrides_with                                                       │
00:07:51 v #9382 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:51 v #9383 > >
00:07:51 v #9384 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:51 v #9385 > > inl arg_overrides_with (value : string) (arg : arg) : arg =
00:07:51 v #9386 > >     inl value = #value
00:07:51 v #9387 > >     !\\((arg, value), $'"$0.overrides_with($1)"')
00:07:52 v #9388 > >
00:07:52 v #9389 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:52 v #9390 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:52 v #9391 > > │ ### arg_short                                                                │
00:07:52 v #9392 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:52 v #9393 > >
00:07:52 v #9394 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:52 v #9395 > > inl arg_short (value : char) (arg : arg) : arg =
00:07:52 v #9396 > >     !\\((arg, value), $'"$0.short($1)"')
00:07:52 v #9397 > >
00:07:52 v #9398 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:52 v #9399 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:52 v #9400 > > │ ### arg_long                                                                 │
00:07:52 v #9401 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:52 v #9402 > >
00:07:52 v #9403 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:52 v #9404 > > inl arg_long (value : rust.static_ref sm'.str) (arg : arg) : arg =
00:07:52 v #9405 > >     !\\((arg, value), $'"$0.long($1)"')
00:07:52 v #9406 > >
00:07:52 v #9407 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:52 v #9408 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:52 v #9409 > > │ ### arg_value_names                                                          │
00:07:52 v #9410 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:52 v #9411 > >
00:07:52 v #9412 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:52 v #9413 > > inl arg_value_names (values : array_base (rust.static_ref sm'.str)) (arg : arg)
00:07:52 v #9414 > > : arg =
00:07:52 v #9415 > >     inl values = values |> am'.to_vec
00:07:52 v #9416 > >     !\\((arg, values), $'"$0.value_names($1)"')
00:07:53 v #9417 > >
00:07:53 v #9418 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:53 v #9419 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:53 v #9420 > > │ ### arg_num_args                                                             │
00:07:53 v #9421 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:53 v #9422 > >
00:07:53 v #9423 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:53 v #9424 > > inl arg_num_args (value : i32) (arg : arg) : arg =
00:07:53 v #9425 > >     !\\((arg, value), $'"$0.num_args($1)"')
00:07:53 v #9426 > >
00:07:53 v #9427 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:53 v #9428 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:53 v #9429 > > │ ### value_range                                                              │
00:07:53 v #9430 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:53 v #9431 > >
00:07:53 v #9432 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:53 v #9433 > > nominal value_range =
00:07:53 v #9434 > >     `(
00:07:53 v #9435 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:07:53 v #9436 > > Fable.Core.Emit(\"clap::builder::ValueRange\")>]]\n#endif\ntype
00:07:53 v #9437 > > clap_builder_ValueRange = class end"
00:07:53 v #9438 > >         $'' : $'clap_builder_ValueRange'
00:07:53 v #9439 > >     )
00:07:54 v #9440 > >
00:07:54 v #9441 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:54 v #9442 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:54 v #9443 > > │ ### new_value_range                                                          │
00:07:54 v #9444 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:54 v #9445 > >
00:07:54 v #9446 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:54 v #9447 > > inl new_value_range inclusive start end : value_range =
00:07:54 v #9448 > >     inl len = 0i32 |> convert
00:07:54 v #9449 > >     inl start, end =
00:07:54 v #9450 > >         open am'
00:07:54 v #9451 > >         match start, end with
00:07:54 v #9452 > >         | Start start, End fn =>
00:07:54 v #9453 > >             start, len |> fn
00:07:54 v #9454 > >         | End start_fn, End end_fn =>
00:07:54 v #9455 > >             start_fn len, end_fn len
00:07:54 v #9456 > >     inl inclusive =
00:07:54 v #9457 > >         if inclusive
00:07:54 v #9458 > >         then "="
00:07:54 v #9459 > >         else ""
00:07:54 v #9460 > >     match start, end with
00:07:54 v #9461 > >     | start, end when end =. len => !\\(start,
00:07:54 v #9462 > > $'"clap::builder::ValueRange::new($0..)"')
00:07:54 v #9463 > >     | start, end => !\\((start, end), $'"clap::builder::ValueRange::new($0.." +
00:07:54 v #9464 > > !inclusive + "$1)"')
00:07:54 v #9465 > >
00:07:54 v #9466 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:54 v #9467 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:54 v #9468 > > │ ### arg_num_args_range                                                       │
00:07:54 v #9469 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:54 v #9470 > >
00:07:54 v #9471 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:54 v #9472 > > inl arg_num_args_range (value : value_range) (arg : arg) : arg =
00:07:54 v #9473 > >     !\\((arg, value), $'"$0.num_args($1)"')
00:07:54 v #9474 > >
00:07:54 v #9475 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:54 v #9476 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:54 v #9477 > > │ ### arg_value_name                                                           │
00:07:54 v #9478 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:54 v #9479 > >
00:07:54 v #9480 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:54 v #9481 > > inl arg_value_name (value : string) (arg : arg) : arg =
00:07:54 v #9482 > >     inl value = value |> sm'.as_str
00:07:54 v #9483 > >     !\\((arg, value), $'"$0.value_name($1)"')
00:07:55 v #9484 > >
00:07:55 v #9485 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:55 v #9486 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:55 v #9487 > > │ ### value_parser                                                             │
00:07:55 v #9488 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:55 v #9489 > >
00:07:55 v #9490 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:55 v #9491 > > nominal value_parser =
00:07:55 v #9492 > >     `(
00:07:55 v #9493 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:07:55 v #9494 > > Fable.Core.Emit(\"clap::builder::ValueParser\")>]]\n#endif\ntype
00:07:55 v #9495 > > clap_builder_ValueParser = class end"
00:07:55 v #9496 > >         $'' : $'clap_builder_ValueParser'
00:07:55 v #9497 > >     )
00:07:55 v #9498 > >
00:07:55 v #9499 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:55 v #9500 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:55 v #9501 > > │ ### possible_value                                                           │
00:07:55 v #9502 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:55 v #9503 > >
00:07:55 v #9504 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:55 v #9505 > > nominal possible_value =
00:07:55 v #9506 > >     `(
00:07:55 v #9507 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:07:55 v #9508 > > Fable.Core.Emit(\"clap::builder::PossibleValue\")>]]\n#endif\ntype
00:07:55 v #9509 > > clap_builder_PossibleValue = class end"
00:07:55 v #9510 > >         $'' : $'clap_builder_PossibleValue'
00:07:55 v #9511 > >     )
00:07:56 v #9512 > >
00:07:56 v #9513 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:56 v #9514 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:56 v #9515 > > │ ### new_possible_value                                                       │
00:07:56 v #9516 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:56 v #9517 > >
00:07:56 v #9518 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:56 v #9519 > > inl new_possible_value forall t. (x : t) : possible_value =
00:07:56 v #9520 > >     !\\(x, $'"clap::builder::PossibleValue::new(&**$0)"')
00:07:56 v #9521 > >
00:07:56 v #9522 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:56 v #9523 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:56 v #9524 > > │ ### value_parser_path_buf                                                    │
00:07:56 v #9525 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:56 v #9526 > >
00:07:56 v #9527 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:56 v #9528 > > inl value_parser_path_buf () : value_parser =
00:07:56 v #9529 > >     !\($'"clap::value_parser\!(std::path::PathBuf)"')
00:07:56 v #9530 > >
00:07:56 v #9531 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:56 v #9532 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:56 v #9533 > > │ ### value_parser_expr                                                        │
00:07:56 v #9534 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:56 v #9535 > >
00:07:56 v #9536 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:56 v #9537 > > inl value_parser_expr (expr : string) : value_parser =
00:07:56 v #9538 > >     !\($'"clap::value_parser\!(" + !expr + ").into()"')
00:07:57 v #9539 > >
00:07:57 v #9540 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:57 v #9541 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:57 v #9542 > > │ ### arg_value_parser                                                         │
00:07:57 v #9543 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:57 v #9544 > >
00:07:57 v #9545 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:57 v #9546 > > inl arg_value_parser (values : value_parser) (arg : arg) : arg =
00:07:57 v #9547 > >     !\\((arg, values), $'"$0.value_parser($1)"')
00:07:57 v #9548 > >
00:07:57 v #9549 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:57 v #9550 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:57 v #9551 > > │ ### arg_action                                                               │
00:07:57 v #9552 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:57 v #9553 > >
00:07:57 v #9554 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:57 v #9555 > > nominal arg_action' =
00:07:57 v #9556 > >     `(
00:07:57 v #9557 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:07:57 v #9558 > > Fable.Core.Emit(\"clap::ArgAction\")>]]\n#endif\ntype clap_ArgAction = class
00:07:57 v #9559 > > end"
00:07:57 v #9560 > >         $'' : $'clap_ArgAction'
00:07:57 v #9561 > >     )
00:07:57 v #9562 > >
00:07:57 v #9563 > > union arg_action =
00:07:57 v #9564 > >     | Set
00:07:57 v #9565 > >     | Append
00:07:57 v #9566 > >     | SetTrue
00:07:57 v #9567 > >     | SetFalse
00:07:57 v #9568 > >     | Count
00:07:57 v #9569 > >     | Help
00:07:57 v #9570 > >     | HelpShort
00:07:57 v #9571 > >     | HelpLong
00:07:57 v #9572 > >     | Version
00:07:57 v #9573 > >
00:07:57 v #9574 > > inl arg_action = function
00:07:57 v #9575 > >     | Set => !\($'"clap::ArgAction::Set"') : arg_action'
00:07:57 v #9576 > >     | Append => !\($'"clap::ArgAction::Append"') : arg_action'
00:07:57 v #9577 > >     | SetTrue => !\($'"clap::ArgAction::SetTrue"') : arg_action'
00:07:57 v #9578 > >     | SetFalse => !\($'"clap::ArgAction::SetFalse"') : arg_action'
00:07:57 v #9579 > >     | Count => !\($'"clap::ArgAction::Count"') : arg_action'
00:07:57 v #9580 > >     | Help => !\($'"clap::ArgAction::Help"') : arg_action'
00:07:57 v #9581 > >     | HelpShort => !\($'"clap::ArgAction::HelpShort"') : arg_action'
00:07:57 v #9582 > >     | HelpLong => !\($'"clap::ArgAction::HelpLong"') : arg_action'
00:07:57 v #9583 > >     | Version => !\($'"clap::ArgAction::Version"') : arg_action'
00:07:57 v #9584 > >
00:07:57 v #9585 > > inl arg_action (value : arg_action) (arg : arg) : arg =
00:07:57 v #9586 > >     inl value = value |> arg_action
00:07:57 v #9587 > >     !\\((arg, value), $'"$0.action($1)"')
00:07:58 v #9588 > >
00:07:58 v #9589 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:58 v #9590 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:58 v #9591 > > │ ### arg_index                                                                │
00:07:58 v #9592 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:58 v #9593 > >
00:07:58 v #9594 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:58 v #9595 > > inl arg_index (value : i32) (arg : arg) : arg =
00:07:58 v #9596 > >     !\\((arg, value), $'"$0.index($1)"')
00:07:58 v #9597 > >
00:07:58 v #9598 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:58 v #9599 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:58 v #9600 > > │ ### arg_matches                                                              │
00:07:58 v #9601 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:58 v #9602 > >
00:07:58 v #9603 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:58 v #9604 > > nominal arg_matches =
00:07:58 v #9605 > >     `(
00:07:58 v #9606 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:07:58 v #9607 > > Fable.Core.Emit(\"clap::ArgMatches\")>]]\n#endif\ntype clap_ArgMatches = class
00:07:58 v #9608 > > end"
00:07:58 v #9609 > >         $'' : $'clap_ArgMatches'
00:07:58 v #9610 > >     )
00:07:58 v #9611 > >
00:07:58 v #9612 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:58 v #9613 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:58 v #9614 > > │ ### command_get_matches                                                      │
00:07:58 v #9615 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:58 v #9616 > >
00:07:58 v #9617 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:58 v #9618 > > inl command_get_matches (command : command) : arg_matches =
00:07:58 v #9619 > >     !\\(command, $'"clap::Command::get_matches($0)"')
00:07:59 v #9620 > >
00:07:59 v #9621 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:59 v #9622 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:59 v #9623 > > │ ### command_get_matches_from                                                 │
00:07:59 v #9624 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:59 v #9625 > >
00:07:59 v #9626 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:59 v #9627 > > inl command_get_matches_from (args : array_base string) (command : command) :
00:07:59 v #9628 > > arg_matches =
00:07:59 v #9629 > >     inl args = args |> am'.to_vec |> am'.vec_map sm'.to_std_string
00:07:59 v #9630 > >     !\\(command, $'"clap::Command::get_matches_from($0, !args)"')
00:07:59 v #9631 > >
00:07:59 v #9632 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:59 v #9633 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:59 v #9634 > > │ ### command_args_override_self                                               │
00:07:59 v #9635 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:59 v #9636 > >
00:07:59 v #9637 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:59 v #9638 > > inl command_args_override_self (yes : bool) (command : command) : command =
00:07:59 v #9639 > >     !\\(command, $'"clap::Command::args_override_self($0, !yes)"')
00:08:00 v #9640 > >
00:08:00 v #9641 > > ── markdown ────────────────────────────────────────────────────────────────────
00:08:00 v #9642 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:08:00 v #9643 > > │ ### command_init_arg                                                         │
00:08:00 v #9644 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:08:00 v #9645 > >
00:08:00 v #9646 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:08:00 v #9647 > > inl command_init_arg (long, short) fn command =
00:08:00 v #9648 > >     command
00:08:00 v #9649 > >     |> command_arg (
00:08:00 v #9650 > >         ##long
00:08:00 v #9651 > >         |> new_arg
00:08:00 v #9652 > >         |> arg_short short
00:08:00 v #9653 > >         |> arg_long ##long
00:08:00 v #9654 > >         |> fn
00:08:00 v #9655 > >     )
00:08:00 v #9656 > >
00:08:00 v #9657 > > ── markdown ────────────────────────────────────────────────────────────────────
00:08:00 v #9658 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:08:00 v #9659 > > │ ### matches_get_one                                                          │
00:08:00 v #9660 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:08:00 v #9661 > >
00:08:00 v #9662 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:08:00 v #9663 > > inl matches_get_one forall t. (x : string) (matches : arg_matches) :
00:08:00 v #9664 > > optionm'.option' t =
00:08:00 v #9665 > >     inl x = join x
00:08:00 v #9666 > >     inl x = x |> sm'.as_str
00:08:00 v #9667 > >     !\\((matches, x), $'"clap::ArgMatches::get_one(&$0, $1).cloned()"')
00:08:01 v #9668 > >
00:08:01 v #9669 > > ── markdown ────────────────────────────────────────────────────────────────────
00:08:01 v #9670 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:08:01 v #9671 > > │ ### matches_get_flag                                                         │
00:08:01 v #9672 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:08:01 v #9673 > >
00:08:01 v #9674 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:08:01 v #9675 > > inl matches_get_flag (x : string) (matches : arg_matches) : bool =
00:08:01 v #9676 > >     inl x = join x
00:08:01 v #9677 > >     inl x = x |> sm'.as_str
00:08:01 v #9678 > >     !\\((matches, x), $'"clap::ArgMatches::get_flag(&$0, $1)"')
00:08:01 v #9679 > >
00:08:01 v #9680 > > ── markdown ────────────────────────────────────────────────────────────────────
00:08:01 v #9681 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:08:01 v #9682 > > │ ### matches_get_many                                                         │
00:08:01 v #9683 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:08:01 v #9684 > >
00:08:01 v #9685 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:08:01 v #9686 > > inl matches_get_many forall t. (x : string) (matches : arg_matches) :
00:08:01 v #9687 > > optionm'.option' (am'.vec t) =
00:08:01 v #9688 > >     inl x = join x
00:08:01 v #9689 > >     inl x = x |> sm'.as_str
00:08:01 v #9690 > >     !\\((matches, x), $'"clap::ArgMatches::get_many(&$0, $1).map(|x|
00:08:01 v #9691 > > x.cloned().into_iter().collect())"')
00:08:01 v #9692 > >
00:08:01 v #9693 > > ── markdown ────────────────────────────────────────────────────────────────────
00:08:01 v #9694 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:08:01 v #9695 > > │ ### matches_get_occurrences                                                  │
00:08:01 v #9696 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:08:01 v #9697 > >
00:08:01 v #9698 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:08:01 v #9699 > > inl matches_get_occurrences (x : string) (matches : arg_matches) :
00:08:01 v #9700 > > optionm'.option' (array_base sm'.std_string) =
00:08:01 v #9701 > >     inl x = join x
00:08:01 v #9702 > >     inl x = x |> sm'.as_str
00:08:01 v #9703 > >     !\($'"clap::ArgMatches::get_occurrences(&!matches, !x).cloned()"')
00:08:02 v #9704 > >
00:08:02 v #9705 > > ── markdown ────────────────────────────────────────────────────────────────────
00:08:02 v #9706 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:08:02 v #9707 > > │ ### matches_subcommand                                                       │
00:08:02 v #9708 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:08:02 v #9709 > >
00:08:02 v #9710 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:08:02 v #9711 > > inl matches_subcommand (matches : arg_matches) : optionm'.option'
00:08:02 v #9712 > > (sm'.std_string * arg_matches) =
00:08:02 v #9713 > >     !\\((matches, sm'.ref_to_std_string),
00:08:02 v #9714 > > $'"clap::ArgMatches::subcommand(Box::leak(Box::new($0))).map(|(a, b)| ($1(a),
00:08:02 v #9715 > > b.clone()))"')
00:08:02 v #9716 > >
00:08:02 v #9717 > > ── markdown ────────────────────────────────────────────────────────────────────
00:08:02 v #9718 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:08:02 v #9719 > > │ ### matches_values_of                                                        │
00:08:02 v #9720 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:08:02 v #9721 > >
00:08:02 v #9722 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:08:02 v #9723 > > inl matches_values_of (x : string) (matches : arg_matches) : array_base
00:08:02 v #9724 > > sm'.std_string =
00:08:02 v #9725 > >     !\\((matches, x), $'"clap::ArgMatches::values_of($0, &*$1)"')
00:08:03 v #9726 > >
00:08:03 v #9727 > > ── markdown ────────────────────────────────────────────────────────────────────
00:08:03 v #9728 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:08:03 v #9729 > > │ ### command_subcommand_required                                              │
00:08:03 v #9730 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:08:03 v #9731 > >
00:08:03 v #9732 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:08:03 v #9733 > > inl command_subcommand_required (value : bool) (command : command) : command =
00:08:03 v #9734 > >     !\\(command, $'"clap::Command::subcommand_required($0, !value)"')
00:08:03 v #9735 > >
00:08:03 v #9736 > > ── markdown ────────────────────────────────────────────────────────────────────
00:08:03 v #9737 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:08:03 v #9738 > > │ ### command_subcommand                                                       │
00:08:03 v #9739 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:08:03 v #9740 > >
00:08:03 v #9741 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:08:03 v #9742 > > inl command_subcommand (subcommand : command) (command : command) : command =
00:08:03 v #9743 > >     !\\(command, $'"clap::Command::subcommand($0, !subcommand)"')
00:08:04 v #9744 > >
00:08:04 v #9745 > > ── markdown ────────────────────────────────────────────────────────────────────
00:08:04 v #9746 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:08:04 v #9747 > > │ ### value_parser_possible_values                                             │
00:08:04 v #9748 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:08:04 v #9749 > >
00:08:04 v #9750 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:08:04 v #9751 > > inl value_parser_possible_values (values : array_base string) : value_parser =
00:08:04 v #9752 > >     inl values =
00:08:04 v #9753 > >         values
00:08:04 v #9754 > >         |> am'.to_vec
00:08:04 v #9755 > >         |> am'.vec_map (sm'.to_std_string >> rust.new_box >> rust.box_leak >>
00:08:04 v #9756 > > new_possible_value)
00:08:04 v #9757 > >     !\\(values,
00:08:04 v #9758 > > $'"Into::<clap::builder::ValueParser>::into(clap::builder::PossibleValuesParser:
00:08:04 v #9759 > > :new($0))"')
00:08:04 v #9760 > >
00:08:04 v #9761 > > ── markdown ────────────────────────────────────────────────────────────────────
00:08:04 v #9762 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:08:04 v #9763 > > │ ### arg_union                                                                │
00:08:04 v #9764 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:08:04 v #9765 > >
00:08:04 v #9766 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:08:04 v #9767 > > inl arg_union forall union_type. (fn : union_type -> ()) (arg : arg) : arg =
00:08:04 v #9768 > >     arg
00:08:04 v #9769 > >     |> arg_value_parser (
00:08:04 v #9770 > >         real reflection.get_union_fields_untag `union_type ()
00:08:04 v #9771 > >         |> fun x => x : _ (string * union_type)
00:08:04 v #9772 > >         |> listm.map fst
00:08:04 v #9773 > >         |> listm'.box
00:08:04 v #9774 > >         |> listm'.to_array'
00:08:04 v #9775 > >         |> value_parser_possible_values
00:08:04 v #9776 > >     )
00:08:04 v #9777 > >
00:08:04 v #9778 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:08:04 v #9779 > > //// test
00:08:04 v #9780 > > ///! rust -d clap
00:08:04 v #9781 > >
00:08:04 v #9782 > > ##"command"
00:08:04 v #9783 > > |> new_command
00:08:04 v #9784 > > |> command_init_arg ("trace-level", 't') (
00:08:04 v #9785 > >     real arg_union `trace_level ignore
00:08:04 v #9786 > > )
00:08:04 v #9787 > > |> command_get_matches_from ;[[ "_"; "--trace-level"; "Critical" ]]
00:08:04 v #9788 > > |> matches_get_one "trace-level"
00:08:04 v #9789 > > |> optionm'.unwrap
00:08:04 v #9790 > > |> sm'.from_std_string
00:08:04 v #9791 > > |> reflection.union_try_pick
00:08:04 v #9792 > > |> optionm.value
00:08:04 v #9793 > > |> _assert_eq Critical
00:08:07 v #9794 > >
00:08:07 v #9795 > > ╭─[ 2.96s - return value ]─────────────────────────────────────────────────────╮
00:08:07 v #9796 > > │ __assert_eq / actual: US1_4 / expected: US1_4                                │
00:08:07 v #9797 > > │                                                                              │
00:08:07 v #9798 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:08:07 v #9799 > >
00:08:07 v #9800 > > ── markdown ────────────────────────────────────────────────────────────────────
00:08:07 v #9801 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:08:07 v #9802 > > │ ### command_debug_assert                                                     │
00:08:07 v #9803 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:08:07 v #9804 > >
00:08:07 v #9805 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:08:07 v #9806 > > inl command_debug_assert (command : command) : () =
00:08:07 v #9807 > >     !\\(command, $'"clap::Command::debug_assert($0)"')
00:08:08 v #9808 > >
00:08:08 v #9809 > > ── markdown ────────────────────────────────────────────────────────────────────
00:08:08 v #9810 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:08:08 v #9811 > > │ ## fsharp                                                                    │
00:08:08 v #9812 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:08:08 v #9813 > >
00:08:08 v #9814 > > ── markdown ────────────────────────────────────────────────────────────────────
00:08:08 v #9815 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:08:08 v #9816 > > │ ### process                                                                  │
00:08:08 v #9817 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:08:08 v #9818 > >
00:08:08 v #9819 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:08:08 v #9820 > > nominal process = $'System.Diagnostics.Process'
00:08:08 v #9821 > >
00:08:08 v #9822 > > ── markdown ────────────────────────────────────────────────────────────────────
00:08:08 v #9823 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:08:08 v #9824 > > │ ### process_start_info                                                       │
00:08:08 v #9825 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:08:08 v #9826 > >
00:08:08 v #9827 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:08:08 v #9828 > > nominal process_start_info = $'System.Diagnostics.ProcessStartInfo'
00:08:09 v #9829 > >
00:08:09 v #9830 > > ── markdown ────────────────────────────────────────────────────────────────────
00:08:09 v #9831 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:08:09 v #9832 > > │ ### data_received_event_args                                                 │
00:08:09 v #9833 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:08:09 v #9834 > >
00:08:09 v #9835 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:08:09 v #9836 > > nominal data_received_event_args = $'System.Diagnostics.DataReceivedEventArgs'
00:08:09 v #9837 > >
00:08:09 v #9838 > > ── markdown ────────────────────────────────────────────────────────────────────
00:08:09 v #9839 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:08:09 v #9840 > > │ ### new_process                                                              │
00:08:09 v #9841 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:08:09 v #9842 > >
00:08:09 v #9843 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:08:09 v #9844 > > inl new_process (process_start_info : process_start_info) : process =
00:08:09 v #9845 > >     $'new `process (StartInfo = !process_start_info)'
00:08:10 v #9846 > >
00:08:10 v #9847 > > ── markdown ────────────────────────────────────────────────────────────────────
00:08:10 v #9848 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:08:10 v #9849 > > │ ### process_start                                                            │
00:08:10 v #9850 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:08:10 v #9851 > >
00:08:10 v #9852 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:08:10 v #9853 > > inl process_start (process : process) : bool =
00:08:10 v #9854 > >     $'!process.Start' ()
00:08:10 v #9855 > >
00:08:10 v #9856 > > ── markdown ────────────────────────────────────────────────────────────────────
00:08:10 v #9857 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:08:10 v #9858 > > │ ### process_exit_code                                                        │
00:08:10 v #9859 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:08:10 v #9860 > >
00:08:10 v #9861 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:08:10 v #9862 > > inl process_exit_code (process : process) : i32 =
00:08:10 v #9863 > >     $'!process.ExitCode'
00:08:10 v #9864 > >
00:08:10 v #9865 > > ── markdown ────────────────────────────────────────────────────────────────────
00:08:10 v #9866 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:08:10 v #9867 > > │ ### process_id                                                               │
00:08:10 v #9868 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:08:10 v #9869 > >
00:08:10 v #9870 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:08:10 v #9871 > > inl process_id (process : process) : i32 =
00:08:10 v #9872 > >     run_target function
00:08:10 v #9873 > >         | Fsharp (Native) => fun () => $'!process.Id'
00:08:10 v #9874 > >         | _ => fun () => null ()
00:08:11 v #9875 > >
00:08:11 v #9876 > > ── markdown ────────────────────────────────────────────────────────────────────
00:08:11 v #9877 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:08:11 v #9878 > > │ ### process_has_exited                                                       │
00:08:11 v #9879 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:08:11 v #9880 > >
00:08:11 v #9881 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:08:11 v #9882 > > inl process_has_exited (process : process) : bool =
00:08:11 v #9883 > >     run_target function
00:08:11 v #9884 > >         | Fsharp (Native) => fun () => $'!process.HasExited'
00:08:11 v #9885 > >         | _ => fun () => null ()
00:08:11 v #9886 > >
00:08:11 v #9887 > > ── markdown ────────────────────────────────────────────────────────────────────
00:08:11 v #9888 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:08:11 v #9889 > > │ ### process_kill                                                             │
00:08:11 v #9890 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:08:11 v #9891 > >
00:08:11 v #9892 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:08:11 v #9893 > > inl process_kill (process : process) : () =
00:08:11 v #9894 > >     run_target function
00:08:11 v #9895 > >         | Fsharp (Native) => fun () =>
00:08:11 v #9896 > >             $'!process.Kill' ()
00:08:11 v #9897 > >         | _ => fun () => ()
00:08:12 v #9898 > >
00:08:12 v #9899 > > ── markdown ────────────────────────────────────────────────────────────────────
00:08:12 v #9900 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:08:12 v #9901 > > │ ### process_begin_error_read_line                                            │
00:08:12 v #9902 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:08:12 v #9903 > >
00:08:12 v #9904 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:08:12 v #9905 > > inl process_begin_error_read_line (process : process) : () =
00:08:12 v #9906 > >     $'!process.BeginErrorReadLine' ()
00:08:12 v #9907 > >
00:08:12 v #9908 > > ── markdown ────────────────────────────────────────────────────────────────────
00:08:12 v #9909 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:08:12 v #9910 > > │ ### process_begin_output_read_line                                           │
00:08:12 v #9911 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:08:12 v #9912 > >
00:08:12 v #9913 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:08:12 v #9914 > > inl process_begin_output_read_line (process : process) : () =
00:08:12 v #9915 > >     $'!process.BeginOutputReadLine' ()
00:08:13 v #9916 > >
00:08:13 v #9917 > > ── markdown ────────────────────────────────────────────────────────────────────
00:08:13 v #9918 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:08:13 v #9919 > > │ ### process_add_output_data_received                                         │
00:08:13 v #9920 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:08:13 v #9921 > >
00:08:13 v #9922 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:08:13 v #9923 > > inl process_add_output_data_received fn (process : process) : () =
00:08:13 v #9924 > >     $'!process.OutputDataReceived.Add !fn '
00:08:13 v #9925 > >
00:08:13 v #9926 > > ── markdown ────────────────────────────────────────────────────────────────────
00:08:13 v #9927 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:08:13 v #9928 > > │ ### process_add_error_data_received                                          │
00:08:13 v #9929 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:08:13 v #9930 > >
00:08:13 v #9931 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:08:13 v #9932 > > inl process_add_error_data_received fn (process : process) : () =
00:08:13 v #9933 > >     $'!process.ErrorDataReceived.Add !fn '
00:08:13 v #9934 > >
00:08:13 v #9935 > > ── markdown ────────────────────────────────────────────────────────────────────
00:08:13 v #9936 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:08:13 v #9937 > > │ ### process_wait_for_exit_async                                              │
00:08:13 v #9938 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:08:13 v #9939 > >
00:08:13 v #9940 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:08:13 v #9941 > > inl process_wait_for_exit_async (ct : threading.cancellation_token) (process :
00:08:13 v #9942 > > process) : async.task () =
00:08:13 v #9943 > >     $'!process.WaitForExitAsync !ct '
00:08:14 v #9944 > >
00:08:14 v #9945 > > ── markdown ────────────────────────────────────────────────────────────────────
00:08:14 v #9946 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:08:14 v #9947 > > │ ### event_data                                                               │
00:08:14 v #9948 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:08:14 v #9949 > >
00:08:14 v #9950 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:08:14 v #9951 > > inl event_data (e : data_received_event_args) : string =
00:08:14 v #9952 > >     run_target function
00:08:14 v #9953 > >         | Fsharp (Native) => fun () => $'!e.Data'
00:08:14 v #9954 > >         | _ => fun () => null ()
00:08:14 v #9955 > >
00:08:14 v #9956 > > ── markdown ────────────────────────────────────────────────────────────────────
00:08:14 v #9957 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:08:14 v #9958 > > │ ### execute_with_options_async                                               │
00:08:14 v #9959 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:08:14 v #9960 > >
00:08:14 v #9961 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:08:14 v #9962 > > let execute_with_options_async (options : execution_options) : _ (i32 * string)
00:08:14 v #9963 > > =
00:08:14 v #9964 > >     run_target_args (fun () => options) function
00:08:14 v #9965 > >         | Fsharp (Native) => fun options =>
00:08:14 v #9966 > >             fun () =>
00:08:14 v #9967 > >                 inl file_name, arguments = options.command |> split_command |>
00:08:14 v #9968 > > resultm.get
00:08:14 v #9969 > >                 inl working_directory = options.working_directory |>
00:08:14 v #9970 > > optionm'.unbox |> optionm'.default_value ""
00:08:14 v #9971 > >
00:08:14 v #9972 > >                 trace Debug
00:08:14 v #9973 > >                     fun () => "runtime.execute_with_options_async"
00:08:14 v #9974 > >                     fun () => { file_name arguments options }
00:08:14 v #9975 > >
00:08:14 v #9976 > >                 inl utf8 = sm'.encoding_utf8 ()
00:08:14 v #9977 > >                 inl arguments = arguments |> optionm'.default_value ""
00:08:14 v #9978 > >
00:08:14 v #9979 > >                 $'let start_info = System.Diagnostics.ProcessStartInfo ('
00:08:14 v #9980 > >                 $'  Arguments = !arguments,'
00:08:14 v #9981 > >                 $'  StandardOutputEncoding = !utf8,'
00:08:14 v #9982 > >                 $'  WorkingDirectory = !working_directory,'
00:08:14 v #9983 > >                 $'  FileName = !file_name,'
00:08:14 v #9984 > >                 $'  CreateNoWindow = true,'
00:08:14 v #9985 > >                 $'  RedirectStandardError = true,'
00:08:14 v #9986 > >                 $'  RedirectStandardOutput = true,'
00:08:14 v #9987 > >                 $'  UseShellExecute = false'
00:08:14 v #9988 > >                 $')'
00:08:14 v #9989 > >                 inl start_info : process_start_info = $'start_info'
00:08:14 v #9990 > >
00:08:14 v #9991 > >                 inl environment_variables = join options.environment_variables
00:08:14 v #9992 > >                 (a environment_variables : _ i32 _)
00:08:14 v #9993 > >                 |> am.iter fun key, value =>
00:08:14 v #9994 > >                     $'!start_info.EnvironmentVariables.[[!key]] <- !value '
00:08:14 v #9995 > >
00:08:14 v #9996 > >                 inl proc = start_info |> new_process |> use
00:08:14 v #9997 > >                 inl output : _ string = threading.new_concurrent_stack ()
00:08:14 v #9998 > >
00:08:14 v #9999 > >                 inl event error (e : data_received_event_args) = async.new_async
00:08:14 v #10000 > > fun () =>
00:08:14 v #10001 > >                     inl data = e |> event_data
00:08:14 v #10002 > >                     if data <> null () then
00:08:14 v #10003 > >                         match options.on_line |> optionm'.unbox with
00:08:14 v #10004 > >                         | Some on_line =>
00:08:14 v #10005 > >                             on_line
00:08:14 v #10006 > >                                 {
00:08:14 v #10007 > >                                     process_id = proc |> process_id
00:08:14 v #10008 > >                                     line = data
00:08:14 v #10009 > >                                     error = error
00:08:14 v #10010 > >                                 }
00:08:14 v #10011 > >                             |> async.do
00:08:14 v #10012 > >                         | None => ()
00:08:14 v #10013 > >
00:08:14 v #10014 > >                         inl text =
00:08:14 v #10015 > >                             if error
00:08:14 v #10016 > >                             then $'$"\! {!data}"'
00:08:14 v #10017 > >                             else $'$"> {!data}"'
00:08:14 v #10018 > >                         if options.trace
00:08:14 v #10019 > >                         then trace Verbose (fun () => text) id
00:08:14 v #10020 > >                         else text |> console.write_line
00:08:14 v #10021 > >
00:08:14 v #10022 > >                         inl l = if error then $'"\\u001b[[7;4m"' else ""
00:08:14 v #10023 > >                         inl r = if error then $'"\\u001b[[0m"' else ""
00:08:14 v #10024 > >                         output |> threading.concurrent_stack_push
00:08:14 v #10025 > > $'$"{!l}{!data}{!r}"'
00:08:14 v #10026 > >
00:08:14 v #10027 > >                 proc |> process_add_output_data_received (event false >>
00:08:14 v #10028 > > async.start_immediate)
00:08:14 v #10029 > >                 proc |> process_add_error_data_received (event true >>
00:08:14 v #10030 > > async.start_immediate)
00:08:14 v #10031 > >
00:08:14 v #10032 > >                 if proc |> process_start |> not
00:08:14 v #10033 > >                 then failwith $'$"runtime.execute_with_options_async
00:08:14 v #10034 > > process_start error"'
00:08:14 v #10035 > >
00:08:14 v #10036 > >                 proc |> process_begin_error_read_line
00:08:14 v #10037 > >                 proc |> process_begin_output_read_line
00:08:14 v #10038 > >
00:08:14 v #10039 > >                 inl ct =
00:08:14 v #10040 > >                     options.cancellation_token
00:08:14 v #10041 > >                     |> optionm'.unbox
00:08:14 v #10042 > >                     |> optionm'.default_with threading.token_none
00:08:14 v #10043 > >                     |> async.merge_cancellation_token_with_default_async
00:08:14 v #10044 > >                     |> async.let'
00:08:14 v #10045 > >
00:08:14 v #10046 > >                 ct |> threading.token_register fun () =>
00:08:14 v #10047 > >                     if proc |> process_has_exited |> not
00:08:14 v #10048 > >                     then proc |> process_kill
00:08:14 v #10049 > >                 |> use
00:08:14 v #10050 > >                 |> ignore
00:08:14 v #10051 > >
00:08:14 v #10052 > >                 inl exit_code : i32 =
00:08:14 v #10053 > >                     fun () =>
00:08:14 v #10054 > >                         try_unit
00:08:14 v #10055 > >                             fun () =>
00:08:14 v #10056 > >                                 proc
00:08:14 v #10057 > >                                 |> process_wait_for_exit_async ct
00:08:14 v #10058 > >                                 |> async.await_task
00:08:14 v #10059 > >                                 |> async.do
00:08:14 v #10060 > >                                 proc |> process_exit_code |> return
00:08:14 v #10061 > >                             fun ex =>
00:08:14 v #10062 > >                                 // with :?
00:08:14 v #10063 > > System.Threading.Tasks.TaskCanceledException as ex =>
00:08:14 v #10064 > >                                 inl ex' = ex |> sm'.format_exception
00:08:14 v #10065 > >                                 output |> threading.concurrent_stack_push ex'
00:08:14 v #10066 > >                                 inl ex : async.task_canceled_exception = ex |>
00:08:14 v #10067 > > unbox
00:08:14 v #10068 > >                                 trace Warning
00:08:14 v #10069 > >                                     fun () =>
00:08:14 v #10070 > > "runtime.execute_with_options_async / WaitForExitAsync"
00:08:14 v #10071 > >                                     fun () => { ex }
00:08:14 v #10072 > >                                 (limit.min : i32) |> return
00:08:14 v #10073 > >                     |> async.new_async_unit
00:08:14 v #10074 > >                     |> async.let'
00:08:14 v #10075 > >
00:08:14 v #10076 > >                 inl output =
00:08:14 v #10077 > >                     output
00:08:14 v #10078 > >                     |> seq.cast'
00:08:14 v #10079 > >                     |> seq.rev''
00:08:14 v #10080 > >                     |> fun x => x : seq.seq' string
00:08:14 v #10081 > >                     |> sm'.concat "\n"
00:08:14 v #10082 > >
00:08:14 v #10083 > >                 trace Debug
00:08:14 v #10084 > >                     fun () => "runtime.execute_with_options_async"
00:08:14 v #10085 > >                     fun () => { exit_code output_length = output |> sm'.length :
00:08:14 v #10086 > > i32 }
00:08:14 v #10087 > >
00:08:14 v #10088 > >                 (exit_code, output) |> return
00:08:14 v #10089 > >             |> async.new_async_unit
00:08:14 v #10090 > >         | _ => fun _ =>
00:08:14 v #10091 > >             global "#if FABLE_COMPILER\n[[<CompilationRepresentation
00:08:14 v #10092 > > (CompilationRepresentationFlags.ModuleSuffix)>]]\nmodule System =\n module
00:08:14 v #10093 > > Diagnostics =\n  type Process = unit\n  type DataReceivedEventArgs =
00:08:14 v #10094 > > unit\n#endif"
00:08:14 v #10095 > >             null ()
00:08:15 v #10096 > >
00:08:15 v #10097 > > ── markdown ────────────────────────────────────────────────────────────────────
00:08:15 v #10098 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:08:15 v #10099 > > │ ### execute_async                                                            │
00:08:15 v #10100 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:08:15 v #10101 > >
00:08:15 v #10102 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:08:15 v #10103 > > inl execute_async command =
00:08:15 v #10104 > >     execution_options fun x => { x with
00:08:15 v #10105 > >         command = command
00:08:15 v #10106 > >     }
00:08:15 v #10107 > >     |> execute_with_options_async
00:08:15 v #10108 > >
00:08:15 v #10109 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:08:15 v #10110 > > //// test
00:08:15 v #10111 > >
00:08:15 v #10112 > > inl content = "╭─[[ 你好,世界!こんにちは世界! ]]─╮"
00:08:15 v #10113 > > fun () =>
00:08:15 v #10114 > >     inl file_name = "test.txt"
00:08:15 v #10115 > >     inl temp_dir, disposable =
00:08:15 v #10116 > >         (file_name, content)
00:08:15 v #10117 > >         |> sm'.format_debug
00:08:15 v #10118 > >         |> crypto.hash_text
00:08:15 v #10119 > >         |> file_system.create_temp_dir'
00:08:15 v #10120 > >     disposable |> use |> ignore
00:08:15 v #10121 > >
00:08:15 v #10122 > >     inl path = temp_dir </> file_name
00:08:15 v #10123 > >
00:08:15 v #10124 > >     inl exit_code, result = execute_async $'\@$"pwsh -c ""Get-Content
00:08:15 v #10125 > > {!path}"""' |> async.let'
00:08:15 v #10126 > >     exit_code |> join _assert_eq 1
00:08:15 v #10127 > >     result |> _assert sm'.contains "not exist"
00:08:15 v #10128 > >
00:08:15 v #10129 > >     content |> file_system.write_all_text_async path |> async.do
00:08:15 v #10130 > >
00:08:15 v #10131 > >     execution_options fun x => { x with
00:08:15 v #10132 > >         command = $'\@$"cat ""{!file_name}"""'
00:08:15 v #10133 > >         working_directory = Some temp_dir |> optionm'.box
00:08:15 v #10134 > >     }
00:08:15 v #10135 > >     |> execute_with_options_async
00:08:15 v #10136 > >     |> async.let'
00:08:15 v #10137 > >     |> ignore
00:08:15 v #10138 > >
00:08:15 v #10139 > >     execution_options fun x => { x with
00:08:15 v #10140 > >         command = $'\@$"pwsh -c ""[[System.Console]]::OutputEncoding =
00:08:15 v #10141 > > [[System.Text.Encoding]]::UTF8; Get-Content {!file_name}"""'
00:08:15 v #10142 > >         working_directory = Some temp_dir |> optionm'.box
00:08:15 v #10143 > >     }
00:08:15 v #10144 > >     |> execute_with_options_async
00:08:15 v #10145 > >     |> async.return_await
00:08:15 v #10146 > > |> async.new_async_unit
00:08:15 v #10147 > > |> async.run_with_timeout 10000
00:08:15 v #10148 > > |> function
00:08:15 v #10149 > >     | Some (exit_code, output) =>
00:08:15 v #10150 > >         exit_code |> join _assert_eq 0i32
00:08:15 v #10151 > >         output |> join _assert_eq content
00:08:15 v #10152 > >         true
00:08:15 v #10153 > >     | _ => false
00:08:15 v #10154 > > |> _assert_eq true
00:08:23 v #10155 > >
00:08:23 v #10156 > > ╭─[ 7.81s - stdout ]───────────────────────────────────────────────────────────╮
00:08:23 v #10157 > > │ 00:00:00 d #1 runtime.execute_with_options_async / { file_name = pwsh;  │
00:08:23 v #10158 > > │ arguments = US2_0                                                            │
00:08:23 v #10159 > > │   "-c "Get-Content                                                           │
00:08:23 v #10160 > > │ C:\Users\i574n\AppData\Local\Temp\!create_temp_path_\dotnet-repl\76793606-81 │
00:08:23 v #10161 > > │ 3b-88ad-7791-7ce2871edce9\test.txt""; options = { command = pwsh -c          │
00:08:23 v #10162 > > │ "Get-Content                                                                 │
00:08:23 v #10163 > > │ C:\Users\i574n\AppData\Local\Temp\!create_temp_path_\dotnet-repl\76793606-81 │
00:08:23 v #10164 > > │ 3b-88ad-7791-7ce2871edce9\test.txt"; cancellation_token = None;              │
00:08:23 v #10165 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true;    │
00:08:23 v #10166 > > │ working_directory = None } }                                                 │
00:08:23 v #10167 > > │ 00:00:00 v #2 ! Get-Content: Cannot find path                 │
00:08:23 v #10168 > > │ 'C:\Users\i574n\AppData\Local\Temp\!create_temp_path_\dotnet-repl\76793606-8 │
00:08:23 v #10169 > > │ 13b-88ad-7791-7ce2871edce9\test.txt' because it does not exist.            │
00:08:23 v #10170 > > │ 00:00:00 d #3 runtime.execute_with_options_async / { exit_code = 1;     │
00:08:23 v #10171 > > │ output_length = 197 }                                                        │
00:08:23 v #10172 > > │ __assert_eq / actual: 1 / expected: 1                                        │
00:08:23 v #10173 > > │ __assert / actual: "not exist" / expected: "Get-Content: [           │
00:08:23 v #10174 > > │ 31;1mCannot find path                                                        │
00:08:23 v #10175 > > │ 'C:\Users\i574n\AppData\Local\Temp\!create_temp_path_\dotnet-repl\76793606-8 │
00:08:23 v #10176 > > │ 13b-88ad-7791-7ce2871edce9\test.txt' because it does not exist."         │
00:08:23 v #10177 > > │ 00:00:00 d #4 runtime.execute_with_options_async / { file_name = cat;   │
00:08:23 v #10178 > > │ arguments = US2_0 ""test.txt""; options = { command = cat "test.txt";        │
00:08:23 v #10179 > > │ cancellation_token = None; environment_variables = [||]; on_line = None;     │
00:08:23 v #10180 > > │ stdin = None; trace = true; working_directory = Some                         │
00:08:23 v #10181 > > │                                                                              │
00:08:23 v #10182 > > │ "C:\Users\i574n\AppData\Local\Temp\!create_temp_path_\dotnet-repl\76793606-8 │
00:08:23 v #10183 > > │ 13b-88ad-7791-7ce2871edce9" } }                                              │
00:08:23 v #10184 > > │ 00:00:00 v #5 > ╭─[ 你好,世界!こんにちは世界! ]─╮                    │
00:08:23 v #10185 > > │ 00:00:00 d #6 runtime.execute_with_options_async / { exit_code = 0;     │
00:08:23 v #10186 > > │ output_length = 22 }                                                         │
00:08:23 v #10187 > > │ 00:00:00 d #7 runtime.execute_with_options_async / { file_name = pwsh;  │
00:08:23 v #10188 > > │ arguments = US2_0                                                            │
00:08:23 v #10189 > > │   "-c "[System.Console]::OutputEncoding = [System.Text.Encoding]::UTF8;      │
00:08:23 v #10190 > > │ Get-Content test.txt""; options = { command = pwsh -c "[                     │
00:08:23 v #10191 > > │ System.Console]::OutputEncoding = [System.Text.Encoding]::UTF8; Get-Content  │
00:08:23 v #10192 > > │ test.txt"; cancellation_token = None; environment_variables = [||]; on_line  │
00:08:23 v #10193 > > │ = None; stdin = None; trace = true; working_directory = Some                 │
00:08:23 v #10194 > > │                                                                              │
00:08:23 v #10195 > > │ "C:\Users\i574n\AppData\Local\Temp\!create_temp_path_\dotnet-repl\76793606-8 │
00:08:23 v #10196 > > │ 13b-88ad-7791-7ce2871edce9" } }                                              │
00:08:23 v #10197 > > │ 00:00:00 v #8 > ╭─[ 你好,世界!こんにちは世界! ]─╮                    │
00:08:23 v #10198 > > │ 00:00:01 d #9 runtime.execute_with_options_async / { exit_code = 0;     │
00:08:23 v #10199 > > │ output_length = 22 }                                                         │
00:08:23 v #10200 > > │ __assert_eq / actual: 0 / expected: 0                                        │
00:08:23 v #10201 > > │ __assert_eq / actual: "╭─[ 你好,世界!こんにちは世界! ]─╮" / expected: "╭─ │
00:08:23 v #10202 > > │ [ 你好,世界!こんにちは世界! ]─╮"                                          │
00:08:23 v #10203 > > │ __assert_eq / actual: true / expected: true                                  │
00:08:23 v #10204 > > │                                                                              │
00:08:23 v #10205 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:08:23 v #10206 > >
00:08:23 v #10207 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:08:23 v #10208 > > //// test
00:08:23 v #10209 > >
00:08:23 v #10210 > > fun () =>
00:08:23 v #10211 > >     inl file_name = "test.txt"
00:08:23 v #10212 > >     inl text = "0"
00:08:23 v #10213 > >
00:08:23 v #10214 > >     inl temp_dir, disposable =
00:08:23 v #10215 > >         (file_name, text)
00:08:23 v #10216 > >         |> sm'.format_debug
00:08:23 v #10217 > >         |> crypto.hash_text
00:08:23 v #10218 > >         |> file_system.create_temp_dir'
00:08:23 v #10219 > >     disposable |> use |> ignore
00:08:23 v #10220 > >     inl path = temp_dir </> file_name
00:08:23 v #10221 > >     text |> file_system.write_all_text_async path |> async.do
00:08:23 v #10222 > >
00:08:23 v #10223 > >     inl cts = threading.new_cancellation_token_source ()
00:08:23 v #10224 > >     trace Debug (fun () => "1") id
00:08:23 v #10225 > >     inl result =
00:08:23 v #10226 > >         execution_options fun x => { x with
00:08:23 v #10227 > >             command = $'\@$"pwsh -c ""Get-Content {!path}"""'
00:08:23 v #10228 > >             cancellation_token = cts |> threading.cancellation_source_token |>
00:08:23 v #10229 > > Some |> optionm'.box
00:08:23 v #10230 > >         }
00:08:23 v #10231 > >         |> execute_with_options_async
00:08:23 v #10232 > >         |> async.start_child
00:08:23 v #10233 > >         |> async.let'
00:08:23 v #10234 > >     trace Debug (fun () => "2") id
00:08:23 v #10235 > >     async.sleep 100 |> async.do
00:08:23 v #10236 > >     trace Debug (fun () => "3") id
00:08:23 v #10237 > >     cts |> threading.cancellation_source_cancel
00:08:23 v #10238 > >     trace Debug (fun () => "4") id
00:08:23 v #10239 > >     inl exit_code, output = result |> async.let'
00:08:23 v #10240 > >     trace Debug (fun () => "5") id
00:08:23 v #10241 > >     (exit_code, output) |> return
00:08:23 v #10242 > > |> async.new_async_unit
00:08:23 v #10243 > > |> async.run_with_timeout 10000
00:08:23 v #10244 > > |> function
00:08:23 v #10245 > >     | Some (exit_code, output) =>
00:08:23 v #10246 > >         exit_code |> _assert_eq -2147483648i32
00:08:23 v #10247 > >         output |> _assert_eq (join
00:08:23 v #10248 > > "System.Threading.Tasks.TaskCanceledException: A task was canceled.")
00:08:23 v #10249 > >         true
00:08:23 v #10250 > >     | _ => false
00:08:23 v #10251 > > |> _assert_eq true
00:08:30 v #10252 > >
00:08:30 v #10253 > > ╭─[ 7.17s - stdout ]───────────────────────────────────────────────────────────╮
00:08:30 v #10254 > > │ 00:00:00 d #1 1                                                         │
00:08:30 v #10255 > > │ 00:00:00 d #2 2                                                         │
00:08:30 v #10256 > > │ 00:00:00 d #3 runtime.execute_with_options_async / { file_name = pwsh;  │
00:08:30 v #10257 > > │ arguments = US2_0                                                            │
00:08:30 v #10258 > > │   "-c "Get-Content                                                           │
00:08:30 v #10259 > > │ C:\Users\i574n\AppData\Local\Temp\!create_temp_path_\dotnet-repl\613830ed-01 │
00:08:30 v #10260 > > │ 6e-d959-8d21-02dc1c63c252\test.txt""; options = { command = pwsh -c          │
00:08:30 v #10261 > > │ "Get-Content                                                                 │
00:08:30 v #10262 > > │ C:\Users\i574n\AppData\Local\Temp\!create_temp_path_\dotnet-repl\613830ed-01 │
00:08:30 v #10263 > > │ 6e-d959-8d21-02dc1c63c252\test.txt"; cancellation_token = Some               │
00:08:30 v #10264 > > │ System.Threading.CancellationToken; environment_variables = [||]; on_line =  │
00:08:30 v #10265 > > │ None; stdin = None; trace = true; working_directory = None } }               │
00:08:30 v #10266 > > │ 00:00:00 d #4 3                                                         │
00:08:30 v #10267 > > │ 00:00:00 d #5 4                                                         │
00:08:30 v #10268 > > │ 00:00:00 w #6 runtime.execute_with_options_async / WaitForExitAsync / { │
00:08:30 v #10269 > > │ ex = System.Threading.Tasks.TaskCanceledException: A task was canceled. }    │
00:08:30 v #10270 > > │ 00:00:00 d #7 runtime.execute_with_options_async / { exit_code =        │
00:08:30 v #10271 > > │ -2147483648; output_length = 66 }                                            │
00:08:30 v #10272 > > │ 00:00:00 d #8 5                                                         │
00:08:30 v #10273 > > │ __assert_eq / actual: -2147483648 / expected: -2147483648                    │
00:08:30 v #10274 > > │ __assert_eq / actual: "System.Threading.Tasks.TaskCanceledException: A task  │
00:08:30 v #10275 > > │ was canceled." / expected: "System.Threading.Tasks.TaskCanceledException: A  │
00:08:30 v #10276 > > │ task was canceled."                                                          │
00:08:30 v #10277 > > │ __assert_eq / actual: true / expected: true                                  │
00:08:30 v #10278 > > │                                                                              │
00:08:30 v #10279 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:08:30 v #10280 > >
00:08:30 v #10281 > > ── markdown ────────────────────────────────────────────────────────────────────
00:08:30 v #10282 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:08:30 v #10283 > > │ ### current_process_kill                                                     │
00:08:30 v #10284 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:08:30 v #10285 > >
00:08:30 v #10286 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:08:30 v #10287 > > inl current_process_kill () =
00:08:30 v #10288 > >     run_target function
00:08:30 v #10289 > >         | Fsharp (Native) => fun () =>
00:08:30 v #10290 > >             inl fn () =
00:08:30 v #10291 > >                 run_target function
00:08:30 v #10292 > >                     | Fsharp (Native) => fun () =>
00:08:30 v #10293 > >                         trace Warning (fun () => "runtime.current_process_kill
00:08:30 v #10294 > > exiting... 3") id
00:08:30 v #10295 > >                         $'System.Threading.Thread.Sleep 300'
00:08:30 v #10296 > >                         trace Warning (fun () => "runtime.current_process_kill
00:08:30 v #10297 > > exiting... 2") id
00:08:30 v #10298 > >                         $'System.Console.Out.Flush ()'
00:08:30 v #10299 > >                         $'System.Threading.Thread.Sleep 60'
00:08:30 v #10300 > >                         trace Warning (fun () => "runtime.current_process_kill
00:08:30 v #10301 > > exiting... 1") id
00:08:30 v #10302 > >                         $'System.Diagnostics.Process.GetCurrentProcess().Kill
00:08:30 v #10303 > > ()' : ()
00:08:30 v #10304 > >                     | _ => fun () => ()
00:08:30 v #10305 > >             inl thread : threading.thread = $'new System.Threading.Thread (!fn)'
00:08:30 v #10306 > >             thread |> $'_.Start()' : ()
00:08:30 v #10307 > >         | _ => fun () => ()
00:08:31 v #10308 > >
00:08:31 v #10309 > > ── markdown ────────────────────────────────────────────────────────────────────
00:08:31 v #10310 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:08:31 v #10311 > > │ ### gc_collect                                                               │
00:08:31 v #10312 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:08:31 v #10313 > >
00:08:31 v #10314 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:08:31 v #10315 > > inl gc_collect () =
00:08:31 v #10316 > >     run_target function
00:08:31 v #10317 > >         | Fsharp _ => fun () => $'System.GC.Collect' () : ()
00:08:31 v #10318 > >         | Python _ => fun () =>
00:08:31 v #10319 > >             backend_switch {
00:08:31 v #10320 > >                 Python = fun () => global "import gc"
00:08:31 v #10321 > >             }
00:08:31 v #10322 > >             ($'gc.collect()' : int) |> ignore
00:08:31 v #10323 > >         | _ => fun () => ()
00:08:31 v #10324 > >
00:08:31 v #10325 > > ── markdown ────────────────────────────────────────────────────────────────────
00:08:31 v #10326 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:08:31 v #10327 > > │ ## runtime                                                                   │
00:08:31 v #10328 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:08:31 v #10329 > >
00:08:31 v #10330 > > ── markdown ────────────────────────────────────────────────────────────────────
00:08:31 v #10331 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:08:31 v #10332 > > │ ### execute_with_options                                                     │
00:08:31 v #10333 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:08:31 v #10334 > >
00:08:31 v #10335 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:08:31 v #10336 > > let execute_with_options (options : execution_options) : i32 * string =
00:08:31 v #10337 > >     run_target function
00:08:31 v #10338 > >         | Fsharp (Native) => fun () =>
00:08:31 v #10339 > >             options |> execute_with_options_async |> async.run_synchronously
00:08:31 v #10340 > >         | Rust (Native) => fun () =>
00:08:31 v #10341 > >             inl command = join options.command
00:08:31 v #10342 > >             inl file_name, arguments = command |> split_command |> resultm.get
00:08:31 v #10343 > >             inl arguments =
00:08:31 v #10344 > >                 arguments
00:08:31 v #10345 > >                 |> optionm'.default_value ""
00:08:31 v #10346 > >                 |> split_args
00:08:31 v #10347 > >                 |> resultm.get
00:08:31 v #10348 > >                 |> am'.to_vec
00:08:31 v #10349 > >                 |> am'.vec_map sm'.to_std_string
00:08:31 v #10350 > >             trace Debug
00:08:31 v #10351 > >                 fun () => "runtime.execute_with_options"
00:08:31 v #10352 > >                 fun () => { file_name arguments = arguments |> sm'.format_debug;
00:08:31 v #10353 > > options }
00:08:31 v #10354 > >             fun () =>
00:08:31 v #10355 > >                 fun () =>
00:08:31 v #10356 > >                     file_name
00:08:31 v #10357 > >                     |> new_process_command
00:08:31 v #10358 > >                     |> process_command_args arguments
00:08:31 v #10359 > >                     |> process_command_stdout (process_stdio_piped ())
00:08:31 v #10360 > >                     |> process_command_stderr (process_stdio_piped ())
00:08:31 v #10361 > >                     |> process_command_stdin (process_stdio_piped ())
00:08:31 v #10362 > >                     |> fun command =>
00:08:31 v #10363 > >                         match options.working_directory |> optionm'.unbox with
00:08:31 v #10364 > >                         | Some working_directory =>
00:08:31 v #10365 > >                             command
00:08:31 v #10366 > >                             |> process_command_current_dir working_directory
00:08:31 v #10367 > >                         | None => command
00:08:31 v #10368 > >                     |> fun command =>
00:08:31 v #10369 > >                         match options.environment_variables with
00:08:31 v #10370 > >                         | ;[[]] => command
00:08:31 v #10371 > >                         | vars =>
00:08:31 v #10372 > >                             (command, vars |> am'.to_vec)
00:08:31 v #10373 > >                             ||> am'.vec_fold' fun command (key, value) =>
00:08:31 v #10374 > >                                 command |> process_command_env key value
00:08:31 v #10375 > >                     |> process_command_spawn
00:08:31 v #10376 > >                     |> resultm.map_error' sm'.format'
00:08:31 v #10377 > >                     |> resultm.map' (optionm'.some' >> (join id) >>
00:08:31 v #10378 > > threading.new_arc_mutex)
00:08:31 v #10379 > >                     |> resultm.unbox'
00:08:31 v #10380 > >                     |> function
00:08:31 v #10381 > >                         | Ok child =>
00:08:31 v #10382 > >                             inl stdout =
00:08:31 v #10383 > >                                 fun () =>
00:08:31 v #10384 > >                                     child
00:08:31 v #10385 > >                                     |> threading.arc_mutex_lock
00:08:31 v #10386 > >                                     |> resultm.unwrap'
00:08:31 v #10387 > >                                     |> threading.mutex_guard_ref_mut
00:08:31 v #10388 > >                                     |> optionm'.as_mut
00:08:31 v #10389 > >                                     |> optionm'.unwrap
00:08:31 v #10390 > >                                     |> process_child_stdout
00:08:31 v #10391 > >                                     |> optionm'.take_ref_mut
00:08:31 v #10392 > >                                     |> optionm'.unwrap
00:08:31 v #10393 > >                                 |> rust.capture
00:08:31 v #10394 > >                             inl stderr =
00:08:31 v #10395 > >                                 fun () =>
00:08:31 v #10396 > >                                     child
00:08:31 v #10397 > >                                     |> threading.arc_mutex_lock
00:08:31 v #10398 > >                                     |> resultm.unwrap'
00:08:31 v #10399 > >                                     |> threading.mutex_guard_ref_mut
00:08:31 v #10400 > >                                     |> optionm'.as_mut
00:08:31 v #10401 > >                                     |> optionm'.unwrap
00:08:31 v #10402 > >                                     |> process_child_stderr
00:08:31 v #10403 > >                                     |> optionm'.take_ref_mut
00:08:31 v #10404 > >                                     |> optionm'.unwrap
00:08:31 v #10405 > >                                 |> rust.capture
00:08:31 v #10406 > >                             inl stdin =
00:08:31 v #10407 > >                                 fun () =>
00:08:31 v #10408 > >                                     child
00:08:31 v #10409 > >                                     |> threading.arc_mutex_lock
00:08:31 v #10410 > >                                     |> resultm.unwrap'
00:08:31 v #10411 > >                                     |> threading.mutex_guard_ref_mut
00:08:31 v #10412 > >                                     |> optionm'.as_mut
00:08:31 v #10413 > >                                     |> optionm'.unwrap
00:08:31 v #10414 > >                                     |> process_child_stdin
00:08:31 v #10415 > >                                     |> optionm'.take_ref_mut
00:08:31 v #10416 > >                                     |> optionm'.unwrap
00:08:31 v #10417 > >                                     |> optionm'.some'
00:08:31 v #10418 > >                                     |> join id
00:08:31 v #10419 > >                                     |> threading.new_arc_mutex
00:08:31 v #10420 > >                                 |> rust.capture
00:08:31 v #10421 > >                             inl channel_sender, channel_receiver =
00:08:31 v #10422 > > threading.new_channel ()
00:08:31 v #10423 > >                             inl channel_sender'' = channel_sender |> (join id)
00:08:31 v #10424 > > |> threading.new_arc_mutex
00:08:31 v #10425 > >                             inl channel_sender' = channel_sender |> (join id) |>
00:08:31 v #10426 > > threading.new_arc_mutex
00:08:31 v #10427 > >                             inl channel_receiver' = channel_receiver |> (join
00:08:31 v #10428 > > id) |> threading.new_arc_mutex
00:08:31 v #10429 > >                             inl stdout_handle =
00:08:31 v #10430 > >                                 fun () =>
00:08:31 v #10431 > >                                     stdout
00:08:31 v #10432 > >                                     |> stream.decode_reader_bytes_build
00:08:31 v #10433 > >                                     |> stream.new_buf_reader
00:08:31 v #10434 > >                                     |> stream.buf_read_lines
00:08:31 v #10435 > >                                     |> iter.try_for_each fun lines =>
00:08:31 v #10436 > >                                         inl channel_sender'' = channel_sender''
00:08:31 v #10437 > > |> rust.clone
00:08:31 v #10438 > >                                         lines
00:08:31 v #10439 > >                                         |> stdio_line (Ok ()) options.trace
00:08:31 v #10440 > > channel_sender''
00:08:31 v #10441 > >                                         |> resultm.to_try
00:08:31 v #10442 > >                                 |> threading.spawn (1, 0) 1
00:08:31 v #10443 > >                             inl stderr_handle =
00:08:31 v #10444 > >                                 fun () =>
00:08:31 v #10445 > >                                     stderr
00:08:31 v #10446 > >                                     |> stream.decode_reader_bytes_build
00:08:31 v #10447 > >                                     |> stream.new_buf_reader
00:08:31 v #10448 > >                                     |> stream.buf_read_lines
00:08:31 v #10449 > >                                     |> iter.try_for_each fun lines =>
00:08:31 v #10450 > >                                         inl channel_sender' = channel_sender' |>
00:08:31 v #10451 > > rust.clone
00:08:31 v #10452 > >                                         lines
00:08:31 v #10453 > >                                         |> stdio_line (Error ()) options.trace
00:08:31 v #10454 > > channel_sender'
00:08:31 v #10455 > >                                         |> resultm.to_try
00:08:31 v #10456 > >                                 |> threading.spawn (1, 0) 1
00:08:31 v #10457 > >                             match options.stdin |> optionm'.unbox with
00:08:31 v #10458 > >                             | Some stdin' =>
00:08:31 v #10459 > >                                 stdin
00:08:31 v #10460 > >                                 |> threading.arc_mutex_lock
00:08:31 v #10461 > >                                 |> resultm.unwrap'
00:08:31 v #10462 > >                                 |> threading.mutex_guard_ref_mut
00:08:31 v #10463 > >                                 |> optionm'.take_ref_mut
00:08:31 v #10464 > >                                 |> optionm'.map' threading.new_arc_mutex
00:08:31 v #10465 > >                                 |> optionm'.unbox
00:08:31 v #10466 > >                                 |> function
00:08:31 v #10467 > >                                     | Some stdin =>
00:08:31 v #10468 > >                                         stdin |> stdin'
00:08:31 v #10469 > >                                         stdin
00:08:31 v #10470 > >                                         |> threading.arc_mutex_lock
00:08:31 v #10471 > >                                         |> resultm.unwrap'
00:08:31 v #10472 > >                                         |> stdin_flush
00:08:31 v #10473 > >                                     | None => ()
00:08:31 v #10474 > >                             | None => ()
00:08:31 v #10475 > >                             inl output =
00:08:31 v #10476 > >                                 child
00:08:31 v #10477 > >                                 |> threading.arc_mutex_lock
00:08:31 v #10478 > >                                 |> resultm.unwrap'
00:08:31 v #10479 > >                                 |> threading.mutex_guard_ref_mut
00:08:31 v #10480 > >                                 |> optionm'.take_ref_mut
00:08:31 v #10481 > >                                 |> optionm'.unwrap
00:08:31 v #10482 > >                                 |> child_wait_with_output
00:08:31 v #10483 > >                                 |> resultm.map_error' sm'.format'
00:08:31 v #10484 > >                             [[ stdout_handle; stderr_handle ]]
00:08:31 v #10485 > >                             |> am'.new_vec
00:08:31 v #10486 > >                             |> am'.vec_for_each' (threading.join' >>
00:08:31 v #10487 > > resultm.unwrap' >> resultm.unwrap')
00:08:31 v #10488 > >                             match output |> resultm.unbox with
00:08:31 v #10489 > >                             | Ok output =>
00:08:31 v #10490 > >                                 inl exit_code =
00:08:31 v #10491 > >                                     output
00:08:31 v #10492 > >                                     |> process_output_status
00:08:31 v #10493 > >                                     |> process_exit_status_code
00:08:31 v #10494 > >                                     |> optionm'.unbox
00:08:31 v #10495 > >                                 match exit_code with
00:08:31 v #10496 > >                                 | Some exit_code => exit_code, None, Some
00:08:31 v #10497 > > channel_receiver'
00:08:31 v #10498 > >                                 | None =>
00:08:31 v #10499 > >                                     -1,
00:08:31 v #10500 > >                                     ("runtime.execute_with_options
00:08:31 v #10501 > > exit_code=None" |> sm'.to_std_string |> Some),
00:08:31 v #10502 > >                                     Some channel_receiver'
00:08:31 v #10503 > >                             | Error error =>
00:08:31 v #10504 > >                                 trace Critical
00:08:31 v #10505 > >                                     fun () => "runtime.execute_with_options
00:08:31 v #10506 > > output error"
00:08:31 v #10507 > >                                     fun () => { error }
00:08:31 v #10508 > >                                 -2i32, error |> Some, None
00:08:31 v #10509 > >                         | Error error =>
00:08:31 v #10510 > >                             trace Critical
00:08:31 v #10511 > >                                 fun () => "runtime.execute_with_options / child
00:08:31 v #10512 > > error"
00:08:31 v #10513 > >                                 fun () => { error }
00:08:31 v #10514 > >                             -1i32, error |> Some, None
00:08:31 v #10515 > >                     |> function
00:08:31 v #10516 > >                         | exit_code, std_trace, channel_receiver =>
00:08:31 v #10517 > >                             inl std_trace =
00:08:31 v #10518 > >                                 channel_receiver
00:08:31 v #10519 > >                                 |> optionm'.box
00:08:31 v #10520 > >                                 |> optionm'.map' fun channel_receiver =>
00:08:31 v #10521 > >                                     channel_receiver
00:08:31 v #10522 > >                                     |> threading.arc_mutex_lock
00:08:31 v #10523 > >                                     |> resultm.unwrap'
00:08:31 v #10524 > >                                     |> iter.iter
00:08:31 v #10525 > >                                     |> iter_collect''
00:08:31 v #10526 > >                                     |> am'.vec_map sm'.from_std_string
00:08:31 v #10527 > >                                     |> am'.from_vec
00:08:31 v #10528 > >                                     |> fun x => x : _ i32 _
00:08:31 v #10529 > >                                     |> seq.of_array
00:08:31 v #10530 > >                                     |> sm'.concat "\n"
00:08:31 v #10531 > >                                 |> optionm'.default_value' (
00:08:31 v #10532 > >                                     std_trace
00:08:31 v #10533 > >                                     |> optionm.map sm'.from_std_string
00:08:31 v #10534 > >                                     |> optionm'.default_value ""
00:08:31 v #10535 > >                                 )
00:08:31 v #10536 > >                             trace Verbose
00:08:31 v #10537 > >                                 fun () => "runtime.execute_with_options
00:08:31 v #10538 > > result"
00:08:31 v #10539 > >                                 fun () => { exit_code std_trace_length =
00:08:31 v #10540 > > std_trace |> sm'.length : i32 }
00:08:31 v #10541 > >                             new_pair exit_code std_trace
00:08:31 v #10542 > >                 |> capture
00:08:31 v #10543 > >             // |> async.new_future_move
00:08:31 v #10544 > >             // |> async.block_on
00:08:31 v #10545 > >             |> fun x => x ()
00:08:31 v #10546 > >             |> from_pair
00:08:31 v #10547 > >         | _ => fun () => null ()
00:08:32 v #10548 > >
00:08:32 v #10549 > > ── markdown ────────────────────────────────────────────────────────────────────
00:08:32 v #10550 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:08:32 v #10551 > > │ #### execute                                                                 │
00:08:32 v #10552 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:08:32 v #10553 > >
00:08:32 v #10554 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:08:32 v #10555 > > inl execute command =
00:08:32 v #10556 > >     execution_options fun x => { x with
00:08:32 v #10557 > >         command = command
00:08:32 v #10558 > >     }
00:08:32 v #10559 > >     |> execute_with_options
00:08:32 v #10560 > >
00:08:32 v #10561 > > ── markdown ────────────────────────────────────────────────────────────────────
00:08:32 v #10562 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:08:32 v #10563 > > │ #### tests                                                                   │
00:08:32 v #10564 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:08:32 v #10565 > >
00:08:32 v #10566 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:08:32 v #10567 > > //// test
00:08:32 v #10568 > > ///! rust -d chrono encoding_rs encoding_rs_io regex sha2
00:08:32 v #10569 > >
00:08:32 v #10570 > > inl content = "╭─[[ 你好,世界!こんにちは世界! ]]─╮"
00:08:32 v #10571 > >
00:08:32 v #10572 > > inl file_name = join "test.txt"
00:08:32 v #10573 > > inl temp_dir, disposable =
00:08:32 v #10574 > >     (file_name, content)
00:08:32 v #10575 > >     |> sm'.format_debug
00:08:32 v #10576 > >     |> crypto.hash_text
00:08:32 v #10577 > >     |> file_system.create_temp_dir'
00:08:32 v #10578 > > inl path = temp_dir </> file_name |> file_system.normalize_path
00:08:32 v #10579 > > inl exit_code, result =
00:08:32 v #10580 > >     execute $'\@$"pwsh -c ""[[IO.File]]::ReadAllText(\'{!path}\')"""'
00:08:32 v #10581 > > exit_code |> _assert_eq 1
00:08:32 v #10582 > > result |> _assert sm'.contains "not find file"
00:08:32 v #10583 > >
00:08:32 v #10584 > > content |> file_system.write_all_text path
00:08:32 v #10585 > >
00:08:32 v #10586 > > execution_options fun x => { x with
00:08:32 v #10587 > >     command = $'\@$"cat ""{!file_name}"""'
00:08:32 v #10588 > >     working_directory = Some temp_dir |> optionm'.box
00:08:32 v #10589 > > }
00:08:32 v #10590 > > |> execute_with_options
00:08:32 v #10591 > > |> ignore
00:08:32 v #10592 > >
00:08:32 v #10593 > > inl exit_code, output =
00:08:32 v #10594 > >     execution_options fun x => { x with
00:08:32 v #10595 > >         command = $'\@$"pwsh -c ""[[System.Console]]::OutputEncoding =
00:08:32 v #10596 > > [[System.Text.Encoding]]::UTF8; [[IO.File]]::ReadAllText(\'{!file_name}\')"""'
00:08:32 v #10597 > >         working_directory = Some temp_dir |> optionm'.box
00:08:32 v #10598 > >     }
00:08:32 v #10599 > >     |> execute_with_options
00:08:32 v #10600 > >
00:08:32 v #10601 > > exit_code |> _assert_eq 0i32
00:08:32 v #10602 > > output |> _assert_eq content
00:08:32 v #10603 > >
00:08:32 v #10604 > > disposable |> use |> ignore
00:08:57 v #10605 > >
00:08:57 v #10606 > > ╭─[ 24.80s - return value ]────────────────────────────────────────────────────╮
00:08:57 v #10607 > > │ 00:00:00 v #1 file_system.create_dir / { dir =                         │
00:08:57 v #10608 > > │ C:\Users\i574n\AppData\Local\Temp\!create_temp_path_\spiral_builder_27143886 │
00:08:57 v #10609 > > │ a881aea3a4cd9ad866b1f7257a1f6a71623e4302275920b532015943\9242780b-ce0e-9155- │
00:08:57 v #10610 > > │ 5e07-f6ee5667aa16 }                                                          │
00:08:57 v #10611 > > │ 00:00:00 d #2 runtime.execute_with_options / { file_name = pwsh;       │
00:08:57 v #10612 > > │ arguments = ["-c", "[                                                        │
00:08:57 v #10613 > > │ IO.File]::ReadAllText('c:/Users/i574n/AppData/Local/Temp/!create_temp_path_/ │
00:08:57 v #10614 > > │ spiral_builder_27143886a881aea3a4cd9ad866b1f7257a1f6a71623e4302275920b532015 │
00:08:57 v #10615 > > │ 943/9242780b-ce0e-9155-5e07-f6ee5667aa16/test.txt')"]; options = { command = │
00:08:57 v #10616 > > │ pwsh -c "[                                                                   │
00:08:57 v #10617 > > │ IO.File]::ReadAllText('c:/Users/i574n/AppData/Local/Temp/!create_temp_path_/ │
00:08:57 v #10618 > > │ spiral_builder_27143886a881aea3a4cd9ad866b1f7257a1f6a71623e4302275920b532015 │
00:08:57 v #10619 > > │ 943/9242780b-ce0e-9155-5e07-f6ee5667aa16/test.txt')"; cancellation_token =   │
00:08:57 v #10620 > > │ None; environment_variables = Array(MutCell([])); on_line = None; stdin =    │
00:08:57 v #10621 > > │ None; trace = true; working_directory = None } }                             │
00:08:57 v #10622 > > │ 00:00:00 v #3 ! MethodInvocationException: Exception calling │
00:08:57 v #10623 > > │ "ReadAllText" with "1" argument(s): "Could not find file                     │
00:08:57 v #10624 > > │ 'c:\Users\i574n\AppData\Local\Temp\!create_temp_path_\spiral_builder_2714388 │
00:08:57 v #10625 > > │ 6a881aea3a4cd9ad866b1f7257a1f6a71623e4302275920b532015943\9242780b-ce0e-9155 │
00:08:57 v #10626 > > │ -5e07-f6ee5667aa16\test.txt'."                                             │
00:08:57 v #10627 > > │ 00:00:00 v #4 runtime.execute_with_options / result / { exit_code = 1; │
00:08:57 v #10628 > > │ std_trace_length = 312 }                                                     │
00:08:57 v #10629 > > │ __assert_eq / actual: 1 / expected: 1                                        │
00:08:57 v #10630 > > │ __assert / actual: "not find file" / expected: "[                         │
00:08:57 v #10631 > > │ 31;1mMethodInvocationException: Exception calling...ions / { file_name  │
00:08:57 v #10632 > > │ = cat; arguments = ["test.txt"]; options = { command = cat "test.txt";       │
00:08:57 v #10633 > > │ cancellation_token = None; environment_variables = Array(MutCell([]));       │
00:08:57 v #10634 > > │ on_line = None; stdin = None; trace = true; working_directory = Some(        │
00:08:57 v #10635 > > │                                                                              │
00:08:57 v #10636 > > │ "C:\Users\i574n\AppData\Local\Temp\!create_temp_path_\spiral_builder_2714388 │
00:08:57 v #10637 > > │ 6a881aea3a4cd9ad866b1f7257a1f6a71623e4302275920b532015943\9242780b-ce0e-9155 │
00:08:57 v #10638 > > │ -5e07-f6ee5667aa16",                                                         │
00:08:57 v #10639 > > │ ) } }                                                                        │
00:08:57 v #10640 > > │ 00:00:00 v #6 > ╭─[ 你好,世界!こんにちは世界! ]─╮                   │
00:08:57 v #10641 > > │ 00:00:00 v #7 runtime.execute_with_options / result / { exit_code = 0; │
00:08:57 v #10642 > > │ std_trace_length = 22 }                                                      │
00:08:57 v #10643 > > │ 00:00:00 d #8 runtime.execute_with_options / { file_name = pwsh;       │
00:08:57 v #10644 > > │ arguments = ["-c", "[System.Console]::OutputEncoding = [                     │
00:08:57 v #10645 > > │ System.Text.Encoding]::UTF8; [IO.File]::ReadAllText('test.txt')"]; options = │
00:08:57 v #10646 > > │ { command = pwsh -c "[System.Console]::OutputEncoding = [                    │
00:08:57 v #10647 > > │ System.Text.Encoding]::UTF8; [IO.File]::ReadAllText('test.txt')";            │
00:08:57 v #10648 > > │ cancellation_token = None; environment_variables = Array(MutCell([]));       │
00:08:57 v #10649 > > │ on_line = None; stdin = None; trace = true; working_directory = Some(        │
00:08:57 v #10650 > > │                                                                              │
00:08:57 v #10651 > > │ "C:\Users\i574n\AppData\Local\Temp\!create_temp_path_\spiral_builder_2714388 │
00:08:57 v #10652 > > │ 6a881aea3a4cd9ad866b1f7257a1f6a71623e4302275920b532015943\9242780b-ce0e-9155 │
00:08:57 v #10653 > > │ -5e07-f6ee5667aa16",                                                         │
00:08:57 v #10654 > > │ ) } }                                                                        │
00:08:57 v #10655 > > │ 00:00:00 v #9 > ╭─[ 你好,世界!こんにちは世界! ]─╮                   │
00:08:57 v #10656 > > │ 00:00:00 v #10 runtime.execute_with_options / result / { exit_code =   │
00:08:57 v #10657 > > │ 0; std_trace_length = 22 }                                                   │
00:08:57 v #10658 > > │ __assert_eq / actual: 0 / expected: 0                                        │
00:08:57 v #10659 > > │ __assert_eq / actual: "╭─[ 你好,世界!こんにちは世界! ]─╮" / expected: "╭─ │
00:08:57 v #10660 > > │ [ 你好,世界!こんにちは世界! ]─╮"                                          │
00:08:57 v #10661 > > │                                                                              │
00:08:57 v #10662 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:08:57 v #10663 > >
00:08:57 v #10664 > > ── markdown ────────────────────────────────────────────────────────────────────
00:08:57 v #10665 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:08:57 v #10666 > > │ ### execute_retry                                                            │
00:08:57 v #10667 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:08:57 v #10668 > >
00:08:57 v #10669 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:08:57 v #10670 > > let execute_retry retries options =
00:08:57 v #10671 > >     fun () =>
00:08:57 v #10672 > >         inl exit_code, result = options |> execute_with_options
00:08:57 v #10673 > >         if exit_code = 0
00:08:57 v #10674 > >         then Ok (exit_code, result)
00:08:57 v #10675 > >         else Error (exit_code, result)
00:08:57 v #10676 > >     |> retry_fn' retries
00:08:57 v #10677 > >
00:08:57 v #10678 > > ── markdown ────────────────────────────────────────────────────────────────────
00:08:57 v #10679 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:08:57 v #10680 > > │ ## main                                                                      │
00:08:57 v #10681 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:08:57 v #10682 > >
00:08:57 v #10683 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:08:57 v #10684 > > inl main () =
00:08:57 v #10685 > >     init_trace_state None
00:08:57 v #10686 > >     $'let current_process_kill () = !current_process_kill ()' : ()
00:08:57 v #10687 > >     $'let execute_async x = !execute_async x' : ()
00:08:57 v #10688 > >     $'let execute_with_options_async x = !execute_with_options_async x' : ()
00:08:57 v #10689 > >     inl execution_options fn =
00:08:57 v #10690 > >         execution_options fun x =>
00:08:57 v #10691 > >             x
00:08:57 v #10692 > >             |> heap
00:08:57 v #10693 > >             |> fn
00:08:57 v #10694 > >             |> fun x => !x
00:08:57 v #10695 > >     $'let execution_options x = !execution_options x' : ()
00:08:57 v #10696 > >     inl split_args x = x |> split_args |> resultm.box
00:08:57 v #10697 > >     $'let split_args x = !split_args x' : ()
00:09:01 v #10698 > 00:01:49 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 123816 }
00:09:01 v #10699 > 00:01:49 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/polyglot/lib/spiral/runtime.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/polyglot/lib/spiral/runtime.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:09:02 v #10700 > 00:01:51 v #5 ! [NbConvertApp] Converting notebook c:/home/git/polyglot/lib/spiral/runtime.dib.ipynb to html
00:09:02 v #10701 > 00:01:51 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:09:02 v #10702 > 00:01:51 v #7 !   validate(nb)
00:09:03 v #10703 > 00:01:51 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:09:03 v #10704 > 00:01:51 v #9 !   return _pygments_highlight(
00:09:04 v #10705 > 00:01:53 v #10 ! [NbConvertApp] Writing 587952 bytes to c:\home\git\polyglot\lib\spiral\runtime.dib.html
00:09:05 v #10706 > 00:01:53 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 856 }
00:09:05 v #10707 > 00:01:53 d #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 856 }
00:09:05 v #10708 > 00:01:53 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/runtime.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/runtime.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:09:05 v #10709 > 00:01:54 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:09:05 v #10710 > 00:01:54 d #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:09:05 v #10711 > 00:01:54 d #16 spiral_builder.run / dib / { exit_code = 0; result_length = 124731 }
00:09:05 d #10712 runtime.execute_with_options_async / { exit_code = 0; output_length = 131961 }
00:09:05 d #12 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder.exe dib --path runtime.dib --retries 3
00:09:05 d #10713 runtime.execute_with_options_async / { file_name = ../../workspace/target/release/spiral_builder.exe; arguments = US5_0 "dib --path trace.dib --retries 3"; options = { command = ../../workspace/target/release/spiral_builder.exe dib --path trace.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:09:05 v #10714 > 00:00:00 d #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "trace.dib", "--retries", "3"])) }
00:09:05 v #10715 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/polyglot/lib/spiral/trace.dib", "--output-path", "c:/home/git/polyglot/lib/spiral/trace.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/polyglot/lib/spiral/trace.dib" --output-path "c:/home/git/polyglot/lib/spiral/trace.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:09:07 v #10716 > >
00:09:07 v #10717 > > ── markdown ────────────────────────────────────────────────────────────────────
00:09:07 v #10718 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:09:07 v #10719 > > │ # trace                                                                      │
00:09:07 v #10720 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:09:10 v #10721 > >
00:09:10 v #10722 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:09:10 v #10723 > > //// test
00:09:10 v #10724 > >
00:09:10 v #10725 > > open testing
00:09:11 v #10726 > >
00:09:11 v #10727 > > ── markdown ────────────────────────────────────────────────────────────────────
00:09:11 v #10728 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:09:11 v #10729 > > │ ## trace                                                                     │
00:09:11 v #10730 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:09:11 v #10731 > >
00:09:11 v #10732 > > ── markdown ────────────────────────────────────────────────────────────────────
00:09:11 v #10733 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:09:11 v #10734 > > │ ### trace_level                                                              │
00:09:11 v #10735 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:09:11 v #10736 > >
00:09:11 v #10737 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:09:11 v #10738 > > union trace_level =
00:09:11 v #10739 > >     | Verbose
00:09:11 v #10740 > >     | Debug
00:09:11 v #10741 > >     | Info
00:09:11 v #10742 > >     | Warning
00:09:11 v #10743 > >     | Critical
00:09:11 v #10744 > >
00:09:11 v #10745 > > ── markdown ────────────────────────────────────────────────────────────────────
00:09:11 v #10746 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:09:11 v #10747 > > │ ### read_state                                                               │
00:09:11 v #10748 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:09:11 v #10749 > >
00:09:11 v #10750 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:09:11 v #10751 > > inl read_state () =
00:09:11 v #10752 > >     run_target function
00:09:11 v #10753 > >         | Rust (Wasm) => fun () =>
00:09:11 v #10754 > >             {
00:09:11 v #10755 > >                 trace_level = None
00:09:11 v #10756 > >                 repl_start = None
00:09:11 v #10757 > >             }
00:09:11 v #10758 > >         | Rust (Contract) => fun () =>
00:09:11 v #10759 > >             {
00:09:11 v #10760 > >                 trace_level = None
00:09:11 v #10761 > >                 repl_start =
00:09:11 v #10762 > >                     open rust.rust_operators
00:09:11 v #10763 > >                     inl automation = env.get_environment_variable_comptime
00:09:11 v #10764 > > "AUTOMATION"
00:09:11 v #10765 > >                     if automation <>. "True"
00:09:11 v #10766 > >                     then None
00:09:11 v #10767 > >                     else
00:09:11 v #10768 > >                         inl timestamp : u64 =
00:09:11 v #10769 > > !\($'$"near_sdk::env::block_timestamp()"')
00:09:11 v #10770 > >                         timestamp |> i64 |> Some
00:09:11 v #10771 > >             }
00:09:11 v #10772 > >         | _ => fun () =>
00:09:11 v #10773 > >             join
00:09:11 v #10774 > >                 {
00:09:11 v #10775 > >                     trace_level =
00:09:11 v #10776 > >                         "TRACE_LEVEL"
00:09:11 v #10777 > >                         |> env.get_environment_variable
00:09:11 v #10778 > >                         |> reflection.union_try_pick
00:09:11 v #10779 > >                     repl_start =
00:09:11 v #10780 > >                         inl automation = env.get_environment_variable
00:09:11 v #10781 > > "AUTOMATION"
00:09:11 v #10782 > >                         if automation <>. "True"
00:09:11 v #10783 > >                         then None
00:09:11 v #10784 > >                         else
00:09:11 v #10785 > >                             date_time.now ()
00:09:11 v #10786 > >                             |> date_time.ticks
00:09:11 v #10787 > >                             |> fun (date_time.timestamp x) => x |> convert
00:09:11 v #10788 > >                             |> Some
00:09:11 v #10789 > >                 }
00:09:12 v #10790 > >
00:09:12 v #10791 > > ── markdown ────────────────────────────────────────────────────────────────────
00:09:12 v #10792 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:09:12 v #10793 > > │ ### trace_state                                                              │
00:09:12 v #10794 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:09:12 v #10795 > >
00:09:12 v #10796 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:09:12 v #10797 > > type trace_state =
00:09:12 v #10798 > >     {
00:09:12 v #10799 > >         count : mut i64
00:09:12 v #10800 > >         trace_file : mut (string -> ())
00:09:12 v #10801 > >         enabled : mut bool
00:09:12 v #10802 > >         acc : mut string
00:09:12 v #10803 > >         level : mut trace_level
00:09:12 v #10804 > >         repl_start : optionm'.option' i64
00:09:12 v #10805 > >     }
00:09:12 v #10806 > >
00:09:12 v #10807 > > ── markdown ────────────────────────────────────────────────────────────────────
00:09:12 v #10808 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:09:12 v #10809 > > │ ### new_trace_state                                                          │
00:09:12 v #10810 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:09:12 v #10811 > >
00:09:12 v #10812 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:09:12 v #10813 > > let new_trace_state trace_level' =
00:09:12 v #10814 > >     inl { repl_start trace_level } = read_state ()
00:09:12 v #10815 > >     {
00:09:12 v #10816 > >         count = mut 1i64
00:09:12 v #10817 > >         trace_file = mut ignore
00:09:12 v #10818 > >         enabled = mut true
00:09:12 v #10819 > >         acc = mut ""
00:09:12 v #10820 > >         level = trace_level |> optionm'.default_value trace_level' |> mut
00:09:12 v #10821 > >         repl_start = repl_start |> optionm'.box
00:09:12 v #10822 > >     } : trace_state
00:09:13 v #10823 > >
00:09:13 v #10824 > > ── markdown ────────────────────────────────────────────────────────────────────
00:09:13 v #10825 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:09:13 v #10826 > > │ ### init_trace_state                                                         │
00:09:13 v #10827 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:09:13 v #10828 > >
00:09:13 v #10829 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:09:13 v #10830 > > inl init_trace_state trace_level : () =
00:09:13 v #10831 > >     inl trace_level = trace_level |> optionm'.default_value Verbose
00:09:13 v #10832 > >     backend_switch {
00:09:13 v #10833 > >         Fsharp = fun () =>
00:09:13 v #10834 > >             backend_switch {
00:09:13 v #10835 > >                 Fsharp = fun () =>
00:09:13 v #10836 > >                     global "module TraceState = let mutable trace_state = None"
00:09:13 v #10837 > >             }
00:09:13 v #10838 > >             fun () =>
00:09:13 v #10839 > >                 if $'TraceState.trace_state.IsNone' then
00:09:13 v #10840 > >                     inl trace_state = new_trace_state trace_level |>
00:09:13 v #10841 > > optionm'.some'
00:09:13 v #10842 > >                     $'TraceState.trace_state <- !trace_state ' : ()
00:09:13 v #10843 > >             |> exec_unit
00:09:13 v #10844 > >         Python = fun () =>
00:09:13 v #10845 > >             global "class TraceState: trace_state = None"
00:09:13 v #10846 > >             $'if TraceState.trace_state is None: TraceState.trace_state =
00:09:13 v #10847 > > !new_trace_state(!trace_level)' : ()
00:09:13 v #10848 > >     }
00:09:13 v #10849 > >
00:09:13 v #10850 > > ── markdown ────────────────────────────────────────────────────────────────────
00:09:13 v #10851 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:09:13 v #10852 > > │ ### get_trace_state_or_init                                                  │
00:09:13 v #10853 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:09:13 v #10854 > >
00:09:13 v #10855 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:09:13 v #10856 > > inl get_trace_state_or_init trace_level : trace_state =
00:09:13 v #10857 > >     init_trace_state trace_level
00:09:13 v #10858 > >     backend_switch {
00:09:13 v #10859 > >         Fsharp = fun () =>
00:09:13 v #10860 > >             $'TraceState.trace_state.Value' : trace_state
00:09:13 v #10861 > >         Python = fun () =>
00:09:13 v #10862 > >             $'TraceState.trace_state' : trace_state
00:09:13 v #10863 > >     }
00:09:13 v #10864 > >
00:09:13 v #10865 > > ── markdown ────────────────────────────────────────────────────────────────────
00:09:13 v #10866 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:09:13 v #10867 > > │ ### test_trace_level                                                         │
00:09:13 v #10868 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:09:13 v #10869 > >
00:09:13 v #10870 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:09:13 v #10871 > > let test_trace_level level : bool =
00:09:13 v #10872 > >     inl state = get_trace_state_or_init None
00:09:13 v #10873 > >     inl level' = *state.level
00:09:13 v #10874 > >     if *state.enabled |> not
00:09:13 v #10875 > >     then false
00:09:13 v #10876 > >     else
00:09:13 v #10877 > >         inl level : i32 = real real_core.union_tag level
00:09:13 v #10878 > >         inl level' : i32 = real real_core.union_tag level'
00:09:13 v #10879 > >         level >= level'
00:09:14 v #10880 > >
00:09:14 v #10881 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:09:14 v #10882 > > //// test
00:09:14 v #10883 > > ///! fsharp
00:09:14 v #10884 > > ///! cuda
00:09:14 v #10885 > > ///! rust
00:09:14 v #10886 > > ///! typescript
00:09:14 v #10887 > > ///! python
00:09:14 v #10888 > >
00:09:14 v #10889 > > test_trace_level Critical |> _assert_eq true
00:09:14 v #10890 > > test_trace_level Verbose |> _assert_eq true
00:09:14 v #10891 > >
00:09:14 v #10892 > > inl level = get_trace_state_or_init None .level
00:09:14 v #10893 > > level <- Debug
00:09:14 v #10894 > > test_trace_level Verbose |> _assert_eq false
00:09:14 v #10895 > > level <- Verbose
00:09:14 v #10896 > > test_trace_level Verbose |> _assert_eq true
00:09:20 v #10897 > >
00:09:20 v #10898 > > ╭─[ 5.92s - return value ]─────────────────────────────────────────────────────╮
00:09:20 v #10899 > > │                                                                              │
00:09:20 v #10900 > > │ .py output (Cuda):                                                           │
00:09:20 v #10901 > > │ __assert_eq / actual: True / expected: True                                  │
00:09:20 v #10902 > > │ __assert_eq / actual: True / expected: True                                  │
00:09:20 v #10903 > > │ __assert_eq / actual: False / expected: False                                │
00:09:20 v #10904 > > │ __assert_eq / actual: True / expected: True                                  │
00:09:20 v #10905 > > │                                                                              │
00:09:20 v #10906 > > │                                                                              │
00:09:20 v #10907 > > │ .rs output:                                                                  │
00:09:20 v #10908 > > │ __assert_eq / actual: true / expected: true                                  │
00:09:20 v #10909 > > │ __assert_eq / actual: true / expected: true                                  │
00:09:20 v #10910 > > │ __assert_eq / actual: false / expected: false                                │
00:09:20 v #10911 > > │ __assert_eq / actual: true / expected: true                                  │
00:09:20 v #10912 > > │                                                                              │
00:09:20 v #10913 > > │                                                                              │
00:09:20 v #10914 > > │ .ts output:                                                                  │
00:09:20 v #10915 > > │ __assert_eq / actual: true / expected: true                                  │
00:09:20 v #10916 > > │ __assert_eq / actual: true / expected: true                                  │
00:09:20 v #10917 > > │ __assert_eq / actual: false / expected: false                                │
00:09:20 v #10918 > > │ __assert_eq / actual: true / expected: true                                  │
00:09:20 v #10919 > > │                                                                              │
00:09:20 v #10920 > > │                                                                              │
00:09:20 v #10921 > > │ .py output:                                                                  │
00:09:20 v #10922 > > │ __assert_eq / actual: true / expected: true                                  │
00:09:20 v #10923 > > │ __assert_eq / actual: true / expected: true                                  │
00:09:20 v #10924 > > │ __assert_eq / actual: false / expected: false                                │
00:09:20 v #10925 > > │ __assert_eq / actual: true / expected: true                                  │
00:09:20 v #10926 > > │                                                                              │
00:09:20 v #10927 > > │                                                                              │
00:09:20 v #10928 > > │                                                                              │
00:09:20 v #10929 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:09:20 v #10930 > >
00:09:20 v #10931 > > ╭─[ 5.92s - stdout ]───────────────────────────────────────────────────────────╮
00:09:20 v #10932 > > │ .fsx output:                                                                 │
00:09:20 v #10933 > > │ __assert_eq / actual: true / expected: true                                  │
00:09:20 v #10934 > > │ __assert_eq / actual: true / expected: true                                  │
00:09:20 v #10935 > > │ __assert_eq / actual: false / expected: false                                │
00:09:20 v #10936 > > │ __assert_eq / actual: true / expected: true                                  │
00:09:20 v #10937 > > │                                                                              │
00:09:20 v #10938 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:09:20 v #10939 > >
00:09:20 v #10940 > > ── markdown ────────────────────────────────────────────────────────────────────
00:09:20 v #10941 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:09:20 v #10942 > > │ ### trace_raw                                                                │
00:09:20 v #10943 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:09:20 v #10944 > >
00:09:20 v #10945 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:09:20 v #10946 > > inl trace_raw level fn =
00:09:20 v #10947 > >     fun () =>
00:09:20 v #10948 > >         if level |> test_trace_level then
00:09:20 v #10949 > >             inl text = fn ()
00:09:20 v #10950 > >             join
00:09:20 v #10951 > >                 inl ({ count acc } & trace_state) = get_trace_state_or_init None
00:09:20 v #10952 > >                 fun () =>
00:09:20 v #10953 > >                     count <- *count + 1
00:09:20 v #10954 > >                 |> exec_unit
00:09:20 v #10955 > >                 open rust
00:09:20 v #10956 > >                 open rust.rust_operators
00:09:20 v #10957 > >                 run_target_args (fun () => text, console.write_line) function
00:09:20 v #10958 > >                     | Rust (Contract) => fun text, _ =>
00:09:20 v #10959 > >                         inl new_acc =
00:09:20 v #10960 > >                             if *acc = ""
00:09:20 v #10961 > >                             then text
00:09:20 v #10962 > >                             elif text = ""
00:09:20 v #10963 > >                             then *acc
00:09:20 v #10964 > >                             else *acc +. "\n" +. text
00:09:20 v #10965 > >
00:09:20 v #10966 > >                         inl chunks =
00:09:20 v #10967 > >                             new_acc
00:09:20 v #10968 > >                             |> sm'.as_str
00:09:20 v #10969 > >                             |> sm'.chars
00:09:20 v #10970 > >                             |> rust.from_mut
00:09:20 v #10971 > >                             |> iter_collect
00:09:20 v #10972 > >                             |> am'.vec_chunks 15000
00:09:20 v #10973 > >                             |> am'.vec_map sm'.from_iter
00:09:20 v #10974 > >
00:09:20 v #10975 > >                         inl chunks_len = chunks |> am'.vec_len |> i32
00:09:20 v #10976 > >
00:09:20 v #10977 > >                         if text <>. "" && chunks_len <= 1
00:09:20 v #10978 > >                         then acc <- new_acc
00:09:20 v #10979 > >                         else
00:09:20 v #10980 > >                             acc <- ""
00:09:20 v #10981 > >                             chunks
00:09:20 v #10982 > >                             |> am'.vec_for_each''' near.log
00:09:20 v #10983 > >                     | Rust _ => fun text, _ =>
00:09:20 v #10984 > >                         !\\(text, $'\@"println\!(""{}"", $0)"')
00:09:20 v #10985 > >                     | _ => fun text, write_line =>
00:09:20 v #10986 > >                         text |> write_line
00:09:20 v #10987 > >                 text |> *trace_state.trace_file
00:09:20 v #10988 > >     |> exec_unit
00:09:20 v #10989 > >
00:09:20 v #10990 > > ── markdown ────────────────────────────────────────────────────────────────────
00:09:20 v #10991 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:09:20 v #10992 > > │ ### trace                                                                    │
00:09:20 v #10993 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:09:20 v #10994 > >
00:09:20 v #10995 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:09:20 v #10996 > > inl trace (level : trace_level) (text_fn : () -> string) (locals : () -> _) =
00:09:20 v #10997 > >     fun () =>
00:09:20 v #10998 > >         inl trace_state = get_trace_state_or_init None
00:09:20 v #10999 > >         inl time =
00:09:20 v #11000 > >             join
00:09:20 v #11001 > >                 run_target fun target =>
00:09:20 v #11002 > >                     match target with
00:09:20 v #11003 > >                     | Rust (Contract) => fun () =>
00:09:20 v #11004 > >                         open rust.rust_operators
00:09:20 v #11005 > >                         open rust
00:09:20 v #11006 > >                         inl timestamp = near.block_timestamp ()
00:09:20 v #11007 > >                         inl timestamp =
00:09:20 v #11008 > >                             match trace_state.repl_start |> optionm'.unbox with
00:09:20 v #11009 > >                             | Some repl_start => timestamp - u64 repl_start
00:09:20 v #11010 > >                             | None => timestamp
00:09:20 v #11011 > >                         inl timestamp_s = timestamp / 1_000_000_000
00:09:20 v #11012 > >                         inl s = timestamp_s % 60
00:09:20 v #11013 > >                         inl m = (timestamp_s / 60) % 60
00:09:20 v #11014 > >                         inl h = (timestamp_s / 3600) % 24
00:09:20 v #11015 > >                         inl str : sm'.std_string =
00:09:20 v #11016 > >                             !\\((h, m, s),
00:09:20 v #11017 > > $'$"format\!(\\\"{{:02}}:{{:02}}:{{:02}}\\\", $0, $1, $2)"')
00:09:20 v #11018 > >                         str |> sm'.from_std_string
00:09:20 v #11019 > >                     | _ => fun () =>
00:09:20 v #11020 > >                         match trace_state.repl_start |> optionm'.unbox with
00:09:20 v #11021 > >                         | Some repl_start =>
00:09:20 v #11022 > >                             inl t =
00:09:20 v #11023 > >                                 date_time.now ()
00:09:20 v #11024 > >                                 |> date_time.ticks
00:09:20 v #11025 > >                                 |> fun (date_time.timestamp x) => x |> convert
00:09:20 v #11026 > >                                 |> flip (-) repl_start
00:09:20 v #11027 > >                                 |> date_time.time_span
00:09:20 v #11028 > >                             date_time.date_time_milliseconds
00:09:20 v #11029 > >                                 1i32 1i32 1i32
00:09:20 v #11030 > >                                 (t |> date_time.hours)
00:09:20 v #11031 > >                                 (t |> date_time.minutes)
00:09:20 v #11032 > >                                 (t |> date_time.seconds)
00:09:20 v #11033 > >                                 (t |> date_time.milliseconds)
00:09:20 v #11034 > >                         | None => date_time.now ()
00:09:20 v #11035 > >                         |> date_time.format (
00:09:20 v #11036 > >                             backend_switch {
00:09:20 v #11037 > >                                 Fsharp = fun () =>
00:09:20 v #11038 > >                                     match target with
00:09:20 v #11039 > >                                     | Rust _ => join "hh:mm:ss"
00:09:20 v #11040 > >                                     | _ => join "HH:mm:ss"
00:09:20 v #11041 > >                                 Python = fun () => "%H:%M:%S"
00:09:20 v #11042 > >                             }
00:09:20 v #11043 > >                         )
00:09:20 v #11044 > >         inl level_str =
00:09:20 v #11045 > >             join
00:09:20 v #11046 > >                 inl level_str =
00:09:20 v #11047 > >                     level
00:09:20 v #11048 > >                     |> reflection.union_to_string
00:09:20 v #11049 > >                     |> sm'.to_lower
00:09:20 v #11050 > >                     |> sm'.index 0i32
00:09:20 v #11051 > >                     |> sm'.format
00:09:20 v #11052 > >                 run_target function
00:09:20 v #11053 > >                 | Rust _ => fun () =>
00:09:20 v #11054 > >                     open rust
00:09:20 v #11055 > >                     open rust.rust_operators
00:09:20 v #11056 > >                     inl color : rust.ref sm'.str =
00:09:20 v #11057 > >                         match level with
00:09:20 v #11058 > >                         | Verbose =>
00:09:20 v #11059 > > !\($'"inline_colorization::color_bright_black"')
00:09:20 v #11060 > >                         | Debug =>
00:09:20 v #11061 > > !\($'"inline_colorization::color_bright_blue"')
00:09:20 v #11062 > >                         | Info =>
00:09:20 v #11063 > > !\($'"inline_colorization::color_bright_green"')
00:09:20 v #11064 > >                         | Warning => !\($'"inline_colorization::color_yellow"')
00:09:20 v #11065 > >                         | Critical =>
00:09:20 v #11066 > > !\($'"inline_colorization::color_bright_red"')
00:09:20 v #11067 > >                     inl level_str = level_str |> sm'.as_str
00:09:20 v #11068 > >                     inl color_reset : rust.ref sm'.str =
00:09:20 v #11069 > > !\($'"inline_colorization::color_reset"')
00:09:20 v #11070 > >                     !\\((color, level_str, color_reset),
00:09:20 v #11071 > > $'$"format\!(\\\"{{}}{{}}{{}}\\\", $0, $1, $2)"')
00:09:20 v #11072 > >                     |> sm'.from_std_string
00:09:20 v #11073 > >                 | _ => fun () =>
00:09:20 v #11074 > >                     inl color =
00:09:20 v #11075 > >                         match level with
00:09:20 v #11076 > >                         | Verbose => $'"\\u001b[[90m"'
00:09:20 v #11077 > >                         | Debug => $'"\\u001b[[94m"'
00:09:20 v #11078 > >                         | Info => $'"\\u001b[[92m"'
00:09:20 v #11079 > >                         | Warning => $'"\\u001b[[93m"'
00:09:20 v #11080 > >                         | Critical => $'"\\u001b[[91m"'
00:09:20 v #11081 > >                     inl color_reset = join $'"\\u001b[[0m"'
00:09:20 v #11082 > >                     color +. level_str +. color_reset
00:09:20 v #11083 > >         inl text = text_fn ()
00:09:20 v #11084 > >         if text = ""
00:09:20 v #11085 > >         then ""
00:09:20 v #11086 > >         else
00:09:20 v #11087 > >             inl locals = locals ()
00:09:20 v #11088 > >             join
00:09:20 v #11089 > >                 inl locals = locals |> sm'.format
00:09:20 v #11090 > >                 inl count = *trace_state.count
00:09:20 v #11091 > >                 backend_switch {
00:09:20 v #11092 > >                     Fsharp = fun () => $'$"{!time} {!level_str} #{!count}
00:09:20 v #11093 > > %s{!text} / {!locals}"' : string
00:09:20 v #11094 > >                     Python = fun () => $'f"{!time} {!level_str} #{!count}
00:09:20 v #11095 > > {!text} / {!locals}"' : string
00:09:20 v #11096 > >                 }
00:09:20 v #11097 > >                 |> fun x =>
00:09:20 v #11098 > >                     join
00:09:20 v #11099 > >                         x
00:09:20 v #11100 > >                         |> sm'.trim_start [[]]
00:09:20 v #11101 > >                         |> sm'.trim_end [[ ' '; '/' ]]
00:09:20 v #11102 > >     |> trace_raw level
00:09:21 v #11103 > >
00:09:21 v #11104 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:09:21 v #11105 > > //// test
00:09:21 v #11106 > > ///! fsharp
00:09:21 v #11107 > > ///! cuda
00:09:21 v #11108 > > ///! rust
00:09:21 v #11109 > > ///! typescript
00:09:21 v #11110 > > ///! python
00:09:21 v #11111 > >
00:09:21 v #11112 > > trace Debug (fun () => "test1") id
00:09:21 v #11113 > > trace Debug (fun () => "test2") id
00:09:21 v #11114 > > get_trace_state_or_init None .count
00:09:21 v #11115 > > |> fun x => *x
00:09:21 v #11116 > > |> _assert_eq 3
00:09:25 v #11117 > >
00:09:25 v #11118 > > ╭─[ 4.42s - return value ]─────────────────────────────────────────────────────╮
00:09:25 v #11119 > > │                                                                              │
00:09:25 v #11120 > > │ .py output (Cuda):                                                           │
00:09:25 v #11121 > > │ 00:00:00 d #1 test1                                                     │
00:09:25 v #11122 > > │ 00:00:00 d #2 test2                                                     │
00:09:25 v #11123 > > │ __assert_eq / actual: 3 / expected: 3                                        │
00:09:25 v #11124 > > │                                                                              │
00:09:25 v #11125 > > │                                                                              │
00:09:25 v #11126 > > │ .rs output:                                                                  │
00:09:25 v #11127 > > │ 00:00:00 d #1 test1                                                    │
00:09:25 v #11128 > > │ 00:00:00 d #2 test2                                                    │
00:09:25 v #11129 > > │ __assert_eq / actual: 3 / expected: 3                                        │
00:09:25 v #11130 > > │                                                                              │
00:09:25 v #11131 > > │                                                                              │
00:09:25 v #11132 > > │ .ts output:                                                                  │
00:09:25 v #11133 > > │ 00:00:00 d #1 test1                                                     │
00:09:25 v #11134 > > │ 00:00:00 d #2 test2                                                     │
00:09:25 v #11135 > > │ __assert_eq / actual: 3 / expected: 3                                        │
00:09:25 v #11136 > > │                                                                              │
00:09:25 v #11137 > > │                                                                              │
00:09:25 v #11138 > > │ .py output:                                                                  │
00:09:25 v #11139 > > │ 00:00:00 d #1 test1                                                     │
00:09:25 v #11140 > > │ 00:00:00 d #2 test2                                                     │
00:09:25 v #11141 > > │ __assert_eq / actual: 3 / expected: 3                                        │
00:09:25 v #11142 > > │                                                                              │
00:09:25 v #11143 > > │                                                                              │
00:09:25 v #11144 > > │                                                                              │
00:09:25 v #11145 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:09:25 v #11146 > >
00:09:25 v #11147 > > ╭─[ 4.42s - stdout ]───────────────────────────────────────────────────────────╮
00:09:25 v #11148 > > │ .fsx output:                                                                 │
00:09:25 v #11149 > > │ 00:00:00 d #1 test1                                                     │
00:09:25 v #11150 > > │ 00:00:00 d #2 test2                                                     │
00:09:25 v #11151 > > │ __assert_eq / actual: 3L / expected: 3L                                      │
00:09:25 v #11152 > > │                                                                              │
00:09:25 v #11153 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:09:25 v #11154 > >
00:09:25 v #11155 > > ── markdown ────────────────────────────────────────────────────────────────────
00:09:25 v #11156 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:09:25 v #11157 > > │ ## main                                                                      │
00:09:25 v #11158 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:09:25 v #11159 > >
00:09:25 v #11160 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:09:25 v #11161 > > inl main () =
00:09:25 v #11162 > >     init_trace_state None
00:09:25 v #11163 > >     inl trace level text_fn (locals : () -> string) = trace level text_fn locals
00:09:25 v #11164 > >     $'let trace x = !trace x' : ()
00:09:26 v #11165 > 00:00:20 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 21765 }
00:09:26 v #11166 > 00:00:20 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/polyglot/lib/spiral/trace.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/polyglot/lib/spiral/trace.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:09:27 v #11167 > 00:00:22 v #5 ! [NbConvertApp] Converting notebook c:/home/git/polyglot/lib/spiral/trace.dib.ipynb to html
00:09:27 v #11168 > 00:00:22 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:09:27 v #11169 > 00:00:22 v #7 !   validate(nb)
00:09:28 v #11170 > 00:00:22 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:09:28 v #11171 > 00:00:22 v #9 !   return _pygments_highlight(
00:09:28 v #11172 > 00:00:23 v #10 ! [NbConvertApp] Writing 324967 bytes to c:\home\git\polyglot\lib\spiral\trace.dib.html
00:09:28 v #11173 > 00:00:23 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 852 }
00:09:28 v #11174 > 00:00:23 d #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 852 }
00:09:28 v #11175 > 00:00:23 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/trace.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/trace.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:09:29 v #11176 > 00:00:23 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:09:29 v #11177 > 00:00:23 d #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:09:29 v #11178 > 00:00:23 d #16 spiral_builder.run / dib / { exit_code = 0; result_length = 22676 }
00:09:29 d #11179 runtime.execute_with_options_async / { exit_code = 0; output_length = 26132 }
00:09:29 d #13 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder.exe dib --path trace.dib --retries 3
00:09:29 d #11180 runtime.execute_with_options_async / { file_name = ../../workspace/target/release/spiral_builder.exe; arguments = US5_0 "dib --path am'.dib --retries 3"; options = { command = ../../workspace/target/release/spiral_builder.exe dib --path am'.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:09:29 v #11181 > 00:00:00 d #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "am'.dib", "--retries", "3"])) }
00:09:29 v #11182 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/polyglot/lib/spiral/am'.dib", "--output-path", "c:/home/git/polyglot/lib/spiral/am'.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/polyglot/lib/spiral/am'.dib" --output-path "c:/home/git/polyglot/lib/spiral/am'.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:09:30 v #11183 > >
00:09:30 v #11184 > > ── markdown ────────────────────────────────────────────────────────────────────
00:09:30 v #11185 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:09:30 v #11186 > > │ # am'                                                                        │
00:09:30 v #11187 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:09:34 v #11188 > >
00:09:34 v #11189 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:09:34 v #11190 > > //// test
00:09:34 v #11191 > >
00:09:34 v #11192 > > open testing
00:09:35 v #11193 > >
00:09:35 v #11194 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:09:35 v #11195 > > open rust
00:09:35 v #11196 > > open rust_operators
00:09:35 v #11197 > >
00:09:35 v #11198 > > ── markdown ────────────────────────────────────────────────────────────────────
00:09:35 v #11199 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:09:35 v #11200 > > │ ## am'                                                                       │
00:09:35 v #11201 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:09:35 v #11202 > >
00:09:35 v #11203 > > ── markdown ────────────────────────────────────────────────────────────────────
00:09:35 v #11204 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:09:35 v #11205 > > │ ### length                                                                   │
00:09:35 v #11206 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:09:35 v #11207 > >
00:09:35 v #11208 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:09:35 v #11209 > > inl length forall dim {int} el. (a : a dim el) : dim =
00:09:35 v #11210 > >     a |> length
00:09:36 v #11211 > >
00:09:36 v #11212 > > ── markdown ────────────────────────────────────────────────────────────────────
00:09:36 v #11213 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:09:36 v #11214 > > │ ### index                                                                    │
00:09:36 v #11215 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:09:36 v #11216 > >
00:09:36 v #11217 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:09:36 v #11218 > > inl index forall dim {int} el. (i : dim) (a : a dim el) : el =
00:09:36 v #11219 > >     backend_switch {
00:09:36 v #11220 > >         Fsharp = fun () => index a i
00:09:36 v #11221 > >         Python = fun () => $'!a[[!i]]' : el
00:09:36 v #11222 > >     }
00:09:36 v #11223 > >
00:09:36 v #11224 > > ── markdown ────────────────────────────────────────────────────────────────────
00:09:36 v #11225 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:09:36 v #11226 > > │ ### index_base                                                               │
00:09:36 v #11227 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:09:36 v #11228 > >
00:09:36 v #11229 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:09:36 v #11230 > > inl index_base forall el. (i : int) (ar : array_base el) : el =
00:09:36 v #11231 > >     ar |> a |> index i
00:09:36 v #11232 > >
00:09:36 v #11233 > > ── markdown ────────────────────────────────────────────────────────────────────
00:09:36 v #11234 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:09:36 v #11235 > > │ ### base                                                                     │
00:09:36 v #11236 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:09:36 v #11237 > >
00:09:36 v #11238 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:09:36 v #11239 > > inl base forall dim {int} el. ((a a) : a dim el) : array_base el =
00:09:36 v #11240 > >     a
00:09:37 v #11241 > >
00:09:37 v #11242 > > ── markdown ────────────────────────────────────────────────────────────────────
00:09:37 v #11243 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:09:37 v #11244 > > │ ### base'                                                                    │
00:09:37 v #11245 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:09:37 v #11246 > >
00:09:37 v #11247 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:09:37 v #11248 > > inl base' forall el. ((a a) : a int el) : array_base el =
00:09:37 v #11249 > >     a
00:09:37 v #11250 > >
00:09:37 v #11251 > > ── markdown ────────────────────────────────────────────────────────────────────
00:09:37 v #11252 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:09:37 v #11253 > > │ ### generic_equable                                                          │
00:09:37 v #11254 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:09:37 v #11255 > >
00:09:37 v #11256 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:09:37 v #11257 > > inl generic_equable x1 x2 =
00:09:37 v #11258 > >     if length x1 <>.. length x2
00:09:37 v #11259 > >     then false
00:09:37 v #11260 > >     else
00:09:37 v #11261 > >         let rec loop i =
00:09:37 v #11262 > >             if i < length x1
00:09:37 v #11263 > >             then index i x1 = index i x2 && loop (i + 1)
00:09:37 v #11264 > >             else true
00:09:37 v #11265 > >         loop 0
00:09:38 v #11266 > >
00:09:38 v #11267 > > ── markdown ────────────────────────────────────────────────────────────────────
00:09:38 v #11268 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:09:38 v #11269 > > │ ### equable                                                                  │
00:09:38 v #11270 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:09:38 v #11271 > >
00:09:38 v #11272 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:09:38 v #11273 > > instance equable a dim {number; int} t = generic_equable
00:09:38 v #11274 > >
00:09:38 v #11275 > > ── markdown ────────────────────────────────────────────────────────────────────
00:09:38 v #11276 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:09:38 v #11277 > > │ ### append                                                                   │
00:09:38 v #11278 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:09:38 v #11279 > >
00:09:38 v #11280 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:09:38 v #11281 > > instance append a dim {int; number} t = am.append
00:09:39 v #11282 > >
00:09:39 v #11283 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:09:39 v #11284 > > //// test
00:09:39 v #11285 > > ///! fsharp
00:09:39 v #11286 > > ///! cuda
00:09:39 v #11287 > > ///! rust
00:09:39 v #11288 > > ///! typescript
00:09:39 v #11289 > > ///! python
00:09:39 v #11290 > >
00:09:39 v #11291 > > a' ;[[ -1i64; 0 ]] ++ a' ;[[ 1; 2 ]]
00:09:39 v #11292 > > |> _assert_eq (a' ;[[ -1; 0; 1; 2 ]])
00:09:44 v #11293 > >
00:09:44 v #11294 > > ╭─[ 5.28s - return value ]─────────────────────────────────────────────────────╮
00:09:44 v #11295 > > │ .py output (Cuda):                                                           │
00:09:44 v #11296 > > │ __assert_eq / actual: [-1  0  1  2] / expected: [-1  0  1  2]                │
00:09:44 v #11297 > > │                                                                              │
00:09:44 v #11298 > > │ .rs output:                                                                  │
00:09:44 v #11299 > > │ __assert_eq / actual: Array(MutCell([-1, 0, 1, 2])) / expected:              │
00:09:44 v #11300 > > │ Array(MutCell([-1, 0, 1, 2]))                                                │
00:09:44 v #11301 > > │                                                                              │
00:09:44 v #11302 > > │ .ts output:                                                                  │
00:09:44 v #11303 > > │ __assert_eq / actual: -1,0,1,2 / expected: -1,0,1,2                          │
00:09:44 v #11304 > > │                                                                              │
00:09:44 v #11305 > > │ .py output:                                                                  │
00:09:44 v #11306 > > │ __assert_eq / actual: [-1, 0, 1, 2] / expected: array('q', [-1, 0, 1, 2])    │
00:09:44 v #11307 > > │                                                                              │
00:09:44 v #11308 > > │                                                                              │
00:09:44 v #11309 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:09:44 v #11310 > >
00:09:44 v #11311 > > ╭─[ 5.29s - stdout ]───────────────────────────────────────────────────────────╮
00:09:44 v #11312 > > │ .fsx output:                                                                 │
00:09:44 v #11313 > > │ __assert_eq / actual: [|-1L; 0L; 1L; 2L|] / expected: [|-1L; 0L; 1L; 2L|]    │
00:09:44 v #11314 > > │                                                                              │
00:09:44 v #11315 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:09:44 v #11316 > >
00:09:44 v #11317 > > ── markdown ────────────────────────────────────────────────────────────────────
00:09:44 v #11318 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:09:44 v #11319 > > │ ### map_base                                                                 │
00:09:44 v #11320 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:09:44 v #11321 > >
00:09:44 v #11322 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:09:44 v #11323 > > inl map_base forall t u. (fn : t -> u) (x : array_base t) : array_base u =
00:09:44 v #11324 > >     a x
00:09:44 v #11325 > >     |> am.map fn
00:09:44 v #11326 > >     |> fun (a x : _ int _) => x
00:09:44 v #11327 > >
00:09:44 v #11328 > > ── markdown ────────────────────────────────────────────────────────────────────
00:09:44 v #11329 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:09:44 v #11330 > > │ ### collect                                                                  │
00:09:44 v #11331 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:09:44 v #11332 > >
00:09:44 v #11333 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:09:44 v #11334 > > inl collect forall t r. (fn : t -> a int r) (items : a int t) : a int r =
00:09:44 v #11335 > >     items
00:09:44 v #11336 > >     |> am.map fn
00:09:44 v #11337 > >     |> am.fold (++) (a ;[[]])
00:09:45 v #11338 > >
00:09:45 v #11339 > > ── markdown ────────────────────────────────────────────────────────────────────
00:09:45 v #11340 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:09:45 v #11341 > > │ ### init                                                                     │
00:09:45 v #11342 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:09:45 v #11343 > >
00:09:45 v #11344 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:09:45 v #11345 > > inl init n : array_base _ =
00:09:45 v #11346 > >     am.init n id
00:09:45 v #11347 > >     |> fun (a x : _ int _) => x
00:09:45 v #11348 > >
00:09:45 v #11349 > > ── markdown ────────────────────────────────────────────────────────────────────
00:09:45 v #11350 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:09:45 v #11351 > > │ ### choose                                                                   │
00:09:45 v #11352 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:09:45 v #11353 > >
00:09:45 v #11354 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:09:45 v #11355 > > inl choose f l =
00:09:45 v #11356 > >     (l, [[]])
00:09:45 v #11357 > >     ||> am.foldBack fun x acc =>
00:09:45 v #11358 > >         match f x with
00:09:45 v #11359 > >         | Some y => y :: acc
00:09:45 v #11360 > >         | None => acc
00:09:45 v #11361 > >     |> listm.toArray
00:09:45 v #11362 > >
00:09:45 v #11363 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:09:45 v #11364 > > //// test
00:09:45 v #11365 > > ///! fsharp
00:09:45 v #11366 > > ///! cuda
00:09:45 v #11367 > > ////! rust // v0.get_mut()[[v2.get().clone() as usize]] = match
00:09:45 v #11368 > > v1.get().clone().as_ref() { ^ expected `i32`, found `usize`
00:09:45 v #11369 > > ///! typescript
00:09:45 v #11370 > > ///! python
00:09:45 v #11371 > >
00:09:45 v #11372 > > 10
00:09:45 v #11373 > > |> init
00:09:45 v #11374 > > |> fun x => a x : _ int _
00:09:45 v #11375 > > |> choose (fun x => if x % 2 = 0 then Some x else None)
00:09:45 v #11376 > > |> _assert_eq (a' ;[[ 0; 2; 4; 6; 8 ]])
00:09:48 v #11377 > >
00:09:48 v #11378 > > ╭─[ 2.44s - return value ]─────────────────────────────────────────────────────╮
00:09:48 v #11379 > > │ .py output (Cuda):                                                           │
00:09:48 v #11380 > > │ __assert_eq / actual: [0 2 4 6 8] / expected: [0 2 4 6 8]                    │
00:09:48 v #11381 > > │                                                                              │
00:09:48 v #11382 > > │ .ts output:                                                                  │
00:09:48 v #11383 > > │ __assert_eq / actual: 0,2,4,6,8 / expected: 0,2,4,6,8                        │
00:09:48 v #11384 > > │                                                                              │
00:09:48 v #11385 > > │ .py output:                                                                  │
00:09:48 v #11386 > > │ __assert_eq / actual: [0, 2, 4, 6, 8] / expected: array('l', [0, 2, 4, 6,    │
00:09:48 v #11387 > > │ 8])                                                                          │
00:09:48 v #11388 > > │                                                                              │
00:09:48 v #11389 > > │                                                                              │
00:09:48 v #11390 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:09:48 v #11391 > >
00:09:48 v #11392 > > ╭─[ 2.44s - stdout ]───────────────────────────────────────────────────────────╮
00:09:48 v #11393 > > │ .fsx output:                                                                 │
00:09:48 v #11394 > > │ __assert_eq / actual: [|0; 2; 4; 6; 8|] / expected: [|0; 2; 4; 6; 8|]        │
00:09:48 v #11395 > > │                                                                              │
00:09:48 v #11396 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:09:48 v #11397 > >
00:09:48 v #11398 > > ── markdown ────────────────────────────────────────────────────────────────────
00:09:48 v #11399 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:09:48 v #11400 > > │ ### sum                                                                      │
00:09:48 v #11401 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:09:48 v #11402 > >
00:09:48 v #11403 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:09:48 v #11404 > > inl sum a =
00:09:48 v #11405 > >     a |> am.fold (+) 0
00:09:48 v #11406 > >
00:09:48 v #11407 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:09:48 v #11408 > > //// test
00:09:48 v #11409 > > ///! fsharp
00:09:48 v #11410 > > ///! cuda
00:09:48 v #11411 > > ///! rust
00:09:48 v #11412 > > ///! typescript
00:09:48 v #11413 > > ///! python
00:09:48 v #11414 > >
00:09:48 v #11415 > > 10
00:09:48 v #11416 > > |> init
00:09:48 v #11417 > > |> fun x => a x : _ int _
00:09:48 v #11418 > > |> sum
00:09:48 v #11419 > > |> _assert_eq 45
00:09:52 v #11420 > >
00:09:52 v #11421 > > ╭─[ 3.74s - return value ]─────────────────────────────────────────────────────╮
00:09:52 v #11422 > > │ .py output (Cuda):                                                           │
00:09:52 v #11423 > > │ __assert_eq / actual: 45 / expected: 45                                      │
00:09:52 v #11424 > > │                                                                              │
00:09:52 v #11425 > > │ .rs output:                                                                  │
00:09:52 v #11426 > > │ __assert_eq / actual: 45 / expected: 45                                      │
00:09:52 v #11427 > > │                                                                              │
00:09:52 v #11428 > > │ .ts output:                                                                  │
00:09:52 v #11429 > > │ __assert_eq / actual: 45 / expected: 45                                      │
00:09:52 v #11430 > > │                                                                              │
00:09:52 v #11431 > > │ .py output:                                                                  │
00:09:52 v #11432 > > │ __assert_eq / actual: 45 / expected: 45                                      │
00:09:52 v #11433 > > │                                                                              │
00:09:52 v #11434 > > │                                                                              │
00:09:52 v #11435 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:09:52 v #11436 > >
00:09:52 v #11437 > > ╭─[ 3.74s - stdout ]───────────────────────────────────────────────────────────╮
00:09:52 v #11438 > > │ .fsx output:                                                                 │
00:09:52 v #11439 > > │ __assert_eq / actual: 45 / expected: 45                                      │
00:09:52 v #11440 > > │                                                                              │
00:09:52 v #11441 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:09:52 v #11442 > >
00:09:52 v #11443 > > ── markdown ────────────────────────────────────────────────────────────────────
00:09:52 v #11444 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:09:52 v #11445 > > │ ### init_series                                                              │
00:09:52 v #11446 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:09:52 v #11447 > >
00:09:52 v #11448 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:09:52 v #11449 > > inl init_series start end inc : array_base _ =
00:09:52 v #11450 > >     inl total = conv ((end - start) / inc) + 1
00:09:52 v #11451 > >     am.init total (conv >> (*) inc >> (+) start)
00:09:52 v #11452 > >     |> fun (a x : _ int _) => x
00:09:52 v #11453 > >
00:09:52 v #11454 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:09:52 v #11455 > > //// test
00:09:52 v #11456 > > ///! fsharp
00:09:52 v #11457 > > ///! cuda
00:09:52 v #11458 > > ///! rust
00:09:52 v #11459 > > ///! typescript
00:09:52 v #11460 > > ///! python
00:09:52 v #11461 > >
00:09:52 v #11462 > > init_series 0i32 6 2
00:09:52 v #11463 > > |> a
00:09:52 v #11464 > > |> fun x => x : _ int _
00:09:52 v #11465 > > |> _assert_eq (a ;[[ 0i32; 2; 4; 6 ]])
00:09:56 v #11466 > >
00:09:56 v #11467 > > ╭─[ 3.68s - return value ]─────────────────────────────────────────────────────╮
00:09:56 v #11468 > > │ .py output (Cuda):                                                           │
00:09:56 v #11469 > > │ __assert_eq / actual: [0 2 4 6] / expected: [0 2 4 6]                        │
00:09:56 v #11470 > > │                                                                              │
00:09:56 v #11471 > > │ .rs output:                                                                  │
00:09:56 v #11472 > > │ __assert_eq / actual: Array(MutCell([0, 2, 4, 6])) / expected:               │
00:09:56 v #11473 > > │ Array(MutCell([0, 2, 4, 6]))                                                 │
00:09:56 v #11474 > > │                                                                              │
00:09:56 v #11475 > > │ .ts output:                                                                  │
00:09:56 v #11476 > > │ __assert_eq / actual: 0,2,4,6 / expected: 0,2,4,6                            │
00:09:56 v #11477 > > │                                                                              │
00:09:56 v #11478 > > │ .py output:                                                                  │
00:09:56 v #11479 > > │ __assert_eq / actual: [0, 2, 4, 6] / expected: array('l', [0, 2, 4, 6])      │
00:09:56 v #11480 > > │                                                                              │
00:09:56 v #11481 > > │                                                                              │
00:09:56 v #11482 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:09:56 v #11483 > >
00:09:56 v #11484 > > ╭─[ 3.68s - stdout ]───────────────────────────────────────────────────────────╮
00:09:56 v #11485 > > │ .fsx output:                                                                 │
00:09:56 v #11486 > > │ __assert_eq / actual: [|0; 2; 4; 6|] / expected: [|0; 2; 4; 6|]              │
00:09:56 v #11487 > > │                                                                              │
00:09:56 v #11488 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:09:56 v #11489 > >
00:09:56 v #11490 > > ── markdown ────────────────────────────────────────────────────────────────────
00:09:56 v #11491 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:09:56 v #11492 > > │ ### head                                                                     │
00:09:56 v #11493 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:09:56 v #11494 > >
00:09:56 v #11495 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:09:56 v #11496 > > inl head (ar : a _ _) =
00:09:56 v #11497 > >     if var_is ar || length ar > 0
00:09:56 v #11498 > >     then ar |> index 0
00:09:56 v #11499 > >     else error_type "The length of the array should be greater than 0."
00:09:56 v #11500 > >
00:09:56 v #11501 > > ── markdown ────────────────────────────────────────────────────────────────────
00:09:56 v #11502 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:09:56 v #11503 > > │ ### last                                                                     │
00:09:56 v #11504 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:09:56 v #11505 > >
00:09:56 v #11506 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:09:56 v #11507 > > inl last (ar : a _ _) =
00:09:56 v #11508 > >     inl len = length ar
00:09:56 v #11509 > >     if var_is ar || len > 0
00:09:56 v #11510 > >     then ar |> index (len - 1)
00:09:56 v #11511 > >     else error_type "The length of the array should be greater than 0."
00:09:57 v #11512 > >
00:09:57 v #11513 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:09:57 v #11514 > > //// test
00:09:57 v #11515 > > ///! fsharp
00:09:57 v #11516 > > ///! cuda
00:09:57 v #11517 > > ///! rust
00:09:57 v #11518 > > ///! typescript
00:09:57 v #11519 > > ///! python
00:09:57 v #11520 > >
00:09:57 v #11521 > > 10
00:09:57 v #11522 > > |> init
00:09:57 v #11523 > > |> fun x => a x : _ int _
00:09:57 v #11524 > > |> last
00:09:57 v #11525 > > |> _assert_eq 9
00:10:00 v #11526 > >
00:10:00 v #11527 > > ╭─[ 3.66s - return value ]─────────────────────────────────────────────────────╮
00:10:00 v #11528 > > │ .py output (Cuda):                                                           │
00:10:00 v #11529 > > │ __assert_eq / actual: 9 / expected: 9                                        │
00:10:00 v #11530 > > │                                                                              │
00:10:00 v #11531 > > │ .rs output:                                                                  │
00:10:00 v #11532 > > │ __assert_eq / actual: 9 / expected: 9                                        │
00:10:00 v #11533 > > │                                                                              │
00:10:00 v #11534 > > │ .ts output:                                                                  │
00:10:00 v #11535 > > │ __assert_eq / actual: 9 / expected: 9                                        │
00:10:00 v #11536 > > │                                                                              │
00:10:00 v #11537 > > │ .py output:                                                                  │
00:10:00 v #11538 > > │ __assert_eq / actual: 9 / expected: 9                                        │
00:10:00 v #11539 > > │                                                                              │
00:10:00 v #11540 > > │                                                                              │
00:10:00 v #11541 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:00 v #11542 > >
00:10:00 v #11543 > > ╭─[ 3.66s - stdout ]───────────────────────────────────────────────────────────╮
00:10:00 v #11544 > > │ .fsx output:                                                                 │
00:10:00 v #11545 > > │ __assert_eq / actual: 9 / expected: 9                                        │
00:10:00 v #11546 > > │                                                                              │
00:10:00 v #11547 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:00 v #11548 > >
00:10:00 v #11549 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:00 v #11550 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:00 v #11551 > > │ ### try_pick                                                                 │
00:10:00 v #11552 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:00 v #11553 > >
00:10:00 v #11554 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:00 v #11555 > > inl try_pick forall t u. (fn : t -> option u) (array : a _ t) : option u =
00:10:00 v #11556 > >     (array, None)
00:10:00 v #11557 > >     ||> am.foldBack fun x acc =>
00:10:00 v #11558 > >         match acc with
00:10:00 v #11559 > >         | Some _ => acc
00:10:00 v #11560 > >         | None => x |> fn
00:10:01 v #11561 > >
00:10:01 v #11562 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:01 v #11563 > > //// test
00:10:01 v #11564 > > ///! fsharp
00:10:01 v #11565 > > ///! cuda
00:10:01 v #11566 > > ////! rust // match &v23 { Spiral_builder::US0::US0_0(x) => x.clone(), _ =>
00:10:01 v #11567 > > unreachable!(), } == 5_i32
00:10:01 v #11568 > > ///! typescript
00:10:01 v #11569 > > ///! python
00:10:01 v #11570 > >
00:10:01 v #11571 > > 10
00:10:01 v #11572 > > |> init
00:10:01 v #11573 > > |> fun x => a x : _ int _
00:10:01 v #11574 > > |> try_pick (fun x => if x = 5i32 then Some x else None)
00:10:01 v #11575 > > |> _assert_eq (Some 5i32)
00:10:03 v #11576 > >
00:10:03 v #11577 > > ╭─[ 2.04s - return value ]─────────────────────────────────────────────────────╮
00:10:03 v #11578 > > │ .py output (Cuda):                                                           │
00:10:03 v #11579 > > │ __assert_eq / actual: US0_0(v0=5) / expected: US0_0(v0=5)                    │
00:10:03 v #11580 > > │                                                                              │
00:10:03 v #11581 > > │ .ts output:                                                                  │
00:10:03 v #11582 > > │ __assert_eq / actual: US0_0 5 / expected: US0_0 5                            │
00:10:03 v #11583 > > │                                                                              │
00:10:03 v #11584 > > │ .py output:                                                                  │
00:10:03 v #11585 > > │ __assert_eq / actual: US0_0 5 / expected: US0_0 5                            │
00:10:03 v #11586 > > │                                                                              │
00:10:03 v #11587 > > │                                                                              │
00:10:03 v #11588 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:03 v #11589 > >
00:10:03 v #11590 > > ╭─[ 2.04s - stdout ]───────────────────────────────────────────────────────────╮
00:10:03 v #11591 > > │ .fsx output:                                                                 │
00:10:03 v #11592 > > │ __assert_eq / actual: US0_0 5 / expected: US0_0 5                            │
00:10:03 v #11593 > > │                                                                              │
00:10:03 v #11594 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:03 v #11595 > >
00:10:03 v #11596 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:03 v #11597 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:03 v #11598 > > │ ### indexed                                                                  │
00:10:03 v #11599 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:03 v #11600 > >
00:10:03 v #11601 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:03 v #11602 > > inl indexed forall t u {number}. (ar : array_base t) : array_base (u * t) =
00:10:03 v #11603 > >     ((0, a ;[[]]), (a ar : _ int _))
00:10:03 v #11604 > >     ||> am.fold fun (i, acc) x =>
00:10:03 v #11605 > >         i + 1, acc ++ a ;[[i, x]]
00:10:03 v #11606 > >     |> snd
00:10:03 v #11607 > >     |> fun (a x : _ int _) => x
00:10:03 v #11608 > >
00:10:03 v #11609 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:03 v #11610 > > //// test
00:10:03 v #11611 > > ///! fsharp
00:10:03 v #11612 > > ////! cuda // Only stack allocated primitive types (i8,i16,i32,i64 and
00:10:03 v #11613 > > u8,u16,u32,u64 and f32,f64 and bool) are allowed in CuPy arrays.
00:10:03 v #11614 > > ///! rust
00:10:03 v #11615 > > ///! typescript
00:10:03 v #11616 > > ///! python
00:10:03 v #11617 > >
00:10:03 v #11618 > > am.init 3i32 ((*) 2)
00:10:03 v #11619 > > |> fun (a x : _ int _) => x
00:10:03 v #11620 > > |> indexed
00:10:03 v #11621 > > |> _assert_eq' ;[[0i32, 0; 1, 2; 2, 4]]
00:10:07 v #11622 > >
00:10:07 v #11623 > > ╭─[ 3.25s - return value ]─────────────────────────────────────────────────────╮
00:10:07 v #11624 > > │ .rs output:                                                                  │
00:10:07 v #11625 > > │ __assert_eq' / actual: Array(MutCell([(0, 0), (1, 2), (2, 4)])) / expected:  │
00:10:07 v #11626 > > │ Array(MutCell([(0, 0), (1, 2), (2, 4)]))                                     │
00:10:07 v #11627 > > │                                                                              │
00:10:07 v #11628 > > │ .ts output:                                                                  │
00:10:07 v #11629 > > │ __assert_eq' / actual: 0,0,1,2,2,4 / expected: 0,0,1,2,2,4                   │
00:10:07 v #11630 > > │                                                                              │
00:10:07 v #11631 > > │ .py output:                                                                  │
00:10:07 v #11632 > > │ __assert_eq' / actual: [(0, 0), (1, 2), (2, 4)] / expected: [(0, 0), (1, 2), │
00:10:07 v #11633 > > │ (2, 4)]                                                                      │
00:10:07 v #11634 > > │                                                                              │
00:10:07 v #11635 > > │                                                                              │
00:10:07 v #11636 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:07 v #11637 > >
00:10:07 v #11638 > > ╭─[ 3.25s - stdout ]───────────────────────────────────────────────────────────╮
00:10:07 v #11639 > > │ .fsx output:                                                                 │
00:10:07 v #11640 > > │ __assert_eq' / actual: [|struct (0, 0); struct (1, 2); struct (2, 4)|] /     │
00:10:07 v #11641 > > │ expected: [|struct (0, 0); struct (1, 2); struct (2, 4)|]                    │
00:10:07 v #11642 > > │                                                                              │
00:10:07 v #11643 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:07 v #11644 > >
00:10:07 v #11645 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:07 v #11646 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:07 v #11647 > > │ ### slice                                                                    │
00:10:07 v #11648 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:07 v #11649 > >
00:10:07 v #11650 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:07 v #11651 > > inl slice forall dim {int; number} el. from nearTo s : a dim el =
00:10:07 v #11652 > >     am.slice { from nearTo } s
00:10:07 v #11653 > >
00:10:07 v #11654 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:07 v #11655 > > //// test
00:10:07 v #11656 > > ///! fsharp
00:10:07 v #11657 > > ///! cuda
00:10:07 v #11658 > > ///! rust
00:10:07 v #11659 > > ///! typescript
00:10:07 v #11660 > > ///! python
00:10:07 v #11661 > >
00:10:07 v #11662 > > inl x : _ i32 _ = a ;[[ 1i32; 2; 3 ]]
00:10:07 v #11663 > > x |> slice 0 0 |> _assert_eq (a ;[[]])
00:10:07 v #11664 > > x |> slice 0 1 |> _assert_eq (a ;[[ 1 ]])
00:10:07 v #11665 > > x |> slice 1 1 |> _assert_eq (a ;[[]])
00:10:07 v #11666 > > x |> slice 1 2 |> _assert_eq (a ;[[ 2 ]])
00:10:07 v #11667 > > x |> slice 2 2 |> _assert_eq (a ;[[]])
00:10:07 v #11668 > > x |> slice 0 2 |> _assert_eq (a ;[[ 1; 2 ]])
00:10:11 v #11669 > >
00:10:11 v #11670 > > ╭─[ 3.66s - return value ]─────────────────────────────────────────────────────╮
00:10:11 v #11671 > > │                                                                              │
00:10:11 v #11672 > > │ .py output (Cuda):                                                           │
00:10:11 v #11673 > > │ __assert_eq / actual: [] / expected: []                                      │
00:10:11 v #11674 > > │ __assert_eq / actual: [1] / expected: [1]                                    │
00:10:11 v #11675 > > │ __assert_eq / actual: [] / expected: []                                      │
00:10:11 v #11676 > > │ __assert_eq / actual: [2] / expected: [2]                                    │
00:10:11 v #11677 > > │ __assert_eq / actual: [] / expected: []                                      │
00:10:11 v #11678 > > │ __assert_eq / actual: [1 2] / expected: [1 2]                                │
00:10:11 v #11679 > > │                                                                              │
00:10:11 v #11680 > > │                                                                              │
00:10:11 v #11681 > > │ .rs output:                                                                  │
00:10:11 v #11682 > > │ __assert_eq / actual: Array(MutCell([])) / expected: Array(MutCell([]))      │
00:10:11 v #11683 > > │ __assert_eq / actual: Array(MutCell([1])) / expected: Array(MutCell([1]))    │
00:10:11 v #11684 > > │ __assert_eq / actual: Array(MutCell([])) / expected: Array(MutCell([]))      │
00:10:11 v #11685 > > │ __assert_eq / actual: Array(MutCell([2])) / expected: Array(MutCell([2]))    │
00:10:11 v #11686 > > │ __assert_eq / actual: Array(MutCell([])) / expected: Array(MutCell([]))      │
00:10:11 v #11687 > > │ __assert_eq / actual: Array(MutCell([1, 2])) / expected: Array(MutCell([1,   │
00:10:11 v #11688 > > │ 2]))                                                                         │
00:10:11 v #11689 > > │                                                                              │
00:10:11 v #11690 > > │                                                                              │
00:10:11 v #11691 > > │ .ts output:                                                                  │
00:10:11 v #11692 > > │ __assert_eq / actual:  / expected:                                           │
00:10:11 v #11693 > > │ __assert_eq / actual: 1 / expected: 1                                        │
00:10:11 v #11694 > > │ __assert_eq / actual:  / expected:                                           │
00:10:11 v #11695 > > │ __assert_eq / actual: 2 / expected: 2                                        │
00:10:11 v #11696 > > │ __assert_eq / actual:  / expected:                                           │
00:10:11 v #11697 > > │ __assert_eq / actual: 1,2 / expected: 1,2                                    │
00:10:11 v #11698 > > │                                                                              │
00:10:11 v #11699 > > │                                                                              │
00:10:11 v #11700 > > │ .py output:                                                                  │
00:10:11 v #11701 > > │ __assert_eq / actual: [] / expected: array('l')                              │
00:10:11 v #11702 > > │ __assert_eq / actual: [1] / expected: array('l', [1])                        │
00:10:11 v #11703 > > │ __assert_eq / actual: [] / expected: array('l')                              │
00:10:11 v #11704 > > │ __assert_eq / actual: [2] / expected: array('l', [2])                        │
00:10:11 v #11705 > > │ __assert_eq / actual: [] / expected: array('l')                              │
00:10:11 v #11706 > > │ __assert_eq / actual: [1, 2] / expected: array('l', [1, 2])                  │
00:10:11 v #11707 > > │                                                                              │
00:10:11 v #11708 > > │                                                                              │
00:10:11 v #11709 > > │                                                                              │
00:10:11 v #11710 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:11 v #11711 > >
00:10:11 v #11712 > > ╭─[ 3.66s - stdout ]───────────────────────────────────────────────────────────╮
00:10:11 v #11713 > > │ .fsx output:                                                                 │
00:10:11 v #11714 > > │ __assert_eq / actual: [||] / expected: [||]                                  │
00:10:11 v #11715 > > │ __assert_eq / actual: [|1|] / expected: [|1|]                                │
00:10:11 v #11716 > > │ __assert_eq / actual: [||] / expected: [||]                                  │
00:10:11 v #11717 > > │ __assert_eq / actual: [|2|] / expected: [|2|]                                │
00:10:11 v #11718 > > │ __assert_eq / actual: [||] / expected: [||]                                  │
00:10:11 v #11719 > > │ __assert_eq / actual: [|1; 2|] / expected: [|1; 2|]                          │
00:10:11 v #11720 > > │                                                                              │
00:10:11 v #11721 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:11 v #11722 > >
00:10:11 v #11723 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:11 v #11724 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:11 v #11725 > > │ ### range                                                                    │
00:10:11 v #11726 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:11 v #11727 > >
00:10:11 v #11728 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:11 v #11729 > > union range dim =
00:10:11 v #11730 > >     | Start : dim
00:10:11 v #11731 > >     | End : dim -> dim
00:10:11 v #11732 > >
00:10:11 v #11733 > > inl range start end s =
00:10:11 v #11734 > >     inl start, end =
00:10:11 v #11735 > >         match start, end with
00:10:11 v #11736 > >         | Start start, End fn =>
00:10:11 v #11737 > >             start, s |> length |> conv |> fn
00:10:11 v #11738 > >         | End start_fn, End end_fn =>
00:10:11 v #11739 > >             inl len = s |> length |> conv
00:10:11 v #11740 > >             start_fn len, end_fn len
00:10:11 v #11741 > >     s |> slice (start |> unbox) (end |> unbox)
00:10:11 v #11742 > >
00:10:11 v #11743 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:11 v #11744 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:11 v #11745 > > │ ## rust                                                                      │
00:10:11 v #11746 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:11 v #11747 > >
00:10:11 v #11748 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:11 v #11749 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:11 v #11750 > > │ ### vec                                                                      │
00:10:11 v #11751 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:11 v #11752 > >
00:10:11 v #11753 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:11 v #11754 > > nominal vec t =
00:10:11 v #11755 > >     `(
00:10:11 v #11756 > >         backend_switch `(()) `({}) {
00:10:11 v #11757 > >             Fsharp =
00:10:11 v #11758 > >                 (fun () =>
00:10:11 v #11759 > >                     global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:10:11 v #11760 > > Fable.Core.Emit(\"Vec<$0>\")>]]\n#endif\ntype Vec<'T> = class end"
00:10:11 v #11761 > >                 ) : () -> ()
00:10:11 v #11762 > >         }
00:10:11 v #11763 > >         $'' : $'Vec<`t>'
00:10:11 v #11764 > >     )
00:10:11 v #11765 > >
00:10:11 v #11766 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:11 v #11767 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:11 v #11768 > > │ ### from_vec                                                                 │
00:10:11 v #11769 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:11 v #11770 > >
00:10:11 v #11771 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:11 v #11772 > > inl from_vec forall dim el. (vec : vec el) : a dim el =
00:10:11 v #11773 > >     !\\(vec, $'"fable_library_rust::NativeArray_::array_from($0)"')
00:10:12 v #11774 > >
00:10:12 v #11775 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:12 v #11776 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:12 v #11777 > > │ ### from_vec_base                                                            │
00:10:12 v #11778 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:12 v #11779 > >
00:10:12 v #11780 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:12 v #11781 > > inl from_vec_base forall el. (vec : vec el) : array_base el =
00:10:12 v #11782 > >     !\\(vec, $'"fable_library_rust::NativeArray_::array_from($0)"')
00:10:12 v #11783 > >
00:10:12 v #11784 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:12 v #11785 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:12 v #11786 > > │ ### to_vec                                                                   │
00:10:12 v #11787 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:12 v #11788 > >
00:10:12 v #11789 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:12 v #11790 > > inl to_vec forall t. (ab : array_base t) : vec t =
00:10:12 v #11791 > >     !\\(ab, $'"$0.to_vec()"')
00:10:13 v #11792 > >
00:10:13 v #11793 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:13 v #11794 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:13 v #11795 > > │ ### to_vec'                                                                  │
00:10:13 v #11796 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:13 v #11797 > >
00:10:13 v #11798 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:13 v #11799 > > inl to_vec' forall (t : * -> * -> *) u v. (x : t u v) : vec u =
00:10:13 v #11800 > >     !\($'$"!x.to_vec()"')
00:10:13 v #11801 > >
00:10:13 v #11802 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:13 v #11803 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:13 v #11804 > > │ ### to_vec''                                                                 │
00:10:13 v #11805 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:13 v #11806 > >
00:10:13 v #11807 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:13 v #11808 > > inl to_vec'' forall (t : * -> *) (u : * -> *) v. (x : t (u v)) : vec v =
00:10:13 v #11809 > >     !\($'$"!x.to_vec()"')
00:10:13 v #11810 > >
00:10:13 v #11811 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:13 v #11812 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:13 v #11813 > > │ ### to_vec'''                                                                │
00:10:13 v #11814 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:13 v #11815 > >
00:10:13 v #11816 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:13 v #11817 > > inl to_vec''' forall t. (ab : array_base t) : vec t =
00:10:13 v #11818 > >     !\\(ab, $'"to_vec($0)"')
00:10:14 v #11819 > >
00:10:14 v #11820 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:14 v #11821 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:14 v #11822 > > │ ### vec_push                                                                 │
00:10:14 v #11823 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:14 v #11824 > >
00:10:14 v #11825 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:14 v #11826 > > inl vec_push forall el. (el : el) (vec : vec el) : vec el =
00:10:14 v #11827 > >     inl el = join el
00:10:14 v #11828 > >     inl vec = join vec
00:10:14 v #11829 > >     (!\($'"true; let mut !vec = !vec"') : bool) |> ignore
00:10:14 v #11830 > >     // inl vec = vec |> rust.to_mut
00:10:14 v #11831 > >     (!\($'"true; !vec.push(!el)"') : bool) |> ignore
00:10:14 v #11832 > >     !\($'"!vec"')
00:10:14 v #11833 > >
00:10:14 v #11834 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:14 v #11835 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:14 v #11836 > > │ ### vec_reverse                                                              │
00:10:14 v #11837 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:14 v #11838 > >
00:10:14 v #11839 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:14 v #11840 > > inl vec_reverse forall el. (vec : vec el) : vec el =
00:10:14 v #11841 > >     inl vec = join vec
00:10:14 v #11842 > >     (!\($'"true; let mut !vec = !vec"') : bool) |> ignore
00:10:14 v #11843 > >     (!\($'"true; !vec.reverse()"') : bool) |> ignore
00:10:14 v #11844 > >     !\($'"!vec"')
00:10:15 v #11845 > >
00:10:15 v #11846 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:15 v #11847 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:15 v #11848 > > │ ### vec_retain                                                               │
00:10:15 v #11849 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:15 v #11850 > >
00:10:15 v #11851 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:15 v #11852 > > inl vec_retain forall el. (fn : el -> bool) (vec : vec el) : vec el =
00:10:15 v #11853 > >     inl vec = join vec
00:10:15 v #11854 > >     inl fn = join fn
00:10:15 v #11855 > >     (!\($'"true; let mut !vec = !vec"') : bool) |> ignore
00:10:15 v #11856 > >     // inl vec = vec |> rust.to_mut
00:10:15 v #11857 > >     (!\($'"true; !vec.retain(|x| !fn(x.clone()))"') : bool) |> ignore
00:10:15 v #11858 > >     !\($'"!vec"')
00:10:15 v #11859 > >
00:10:15 v #11860 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:15 v #11861 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:15 v #11862 > > │ ### vec_sort_by_key                                                          │
00:10:15 v #11863 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:15 v #11864 > >
00:10:15 v #11865 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:15 v #11866 > > inl vec_sort_by_key forall el t. (fn : el -> t) (vec : vec el) : vec el =
00:10:15 v #11867 > >     inl vec = join vec
00:10:15 v #11868 > >     inl fn = join fn
00:10:15 v #11869 > >     (!\($'"true; let mut !vec = !vec"') : bool) |> ignore
00:10:15 v #11870 > >     // inl vec = vec |> rust.to_mut
00:10:15 v #11871 > >     (!\($'"true; !vec.sort_by_key(|x| !fn(x.clone()))"') : bool) |> ignore
00:10:15 v #11872 > >     !\($'"!vec"')
00:10:15 v #11873 > >
00:10:15 v #11874 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:15 v #11875 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:15 v #11876 > > │ ### vec_extend                                                               │
00:10:15 v #11877 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:15 v #11878 > >
00:10:15 v #11879 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:15 v #11880 > > inl vec_extend forall el. (el : vec el) (vec : vec el) : vec el =
00:10:15 v #11881 > >     inl el = join el
00:10:15 v #11882 > >     inl vec = join vec
00:10:15 v #11883 > >     (!\($'"true; let mut !vec = !vec"') : bool) |> ignore
00:10:15 v #11884 > >     // inl vec = vec |> rust.to_mut
00:10:15 v #11885 > >     (!\($'"true; !vec.extend(!el)"') : bool) |> ignore
00:10:15 v #11886 > >     !\($'"!vec"')
00:10:16 v #11887 > >
00:10:16 v #11888 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:16 v #11889 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:16 v #11890 > > │ ### vec_collect                                                              │
00:10:16 v #11891 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:16 v #11892 > >
00:10:16 v #11893 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:16 v #11894 > > inl vec_collect fn vec =
00:10:16 v #11895 > >     ((;[[]] |> to_vec), (vec |> from_vec : _ i32 _))
00:10:16 v #11896 > >     ||> am.fold fun acc x =>
00:10:16 v #11897 > >         acc |> vec_extend (fn x)
00:10:16 v #11898 > >
00:10:16 v #11899 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:16 v #11900 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:16 v #11901 > > │ ### vec_collect_option                                                       │
00:10:16 v #11902 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:16 v #11903 > >
00:10:16 v #11904 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:16 v #11905 > > inl vec_collect_option vec =
00:10:16 v #11906 > >     ((;[[]] |> to_vec |> Ok), (vec |> from_vec : _ i32 _))
00:10:16 v #11907 > >     ||> am.fold fun acc x =>
00:10:16 v #11908 > >         x
00:10:16 v #11909 > >         |> resultm.unbox
00:10:16 v #11910 > >         |> fun x =>
00:10:16 v #11911 > >             match acc, x |> resultm.map optionm'.unbox with
00:10:16 v #11912 > >             | Ok acc, Ok (Some x) => acc |> vec_extend x |> Ok
00:10:16 v #11913 > >             | _, Error error => error |> Error
00:10:16 v #11914 > >             | _ => acc
00:10:17 v #11915 > >
00:10:17 v #11916 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:17 v #11917 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:17 v #11918 > > │ ### vec_collect_into                                                         │
00:10:17 v #11919 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:17 v #11920 > >
00:10:17 v #11921 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:17 v #11922 > > inl vec_collect_into forall (c : * -> * -> *) t e.
00:10:17 v #11923 > >     (x : vec (c t e))
00:10:17 v #11924 > >     : c (vec t) e
00:10:17 v #11925 > >     =
00:10:17 v #11926 > >     !\($'"!x.into_iter().collect()"')
00:10:17 v #11927 > >
00:10:17 v #11928 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:17 v #11929 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:17 v #11930 > > │ ### vec_mapi                                                                 │
00:10:17 v #11931 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:17 v #11932 > >
00:10:17 v #11933 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:17 v #11934 > > inl vec_mapi forall dim t u. (fn : dim -> t -> u) (ar : vec t) : vec u =
00:10:17 v #11935 > >     inl fn = join fn
00:10:17 v #11936 > >     inl ar = join ar
00:10:17 v #11937 > >     !\($'"!ar.iter().enumerate().map(|(i, x)|
00:10:17 v #11938 > > !fn(i.try_into().unwrap())(x.clone())).collect::<Vec<_>>()"')
00:10:17 v #11939 > >
00:10:17 v #11940 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:17 v #11941 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:17 v #11942 > > │ ### vec_map                                                                  │
00:10:17 v #11943 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:17 v #11944 > >
00:10:17 v #11945 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:17 v #11946 > > inl vec_map forall t u. (fn : t -> u) (ar : vec t) : vec u =
00:10:17 v #11947 > >     (!\\(ar, $'"true; let _vec_map : Vec<_> = $0.into_iter().map(|x| { //"') :
00:10:17 v #11948 > > bool) |> ignore
00:10:17 v #11949 > >     inl result = fn !\($'"x"')
00:10:17 v #11950 > >     inl is_unit =
00:10:17 v #11951 > >         real
00:10:17 v #11952 > >             typecase u with
00:10:17 v #11953 > >             | () => true
00:10:17 v #11954 > >             | _ => false
00:10:17 v #11955 > >     if is_unit
00:10:17 v #11956 > >     then (!\($'"true; }}).collect::<Vec<_>>()"') : bool) |> ignore
00:10:17 v #11957 > >     else (!\\(result, $'"true; $0 }).collect::<Vec<_>>()"') : bool) |> ignore
00:10:17 v #11958 > >     !\($'"_vec_map"')
00:10:18 v #11959 > >
00:10:18 v #11960 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:18 v #11961 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:18 v #11962 > > │ ### vec_map'                                                                 │
00:10:18 v #11963 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:18 v #11964 > >
00:10:18 v #11965 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:18 v #11966 > > inl vec_map' forall t u. (fn : t -> u) (ar : vec t) : vec u =
00:10:18 v #11967 > >     !\\((ar, fn), $'"$0.into_iter().map(|x|
00:10:18 v #11968 > > $1(x.clone())).collect::<Vec<_>>()"')
00:10:18 v #11969 > >
00:10:18 v #11970 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:18 v #11971 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:18 v #11972 > > │ ### vec_fold'                                                                │
00:10:18 v #11973 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:18 v #11974 > >
00:10:18 v #11975 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:18 v #11976 > > inl vec_fold' forall t u. (fn : u -> t -> u) (init : u) (ar : vec t) : u =
00:10:18 v #11977 > >     (!\\(ar, $'"true; let _vec_fold_ = $0.into_iter().fold(!init, |acc, x| {
00:10:18 v #11978 > > //"') : bool) |> ignore
00:10:18 v #11979 > >     (!\\(fn !\($'"acc"') !\($'"x"'), $'"true; $0 })"') : bool) |> ignore
00:10:18 v #11980 > >     !\($'"_vec_fold_"')
00:10:19 v #11981 > >
00:10:19 v #11982 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:19 v #11983 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:19 v #11984 > > │ ### vec_for_each                                                             │
00:10:19 v #11985 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:19 v #11986 > >
00:10:19 v #11987 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:19 v #11988 > > inl vec_for_each forall t. (fn : t -> ()) (ar : vec t) : () =
00:10:19 v #11989 > >     (!\\((ar, fn), $'"true; $0.iter().for_each(|x| { $1(x.clone()); }); //"') :
00:10:19 v #11990 > > bool) |> ignore
00:10:19 v #11991 > >
00:10:19 v #11992 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:19 v #11993 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:19 v #11994 > > │ ### vec_for_each'                                                            │
00:10:19 v #11995 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:19 v #11996 > >
00:10:19 v #11997 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:19 v #11998 > > inl vec_for_each' forall t. (fn : t -> ()) (ar : vec t) : () =
00:10:19 v #11999 > >     (!\\(ar, $'"true; $0.into_iter().for_each(|x| { //"') : bool) |> ignore
00:10:19 v #12000 > >     (!\\(fn !\($'"x"'), $'$"true"') : bool) |> ignore
00:10:19 v #12001 > >     (!\($'"true; }}); { //"') : bool) |> ignore
00:10:19 v #12002 > >
00:10:19 v #12003 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:19 v #12004 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:19 v #12005 > > │ ### vec_for_each''                                                           │
00:10:19 v #12006 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:19 v #12007 > >
00:10:19 v #12008 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:19 v #12009 > > inl vec_for_each'' forall t. (fn : t -> ()) (ar : vec t) : () =
00:10:19 v #12010 > >     (!\\(ar, $'"true; $0.into_iter().for_each(|x| { //"') : bool) |> ignore
00:10:19 v #12011 > >     (!\\(fn !\($'"x"'), $'$"true"') : bool) |> ignore
00:10:19 v #12012 > >     (!\($'"true; }}); //"') : bool) |> ignore
00:10:20 v #12013 > >
00:10:20 v #12014 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:20 v #12015 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:20 v #12016 > > │ ### vec_for_each'''                                                          │
00:10:20 v #12017 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:20 v #12018 > >
00:10:20 v #12019 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:20 v #12020 > > inl vec_for_each''' forall t. (fn : t -> ()) (ar : vec t) : () =
00:10:20 v #12021 > >     (!\\(ar, $'"true; $0.into_iter().for_each(|x| { //"') : bool) |> ignore
00:10:20 v #12022 > >     (!\\(fn !\($'"x"'), $'$"true"') : bool) |> ignore
00:10:20 v #12023 > >     (!\($'"true; }); //"') : bool) |> ignore
00:10:20 v #12024 > >
00:10:20 v #12025 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:20 v #12026 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:20 v #12027 > > │ ### vec_filter                                                               │
00:10:20 v #12028 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:20 v #12029 > >
00:10:20 v #12030 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:20 v #12031 > > inl vec_filter forall t. (fn : t -> bool) (ar : vec t) : vec t =
00:10:20 v #12032 > >     inl fn = join fn
00:10:20 v #12033 > >     inl ar = join ar
00:10:20 v #12034 > >     !\($'"!ar.into_iter().filter(|x|
00:10:20 v #12035 > > !fn(x.clone().clone())).collect::<Vec<_>>()"')
00:10:21 v #12036 > >
00:10:21 v #12037 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:21 v #12038 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:21 v #12039 > > │ ### vec_len                                                                  │
00:10:21 v #12040 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:21 v #12041 > >
00:10:21 v #12042 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:21 v #12043 > > inl vec_len forall t. (vec : vec t) : unativeint =
00:10:21 v #12044 > >     !\\(vec, $'"$0.len()"')
00:10:21 v #12045 > >
00:10:21 v #12046 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:21 v #12047 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:21 v #12048 > > │ ### vec_chunks                                                               │
00:10:21 v #12049 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:21 v #12050 > >
00:10:21 v #12051 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:21 v #12052 > > inl vec_chunks forall t. (n : i32) (vec : vec t) : vec (vec t) =
00:10:21 v #12053 > >     !\\(vec, $'"$0.chunks(!n).map(|x| x.into_iter().map(|x|
00:10:21 v #12054 > > x.clone()).collect::<Vec<_>>()).collect::<Vec<_>>()"')
00:10:22 v #12055 > >
00:10:22 v #12056 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:22 v #12057 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:22 v #12058 > > │ ### slice                                                                    │
00:10:22 v #12059 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:22 v #12060 > >
00:10:22 v #12061 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:22 v #12062 > > nominal slice t =
00:10:22 v #12063 > >     `(
00:10:22 v #12064 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:10:22 v #12065 > > Fable.Core.Emit(\"[[$0]]\")>]]\n#endif\ntype Slice<'T> = class end"
00:10:22 v #12066 > >         $'' : $'Slice<`t>'
00:10:22 v #12067 > >     )
00:10:22 v #12068 > >
00:10:22 v #12069 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:22 v #12070 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:22 v #12071 > > │ ### slice'                                                                   │
00:10:22 v #12072 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:22 v #12073 > >
00:10:22 v #12074 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:22 v #12075 > > nominal slice' el dim =
00:10:22 v #12076 > >     `(
00:10:22 v #12077 > >         backend_switch `(()) `({}) {
00:10:22 v #12078 > >             Fsharp =
00:10:22 v #12079 > >                 (fun () =>
00:10:22 v #12080 > >                     global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:10:22 v #12081 > > Fable.Core.Emit(\"_\")>]]\n#endif\ntype Slice'<'T> = class end"
00:10:22 v #12082 > >                 ) : () -> ()
00:10:22 v #12083 > >         }
00:10:22 v #12084 > >         $'' : $'Slice\'<`el>'
00:10:22 v #12085 > >     )
00:10:22 v #12086 > >
00:10:22 v #12087 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:22 v #12088 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:22 v #12089 > > │ ### slice''                                                                  │
00:10:22 v #12090 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:22 v #12091 > >
00:10:22 v #12092 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:22 v #12093 > > nominal slice'' el dim =
00:10:22 v #12094 > >     `(
00:10:22 v #12095 > >         backend_switch `(()) `({}) {
00:10:22 v #12096 > >             Fsharp =
00:10:22 v #12097 > >                 (fun () =>
00:10:22 v #12098 > >                     global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:10:22 v #12099 > > Fable.Core.Emit(\"[[$0; 10]]\")>]]\n#endif\ntype Slice'_<'T> = class end"
00:10:22 v #12100 > >                 ) : () -> ()
00:10:22 v #12101 > >         }
00:10:22 v #12102 > >         $'' : $'Slice\'_<`el>'
00:10:22 v #12103 > >     )
00:10:23 v #12104 > >
00:10:23 v #12105 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:23 v #12106 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:23 v #12107 > > │ ### slice_singleton                                                          │
00:10:23 v #12108 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:23 v #12109 > >
00:10:23 v #12110 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:23 v #12111 > > inl slice_singleton forall dim el. (x : option el) : slice' el dim =
00:10:23 v #12112 > >     match x with
00:10:23 v #12113 > >     | Some x => !\($'"[[!x]]"')
00:10:23 v #12114 > >     | None =>
00:10:23 v #12115 > >         !\($'"[[\\\"\\\".to_string()]]"') : slice' el dim
00:10:23 v #12116 > >             // emit_expr `(()) `(slice' el dim) () ($'"[[@dim]]"' : string) :
00:10:23 v #12117 > > slice' el 10
00:10:23 v #12118 > >             // !\( : string) : slice' el i32 // !\($'"[[]]"')
00:10:23 v #12119 > >
00:10:23 v #12120 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:23 v #12121 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:23 v #12122 > > │ ### slice_length                                                             │
00:10:23 v #12123 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:23 v #12124 > >
00:10:23 v #12125 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:23 v #12126 > > inl slice_length forall t dim. (x : slice' t dim) : unativeint =
00:10:23 v #12127 > >     !\($'"!x.len()"')
00:10:24 v #12128 > >
00:10:24 v #12129 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:24 v #12130 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:24 v #12131 > > │ ### slice_range                                                              │
00:10:24 v #12132 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:24 v #12133 > >
00:10:24 v #12134 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:24 v #12135 > > inl slice_range forall t dim. (start : range t) (end : range t) (s : slice' t
00:10:24 v #12136 > > dim) : rust.ref (slice' t dim) =
00:10:24 v #12137 > >     inl len = s |> slice_length
00:10:24 v #12138 > >     inl start, (end : unativeint) =
00:10:24 v #12139 > >         match start, end with
00:10:24 v #12140 > >         | Start start, End fn => start, len |> convert |> fn |> convert
00:10:24 v #12141 > >         | End start_fn, End end_fn => len |> convert |> start_fn, len |> convert
00:10:24 v #12142 > > |> end_fn |> convert
00:10:24 v #12143 > >     match start, end with
00:10:24 v #12144 > >     | start, end when unbox end =. len => !\($'"&!s[[!start..]]"')
00:10:24 v #12145 > >     | start, end => !\\((start, end), $'"&!s[[$0..$1]]"')
00:10:24 v #12146 > >
00:10:24 v #12147 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:24 v #12148 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:24 v #12149 > > │ ### new_slice                                                                │
00:10:24 v #12150 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:24 v #12151 > >
00:10:24 v #12152 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:24 v #12153 > > inl new_slice forall el dim. (el : el) : slice' el dim =
00:10:24 v #12154 > >     !\\(el, $'"[[$0; @dim]]"')
00:10:24 v #12155 > >
00:10:24 v #12156 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:24 v #12157 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:24 v #12158 > > │ ### as_slice                                                                 │
00:10:24 v #12159 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:24 v #12160 > >
00:10:24 v #12161 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:24 v #12162 > > inl as_slice forall t. (x : array_base t) : rust.ref (slice t) =
00:10:24 v #12163 > >     inl x = x |> to_vec
00:10:24 v #12164 > >     !\($'"!x.as_slice()"')
00:10:25 v #12165 > >
00:10:25 v #12166 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:25 v #12167 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:25 v #12168 > > │ ### slice_to_vec                                                             │
00:10:25 v #12169 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:25 v #12170 > >
00:10:25 v #12171 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:25 v #12172 > > inl slice_to_vec forall t. (slice : rust.ref (slice t)) : vec t =
00:10:25 v #12173 > >     !\\(slice, $'"$0.iter().map(|x| *x).collect::<Vec<_>>()"')
00:10:25 v #12174 > >
00:10:25 v #12175 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:25 v #12176 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:25 v #12177 > > │ ### to_le_bytes                                                              │
00:10:25 v #12178 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:25 v #12179 > >
00:10:25 v #12180 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:25 v #12181 > > inl to_le_bytes forall t. (x : t) : slice' u8 8 =
00:10:25 v #12182 > >     !\($'$"!x.to_le_bytes()"')
00:10:26 v #12183 > >
00:10:26 v #12184 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:26 v #12185 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:26 v #12186 > > │ ### as_bytes                                                                 │
00:10:26 v #12187 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:26 v #12188 > >
00:10:26 v #12189 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:26 v #12190 > > inl as_bytes forall t. (x : t) : rust.ref (slice u8) =
00:10:26 v #12191 > >     !\($'$"!x.as_bytes()"')
00:10:26 v #12192 > >
00:10:26 v #12193 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:26 v #12194 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:26 v #12195 > > │ ### any                                                                      │
00:10:26 v #12196 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:26 v #12197 > >
00:10:26 v #12198 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:26 v #12199 > > inl any forall t. (fn : t -> bool) (source : array_base t) : bool =
00:10:26 v #12200 > >     !\($'"!source.any(|x| !fn(x))"')
00:10:26 v #12201 > >
00:10:26 v #12202 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:26 v #12203 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:26 v #12204 > > │ ### iter_collect vec                                                         │
00:10:26 v #12205 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:26 v #12206 > >
00:10:26 v #12207 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:26 v #12208 > > instance iter_collect vec = fun (iter : into_iterator u) =>
00:10:26 v #12209 > >     !\\(iter, $'"$0.collect::<Vec<_>>()"')
00:10:26 v #12210 > >
00:10:26 v #12211 > > instance iter_collect'' vec = fun (iter : into_iterator (t (u v))) =>
00:10:26 v #12212 > >     !\\(iter, $'"$0.collect::<Vec<_>>()"')
00:10:27 v #12213 > >
00:10:27 v #12214 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:27 v #12215 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:27 v #12216 > > │ ### new_vec                                                                  │
00:10:27 v #12217 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:27 v #12218 > >
00:10:27 v #12219 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:27 v #12220 > > inl new_vec forall t. (items : list t) : vec t =
00:10:27 v #12221 > >     inl items =
00:10:27 v #12222 > >         (items, ("", 0i32))
00:10:27 v #12223 > >         ||> listm.foldBack fun (x : t) (acc, i) =>
00:10:27 v #12224 > >             inl x = join x
00:10:27 v #12225 > >             $'"!x"' +. (if i = 0 then "" else ", ") +. acc, i + 1
00:10:27 v #12226 > >         |> fst
00:10:27 v #12227 > >     !\($'"vec\![[" + !items + "]]"')
00:10:27 v #12228 > >
00:10:27 v #12229 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:27 v #12230 > > //// test
00:10:27 v #12231 > > ///! rust
00:10:27 v #12232 > >
00:10:27 v #12233 > > [[ 0i32; 1 ]]
00:10:27 v #12234 > > |> new_vec
00:10:27 v #12235 > > |> sm'.format_debug'
00:10:27 v #12236 > > |> sm'.from_std_string
00:10:27 v #12237 > > |> _assert_eq "[[0, 1]]"
00:10:30 v #12238 > >
00:10:30 v #12239 > > ╭─[ 2.84s - return value ]─────────────────────────────────────────────────────╮
00:10:30 v #12240 > > │ __assert_eq / actual: "[0, 1]" / expected: "[0, 1]"                          │
00:10:30 v #12241 > > │                                                                              │
00:10:30 v #12242 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:30 v #12243 > >
00:10:30 v #12244 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:30 v #12245 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:30 v #12246 > > │ ## fsharp                                                                    │
00:10:30 v #12247 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:30 v #12248 > >
00:10:30 v #12249 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:30 v #12250 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:30 v #12251 > > │ ### average                                                                  │
00:10:30 v #12252 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:30 v #12253 > >
00:10:30 v #12254 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:30 v #12255 > > inl average forall el {number}. (a : a _ el) : el =
00:10:30 v #12256 > >     $'!a |> Array.average'
00:10:31 v #12257 > >
00:10:31 v #12258 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:31 v #12259 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:31 v #12260 > > │ ### distinct                                                                 │
00:10:31 v #12261 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:31 v #12262 > >
00:10:31 v #12263 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:31 v #12264 > > inl distinct forall dim el. (a : a dim el) : a dim el =
00:10:31 v #12265 > >     $'!a |> Array.distinct'
00:10:31 v #12266 > >
00:10:31 v #12267 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:31 v #12268 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:31 v #12269 > > │ ### skip                                                                     │
00:10:31 v #12270 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:31 v #12271 > >
00:10:31 v #12272 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:31 v #12273 > > inl skip forall dim el. (n : dim) (a : a dim el) : a dim el =
00:10:31 v #12274 > >     $'!a |> Array.skip !n '
00:10:31 v #12275 > >
00:10:31 v #12276 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:31 v #12277 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:31 v #12278 > > │ ### skip_while                                                               │
00:10:31 v #12279 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:31 v #12280 > >
00:10:31 v #12281 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:31 v #12282 > > inl skip_while forall dim el. (fn : el -> bool) (a : a dim el) : a dim el =
00:10:31 v #12283 > >     $'!a |> Array.skipWhile !fn '
00:10:32 v #12284 > >
00:10:32 v #12285 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:32 v #12286 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:32 v #12287 > > │ ### to_list_base'                                                            │
00:10:32 v #12288 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:32 v #12289 > >
00:10:32 v #12290 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:32 v #12291 > > inl to_list_base' forall t. (items : array_base t) : listm'.list' t =
00:10:32 v #12292 > >     backend_switch {
00:10:32 v #12293 > >         Fsharp = fun () => $'!items |> Array.toList' : listm'.list' t
00:10:32 v #12294 > >         Python = fun () => items |> to : listm'.list' t
00:10:32 v #12295 > >     }
00:10:32 v #12296 > >
00:10:32 v #12297 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:32 v #12298 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:32 v #12299 > > │ ### to_list'                                                                 │
00:10:32 v #12300 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:32 v #12301 > >
00:10:32 v #12302 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:32 v #12303 > > inl to_list' forall dim {int} t. (items : a dim t) : listm'.list' t =
00:10:32 v #12304 > >     items |> base |> to_list_base'
00:10:33 v #12305 > >
00:10:33 v #12306 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:33 v #12307 > > //// test
00:10:33 v #12308 > > ///! fsharp
00:10:33 v #12309 > > ///! cuda
00:10:33 v #12310 > > ///! rust
00:10:33 v #12311 > > ///! typescript
00:10:33 v #12312 > > ///! python
00:10:33 v #12313 > >
00:10:33 v #12314 > > a' ;[[ -3i32; 6 ]]
00:10:33 v #12315 > > |> to_list'
00:10:33 v #12316 > > |> listm'.unbox
00:10:33 v #12317 > > |> _assert_eq [[ -3; 6 ]]
00:10:36 v #12318 > >
00:10:36 v #12319 > > ╭─[ 3.51s - return value ]─────────────────────────────────────────────────────╮
00:10:36 v #12320 > > │ .py output (Cuda):                                                           │
00:10:36 v #12321 > > │ __assert_eq / actual: UH0_1(v0=np.int32(-3), v1=UH0_1(v0=np.int32(6),        │
00:10:36 v #12322 > > │ v1=UH0_0())) / expected: UH0_1(v0=-3, v1=UH0_1(v0=6, v1=UH0_0()))            │
00:10:36 v #12323 > > │                                                                              │
00:10:36 v #12324 > > │ .rs output:                                                                  │
00:10:36 v #12325 > > │ __assert_eq / actual: UH0_1(-3, UH0_1(6, UH0_0)) / expected: UH0_1(-3,       │
00:10:36 v #12326 > > │ UH0_1(6, UH0_0))                                                             │
00:10:36 v #12327 > > │                                                                              │
00:10:36 v #12328 > > │ .ts output:                                                                  │
00:10:36 v #12329 > > │ __assert_eq / actual: UH0_1 (-3, UH0_1 (6, UH0_0)) / expected: UH0_1 (-3,    │
00:10:36 v #12330 > > │ UH0_1 (6, UH0_0))                                                            │
00:10:36 v #12331 > > │                                                                              │
00:10:36 v #12332 > > │ .py output:                                                                  │
00:10:36 v #12333 > > │ __assert_eq / actual: UH0_1 (-3, UH0_1 (6, UH0_0)) / expected: UH0_1 (-3,    │
00:10:36 v #12334 > > │ UH0_1 (6, UH0_0))                                                            │
00:10:36 v #12335 > > │                                                                              │
00:10:36 v #12336 > > │                                                                              │
00:10:36 v #12337 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:36 v #12338 > >
00:10:36 v #12339 > > ╭─[ 3.51s - stdout ]───────────────────────────────────────────────────────────╮
00:10:36 v #12340 > > │ .fsx output:                                                                 │
00:10:36 v #12341 > > │ __assert_eq / actual: UH0_1 (-3, UH0_1 (6, UH0_0)) / expected: UH0_1 (-3,    │
00:10:36 v #12342 > > │ UH0_1 (6, UH0_0))                                                            │
00:10:36 v #12343 > > │                                                                              │
00:10:36 v #12344 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:36 v #12345 > >
00:10:36 v #12346 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:36 v #12347 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:36 v #12348 > > │ ### parallel_map                                                             │
00:10:36 v #12349 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:36 v #12350 > >
00:10:36 v #12351 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:36 v #12352 > > inl parallel_map forall dim el el'. (fn : el -> el') (a : a dim el) : a dim el'
00:10:36 v #12353 > > =
00:10:36 v #12354 > >     $'!a |> Array.Parallel.map !fn '
00:10:36 v #12355 > >
00:10:36 v #12356 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:36 v #12357 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:36 v #12358 > > │ ### map'                                                                     │
00:10:36 v #12359 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:36 v #12360 > >
00:10:36 v #12361 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:36 v #12362 > > inl map' forall dim el el'. (fn : el -> el') (a : a dim el) : a dim el' =
00:10:36 v #12363 > >     $'!a |> Array.map !fn '
00:10:37 v #12364 > >
00:10:37 v #12365 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:37 v #12366 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:37 v #12367 > > │ ### sort_by                                                                  │
00:10:37 v #12368 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:37 v #12369 > >
00:10:37 v #12370 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:37 v #12371 > > inl sort_by forall dim el. (fn : el -> _) (a : a dim el) : a dim el =
00:10:37 v #12372 > >     $'!a |> Array.sortBy !fn '
00:10:37 v #12373 > >
00:10:37 v #12374 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:37 v #12375 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:37 v #12376 > > │ ### sort                                                                     │
00:10:37 v #12377 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:37 v #12378 > >
00:10:37 v #12379 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:37 v #12380 > > inl sort forall dim el. (a : a dim el) : a dim el =
00:10:37 v #12381 > >     $'!a |> Array.sort'
00:10:38 v #12382 > >
00:10:38 v #12383 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:38 v #12384 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:38 v #12385 > > │ ### sort_descending                                                          │
00:10:38 v #12386 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:38 v #12387 > >
00:10:38 v #12388 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:38 v #12389 > > inl sort_descending forall dim el. (a : a dim el) : a dim el =
00:10:38 v #12390 > >     $'!a |> Array.sortDescending'
00:10:38 v #12391 > >
00:10:38 v #12392 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:38 v #12393 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:38 v #12394 > > │ ### transpose                                                                │
00:10:38 v #12395 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:38 v #12396 > >
00:10:38 v #12397 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:38 v #12398 > > inl transpose forall el. (a : array_base (array_base el)) : array_base
00:10:38 v #12399 > > (array_base el) =
00:10:38 v #12400 > >     $'!a |> Array.transpose'
00:10:39 v #12401 > >
00:10:39 v #12402 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:39 v #12403 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:39 v #12404 > > │ ### try_item                                                                 │
00:10:39 v #12405 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:39 v #12406 > >
00:10:39 v #12407 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:39 v #12408 > > inl try_item forall dim el. (i : i32) (a : a dim el) : option el =
00:10:39 v #12409 > >     $'!a |> Array.tryItem !i ' |> optionm'.unbox
00:10:39 v #12410 > 00:01:10 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 64183 }
00:10:39 v #12411 > 00:01:10 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/polyglot/lib/spiral/am'.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/polyglot/lib/spiral/am'.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:10:40 v #12412 > 00:01:11 v #5 ! [NbConvertApp] Converting notebook c:/home/git/polyglot/lib/spiral/am'.dib.ipynb to html
00:10:40 v #12413 > 00:01:11 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:10:40 v #12414 > 00:01:11 v #7 !   validate(nb)
00:10:41 v #12415 > 00:01:12 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:10:41 v #12416 > 00:01:12 v #9 !   return _pygments_highlight(
00:10:42 v #12417 > 00:01:13 v #10 ! [NbConvertApp] Writing 454221 bytes to c:\home\git\polyglot\lib\spiral\am'.dib.html
00:10:42 v #12418 > 00:01:13 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 848 }
00:10:42 v #12419 > 00:01:13 d #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 848 }
00:10:42 v #12420 > 00:01:13 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/am''.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/am''.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:10:43 v #12421 > 00:01:14 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:10:43 v #12422 > 00:01:14 d #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:10:43 v #12423 > 00:01:14 d #16 spiral_builder.run / dib / { exit_code = 0; result_length = 65090 }
00:10:43 d #12424 runtime.execute_with_options_async / { exit_code = 0; output_length = 70086 }
00:10:43 d #14 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder.exe dib --path am'.dib --retries 3
00:10:43 d #12425 runtime.execute_with_options_async / { file_name = ../../workspace/target/release/spiral_builder.exe; arguments = US5_0 "dib --path crypto.dib --retries 3"; options = { command = ../../workspace/target/release/spiral_builder.exe dib --path crypto.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:10:43 v #12426 > 00:00:00 d #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "crypto.dib", "--retries", "3"])) }
00:10:43 v #12427 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/polyglot/lib/spiral/crypto.dib", "--output-path", "c:/home/git/polyglot/lib/spiral/crypto.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/polyglot/lib/spiral/crypto.dib" --output-path "c:/home/git/polyglot/lib/spiral/crypto.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:10:44 v #12428 > >
00:10:44 v #12429 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:44 v #12430 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:44 v #12431 > > │ # crypto                                                                     │
00:10:44 v #12432 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:48 v #12433 > >
00:10:48 v #12434 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:48 v #12435 > > open rust
00:10:48 v #12436 > > open rust_operators
00:10:49 v #12437 > >
00:10:49 v #12438 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:49 v #12439 > > //// test
00:10:49 v #12440 > >
00:10:49 v #12441 > > open testing
00:10:49 v #12442 > > open file_system_operators
00:10:49 v #12443 > >
00:10:49 v #12444 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:49 v #12445 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:49 v #12446 > > │ ## fsharp                                                                    │
00:10:49 v #12447 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:49 v #12448 > >
00:10:49 v #12449 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:49 v #12450 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:49 v #12451 > > │ ### sha256                                                                   │
00:10:49 v #12452 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:49 v #12453 > >
00:10:49 v #12454 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:49 v #12455 > > nominal sha256 = $'System.Security.Cryptography.SHA256'
00:10:49 v #12456 > >
00:10:49 v #12457 > > inl sha256 () : sha256 =
00:10:49 v #12458 > >     $'`sha256.Create' ()
00:10:50 v #12459 > >
00:10:50 v #12460 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:50 v #12461 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:50 v #12462 > > │ ### sha256_compute_hash                                                      │
00:10:50 v #12463 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:50 v #12464 > >
00:10:50 v #12465 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:50 v #12466 > > inl sha256_compute_hash (x : sha256) (data : a i32 u8) : a i32 u8 =
00:10:50 v #12467 > >     data |> $'!x.ComputeHash'
00:10:50 v #12468 > >
00:10:50 v #12469 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:50 v #12470 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:50 v #12471 > > │ ## rust                                                                      │
00:10:50 v #12472 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:50 v #12473 > >
00:10:50 v #12474 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:50 v #12475 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:50 v #12476 > > │ ### get_file_hash'                                                           │
00:10:50 v #12477 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:50 v #12478 > >
00:10:50 v #12479 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:50 v #12480 > > inl get_file_hash' (path : string) : result string string =
00:10:50 v #12481 > >     inl path = path |> file_system.normalize_path
00:10:50 v #12482 > >     inl exit_code, result =
00:10:50 v #12483 > >         runtime.execution_options fun x => { x with
00:10:50 v #12484 > >             command = $'$"pwsh -c \\\"(Get-FileHash \'{!path}\' -Algorithm
00:10:50 v #12485 > > SHA256).Hash\\\""'
00:10:50 v #12486 > >         }
00:10:50 v #12487 > >         |> runtime.execute_with_options
00:10:50 v #12488 > >     if exit_code = 0
00:10:50 v #12489 > >     then result |> sm'.to_lower |> Ok
00:10:50 v #12490 > >     else result |> Error
00:10:51 v #12491 > >
00:10:51 v #12492 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:51 v #12493 > > //// test
00:10:51 v #12494 > >
00:10:51 v #12495 > > inl file_name = "test.txt"
00:10:51 v #12496 > > inl text = "\n"
00:10:51 v #12497 > >
00:10:51 v #12498 > > inl temp_dir, disposable =
00:10:51 v #12499 > >     (file_name, text)
00:10:51 v #12500 > >     |> sm'.format_debug
00:10:51 v #12501 > >     |> crypto.hash_text
00:10:51 v #12502 > >     |> file_system.create_temp_dir'
00:10:51 v #12503 > > disposable |> use |> ignore
00:10:51 v #12504 > > inl path = temp_dir </> file_name
00:10:51 v #12505 > > text |> file_system.write_all_text_async path |> async.run_synchronously
00:10:51 v #12506 > > path
00:10:51 v #12507 > > |> get_file_hash'
00:10:51 v #12508 > > |> resultm.get
00:10:51 v #12509 > > |> _assert_eq "01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b"
00:10:59 v #12510 > >
00:10:59 v #12511 > > ╭─[ 8.20s - stdout ]───────────────────────────────────────────────────────────╮
00:10:59 v #12512 > > │ 00:00:00 d #1 runtime.execute_with_options_async / { file_name = pwsh;  │
00:10:59 v #12513 > > │ arguments = US2_0                                                            │
00:10:59 v #12514 > > │   "-c "(Get-FileHash                                                         │
00:10:59 v #12515 > > │ 'c:/Users/i574n/AppData/Local/Temp/!create_temp_path_/dotnet-repl/9ca8b18d-e │
00:10:59 v #12516 > > │ e77-4684-ad12-21e1354945fc/test.txt' -Algorithm SHA256).Hash""; options = {  │
00:10:59 v #12517 > > │ command = pwsh -c "(Get-FileHash                                             │
00:10:59 v #12518 > > │ 'c:/Users/i574n/AppData/Local/Temp/!create_temp_path_/dotnet-repl/9ca8b18d-e │
00:10:59 v #12519 > > │ e77-4684-ad12-21e1354945fc/test.txt' -Algorithm SHA256).Hash";               │
00:10:59 v #12520 > > │ cancellation_token = None; environment_variables = [||]; on_line = None;     │
00:10:59 v #12521 > > │ stdin = None; trace = true; working_directory = None } }                     │
00:10:59 v #12522 > > │ 00:00:00 v #2 >                                                         │
00:10:59 v #12523 > > │ 01BA4719C80B6FE911B091A7C05124B64EEECE964E09C058EF8F9805DACA546B             │
00:10:59 v #12524 > > │ 00:00:00 d #3 runtime.execute_with_options_async / { exit_code = 0;     │
00:10:59 v #12525 > > │ output_length = 64 }                                                         │
00:10:59 v #12526 > > │ __assert_eq / actual:                                                        │
00:10:59 v #12527 > > │ "01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b" /         │
00:10:59 v #12528 > > │ expected: "01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b" │
00:10:59 v #12529 > > │                                                                              │
00:10:59 v #12530 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:59 v #12531 > >
00:10:59 v #12532 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:59 v #12533 > > //// test
00:10:59 v #12534 > > ///! rust -d chrono encoding_rs encoding_rs_io regex sha2
00:10:59 v #12535 > >
00:10:59 v #12536 > > inl file_name = "test.txt"
00:10:59 v #12537 > > inl text = "\n"
00:10:59 v #12538 > >
00:10:59 v #12539 > > inl temp_dir, disposable =
00:10:59 v #12540 > >     (file_name, text)
00:10:59 v #12541 > >     |> sm'.format_debug
00:10:59 v #12542 > >     |> crypto.hash_text
00:10:59 v #12543 > >     |> file_system.create_temp_dir'
00:10:59 v #12544 > > inl path = temp_dir </> file_name
00:10:59 v #12545 > > text |> file_system.write_all_text path
00:10:59 v #12546 > > path
00:10:59 v #12547 > > |> get_file_hash'
00:10:59 v #12548 > > |> resultm.get
00:10:59 v #12549 > > |> _assert_eq "01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b"
00:10:59 v #12550 > > disposable |> use |> ignore
00:11:23 v #12551 > >
00:11:23 v #12552 > > ╭─[ 24.67s - return value ]────────────────────────────────────────────────────╮
00:11:23 v #12553 > > │ 00:00:00 v #1 file_system.create_dir / { dir =                         │
00:11:23 v #12554 > > │ C:\Users\i574n\AppData\Local\Temp\!create_temp_path_\spiral_builder_a1f62655 │
00:11:23 v #12555 > > │ 6b22921a194d3aca2625a0d30c6996c76c302730e9a85868f2129c4e\ba0aa16a-6c5a-be3f- │
00:11:23 v #12556 > > │ b526-70110c680e36 }                                                          │
00:11:23 v #12557 > > │ 00:00:00 d #2 runtime.execute_with_options / { file_name = pwsh;       │
00:11:23 v #12558 > > │ arguments = ["-c", "(Get-FileHash                                            │
00:11:23 v #12559 > > │ 'c:/Users/i574n/AppData/Local/Temp/!create_temp_path_/spiral_builder_a1f6265 │
00:11:23 v #12560 > > │ 56b22921a194d3aca2625a0d30c6996c76c302730e9a85868f2129c4e/ba0aa16a-6c5a-be3f │
00:11:23 v #12561 > > │ -b526-70110c680e36/test.txt' -Algorithm SHA256).Hash"]; options = { command  │
00:11:23 v #12562 > > │ = pwsh -c "(Get-FileHash                                                     │
00:11:23 v #12563 > > │ 'c:/Users/i574n/AppData/Local/Temp/!create_temp_path_/spiral_builder_a1f6265 │
00:11:23 v #12564 > > │ 56b22921a194d3aca2625a0d30c6996c76c302730e9a85868f2129c4e/ba0aa16a-6c5a-be3f │
00:11:23 v #12565 > > │ -b526-70110c680e36/test.txt' -Algorithm SHA256).Hash"; cancellation_token =  │
00:11:23 v #12566 > > │ None; environment_variables = Array(MutCell([])); on_line = None; stdin =    │
00:11:23 v #12567 > > │ None; trace = true; working_directory = None } }                             │
00:11:23 v #12568 > > │ 00:00:00 v #3 >                                                        │
00:11:23 v #12569 > > │ 01BA4719C80B6FE911B091A7C05124B64EEECE964E09C058EF8F9805DACA546B             │
00:11:23 v #12570 > > │ 00:00:00 v #4 runtime.execute_with_options / result / { exit_code = 0; │
00:11:23 v #12571 > > │ std_trace_length = 64 }                                                      │
00:11:23 v #12572 > > │ __assert_eq / actual:                                                        │
00:11:23 v #12573 > > │ "01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b" /         │
00:11:23 v #12574 > > │ expected: "01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b" │
00:11:23 v #12575 > > │                                                                              │
00:11:23 v #12576 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:11:23 v #12577 > >
00:11:23 v #12578 > > ── markdown ────────────────────────────────────────────────────────────────────
00:11:23 v #12579 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:11:23 v #12580 > > │ ### sha256'                                                                  │
00:11:23 v #12581 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:11:23 v #12582 > >
00:11:23 v #12583 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:11:23 v #12584 > > nominal sha256' =
00:11:23 v #12585 > >     `(
00:11:23 v #12586 > >         backend_switch `(()) `({}) {
00:11:23 v #12587 > >             Fsharp =
00:11:23 v #12588 > >                 (fun () =>
00:11:23 v #12589 > >                     global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:11:23 v #12590 > > Fable.Core.Emit(\"sha2::Sha256\")>]]\n#endif\ntype sha2_Sha256 = class end"
00:11:23 v #12591 > >                 ) : () -> ()
00:11:23 v #12592 > >         }
00:11:23 v #12593 > >         $'' : $'sha2_Sha256'
00:11:23 v #12594 > >     )
00:11:24 v #12595 > >
00:11:24 v #12596 > > ── markdown ────────────────────────────────────────────────────────────────────
00:11:24 v #12597 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:11:24 v #12598 > > │ ### new_sha256                                                               │
00:11:24 v #12599 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:11:24 v #12600 > >
00:11:24 v #12601 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:11:24 v #12602 > > inl new_sha256 () : sha256' =
00:11:24 v #12603 > >     !\($'"let result : sha2::Sha256 = sha2::Digest::new()"')
00:11:24 v #12604 > >     !\($'"result"')
00:11:24 v #12605 > >
00:11:24 v #12606 > > ── markdown ────────────────────────────────────────────────────────────────────
00:11:24 v #12607 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:11:24 v #12608 > > │ ### hasher_update                                                            │
00:11:24 v #12609 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:11:24 v #12610 > >
00:11:24 v #12611 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:11:24 v #12612 > > inl hasher_update forall el dim. (slice : rust.ref (am'.slice' el dim)) (hasher
00:11:24 v #12613 > > : sha256') : () =
00:11:24 v #12614 > >     !\($'"sha2::Digest::update(&mut !hasher, !slice)"')
00:11:25 v #12615 > >
00:11:25 v #12616 > > ── markdown ────────────────────────────────────────────────────────────────────
00:11:25 v #12617 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:11:25 v #12618 > > │ ### hasher_finalize                                                          │
00:11:25 v #12619 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:11:25 v #12620 > >
00:11:25 v #12621 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:11:25 v #12622 > > inl hasher_finalize (hasher : sha256') : rust.ref (am'.slice u8) =
00:11:25 v #12623 > >     !\($'"&sha2::Digest::finalize(!hasher)"')
00:11:25 v #12624 > >
00:11:25 v #12625 > > ── markdown ────────────────────────────────────────────────────────────────────
00:11:25 v #12626 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:11:25 v #12627 > > │ ### hash_read                                                                │
00:11:25 v #12628 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:11:25 v #12629 > >
00:11:25 v #12630 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:11:25 v #12631 > > inl hash_read data : resultm.result' string stream.io_error =
00:11:25 v #12632 > >     inl reader = data |> stream.new_buf_reader
00:11:25 v #12633 > >     (!\($'"true; let mut !reader = !reader"') : bool) |> ignore
00:11:25 v #12634 > >     inl hasher = new_sha256 ()
00:11:25 v #12635 > >     (!\($'"true; let mut !hasher = !hasher"') : bool) |> ignore
00:11:25 v #12636 > >
00:11:25 v #12637 > >     real
00:11:25 v #12638 > >         inl size = 1024
00:11:25 v #12639 > >         inl zero = convert `i32 `unativeint 0
00:11:25 v #12640 > >         inl buffer = am'.new_slice `u8 `@size 0u8
00:11:25 v #12641 > >
00:11:25 v #12642 > >         rust.loop 2 fun () =>
00:11:25 v #12643 > >             inl count = stream.buf_reader_read `u8 `@size buffer reader
00:11:25 v #12644 > >             inl count = resultm.unwrap' `unativeint `(stream.io_error) count
00:11:25 v #12645 > >
00:11:25 v #12646 > >             if (=.) `unativeint count zero then rust.break ()
00:11:25 v #12647 > >
00:11:25 v #12648 > >             hasher_update `u8 `@size
00:11:25 v #12649 > >                 (
00:11:25 v #12650 > >                     am'.slice_range `u8 `@size
00:11:25 v #12651 > >                         (am'.Start `unativeint zero)
00:11:25 v #12652 > >                         (am'.End `unativeint ((fun _ => count) : unativeint ->
00:11:25 v #12653 > > unativeint))
00:11:25 v #12654 > >                         buffer
00:11:25 v #12655 > >                 )
00:11:25 v #12656 > >                 hasher
00:11:25 v #12657 > >
00:11:25 v #12658 > >     hasher
00:11:25 v #12659 > >     |> hasher_finalize
00:11:25 v #12660 > >     |> am'.slice_to_vec
00:11:25 v #12661 > >     |> am'.vec_map (sm'.format_hex' >> sm'.from_std_string)
00:11:25 v #12662 > >     |> am'.from_vec
00:11:25 v #12663 > >     |> fun x => x : _ i32 _
00:11:25 v #12664 > >     |> seq.of_array'
00:11:25 v #12665 > >     |> sm'.concat (join "")
00:11:25 v #12666 > >     |> Ok
00:11:25 v #12667 > >     |> resultm.box
00:11:25 v #12668 > >
00:11:25 v #12669 > > ── markdown ────────────────────────────────────────────────────────────────────
00:11:25 v #12670 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:11:25 v #12671 > > │ ### get_file_hash                                                            │
00:11:25 v #12672 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:11:25 v #12673 > >
00:11:25 v #12674 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:11:25 v #12675 > > inl get_file_hash (path : string) =
00:11:25 v #12676 > >     inl path = path |> file_system.normalize_path
00:11:25 v #12677 > >     inl file = path |> file_system.file_open |> resultm.unwrap'
00:11:25 v #12678 > >     inl reader = file |> stream.new_buf_reader
00:11:25 v #12679 > >     reader
00:11:25 v #12680 > >     |> hash_read
00:11:26 v #12681 > >
00:11:26 v #12682 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:11:26 v #12683 > > //// test
00:11:26 v #12684 > > ///! rust -d chrono regex sha2
00:11:26 v #12685 > >
00:11:26 v #12686 > > inl file_name = join "test.txt"
00:11:26 v #12687 > > inl text = "\n"
00:11:26 v #12688 > >
00:11:26 v #12689 > > inl temp_dir, disposable =
00:11:26 v #12690 > >     (file_name, text)
00:11:26 v #12691 > >     |> sm'.format_debug
00:11:26 v #12692 > >     |> crypto.hash_text
00:11:26 v #12693 > >     |> file_system.create_temp_dir'
00:11:26 v #12694 > >
00:11:26 v #12695 > > inl path = temp_dir </> file_name
00:11:26 v #12696 > > text |> file_system.write_all_text path
00:11:26 v #12697 > >
00:11:26 v #12698 > > path
00:11:26 v #12699 > > |> get_file_hash
00:11:26 v #12700 > > |> resultm.unwrap'
00:11:26 v #12701 > > |> _assert_eq "01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b"
00:11:26 v #12702 > > disposable |> use |> ignore
00:11:43 v #12703 > >
00:11:43 v #12704 > > ╭─[ 17.29s - return value ]────────────────────────────────────────────────────╮
00:11:43 v #12705 > > │ 00:00:00 v #1 file_system.create_dir / { dir =                         │
00:11:43 v #12706 > > │ C:\Users\i574n\AppData\Local\Temp\!create_temp_path_\spiral_builder_4a6b1b48 │
00:11:43 v #12707 > > │ ba7172e595e8950a98685fb85adf3376ac57ba6191138992162c6b25\ba0aa16a-6c5a-be3f- │
00:11:43 v #12708 > > │ b526-70110c680e36 }                                                          │
00:11:43 v #12709 > > │ __assert_eq / actual:                                                        │
00:11:43 v #12710 > > │ "01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b" /         │
00:11:43 v #12711 > > │ expected: "01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b" │
00:11:43 v #12712 > > │                                                                              │
00:11:43 v #12713 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:11:43 v #12714 > >
00:11:43 v #12715 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:11:43 v #12716 > > //// test
00:11:43 v #12717 > > ///! rust -d chrono regex sha2
00:11:43 v #12718 > >
00:11:43 v #12719 > > inl file_name = join "test.txt"
00:11:43 v #12720 > > inl text = ""
00:11:43 v #12721 > >
00:11:43 v #12722 > > inl temp_dir, disposable =
00:11:43 v #12723 > >     (file_name, text)
00:11:43 v #12724 > >     |> sm'.format_debug
00:11:43 v #12725 > >     |> crypto.hash_text
00:11:43 v #12726 > >     |> file_system.create_temp_dir'
00:11:43 v #12727 > >
00:11:43 v #12728 > > inl path = temp_dir </> file_name
00:11:43 v #12729 > > text |> file_system.write_all_text path
00:11:43 v #12730 > > path
00:11:43 v #12731 > > |> get_file_hash
00:11:43 v #12732 > > |> resultm.unwrap'
00:11:43 v #12733 > > |> _assert_eq "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
00:11:43 v #12734 > > disposable |> use |> ignore
00:12:00 v #12735 > >
00:12:00 v #12736 > > ╭─[ 16.84s - return value ]────────────────────────────────────────────────────╮
00:12:00 v #12737 > > │ 00:00:00 v #1 file_system.create_dir / { dir =                         │
00:12:00 v #12738 > > │ C:\Users\i574n\AppData\Local\Temp\!create_temp_path_\spiral_builder_1845f67f │
00:12:00 v #12739 > > │ f5088fb8597c9f64892f3e9d02c6af8b27f29d8e4a0a826ee47b3ade\c0e26dac-4cb1-4b09- │
00:12:00 v #12740 > > │ be07-ff616700f056 }                                                          │
00:12:00 v #12741 > > │ __assert_eq / actual:                                                        │
00:12:00 v #12742 > > │ "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" /         │
00:12:00 v #12743 > > │ expected: "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" │
00:12:00 v #12744 > > │                                                                              │
00:12:00 v #12745 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:12:00 v #12746 > >
00:12:00 v #12747 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:00 v #12748 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:12:00 v #12749 > > │ ## typescript                                                                │
00:12:00 v #12750 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:12:00 v #12751 > >
00:12:00 v #12752 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:00 v #12753 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:12:00 v #12754 > > │ ### create_hash                                                              │
00:12:00 v #12755 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:12:00 v #12756 > >
00:12:00 v #12757 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:00 v #12758 > > inl create_hash (x : string) : any =
00:12:00 v #12759 > >     open typescript_operators
00:12:00 v #12760 > >     global "type ICryptoCreateHash = abstract createHash: x: string -> obj"
00:12:00 v #12761 > >     inl crypto : $'ICryptoCreateHash' = typescript.import_all "crypto"
00:12:00 v #12762 > >     !\\(x, $'"!crypto.createHash($0)"')
00:12:00 v #12763 > >
00:12:00 v #12764 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:00 v #12765 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:12:00 v #12766 > > │ ### hash_update                                                              │
00:12:00 v #12767 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:12:00 v #12768 > >
00:12:00 v #12769 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:00 v #12770 > > inl hash_update (s : string) (x : any) : any =
00:12:00 v #12771 > >     open typescript_operators
00:12:00 v #12772 > >     !\\((x, s), $'"$0.update($1, \'utf8\')"')
00:12:01 v #12773 > >
00:12:01 v #12774 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:01 v #12775 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:12:01 v #12776 > > │ ### hash_digest                                                              │
00:12:01 v #12777 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:12:01 v #12778 > >
00:12:01 v #12779 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:01 v #12780 > > inl hash_digest (s : string) (x : any) : string =
00:12:01 v #12781 > >     open typescript_operators
00:12:01 v #12782 > >     !\\((x, s), $'"$0.digest($1)"')
00:12:01 v #12783 > >
00:12:01 v #12784 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:01 v #12785 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:12:01 v #12786 > > │ ## python                                                                    │
00:12:01 v #12787 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:12:01 v #12788 > >
00:12:01 v #12789 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:01 v #12790 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:12:01 v #12791 > > │ ### py_sha256                                                                │
00:12:01 v #12792 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:12:01 v #12793 > >
00:12:01 v #12794 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:01 v #12795 > > nominal py_sha256 = any
00:12:02 v #12796 > >
00:12:02 v #12797 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:02 v #12798 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:12:02 v #12799 > > │ ### hashlib_sha256                                                           │
00:12:02 v #12800 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:12:02 v #12801 > >
00:12:02 v #12802 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:02 v #12803 > > inl hashlib_sha256 () : py_sha256 =
00:12:02 v #12804 > >     backend_switch {
00:12:02 v #12805 > >         Fsharp = fun () =>
00:12:02 v #12806 > >             open python_operators
00:12:02 v #12807 > >             global "type IHashlibSha256 = abstract sha256: x: unit -> obj"
00:12:02 v #12808 > >             inl hashlib : $'IHashlibSha256' = python.import_all "hashlib"
00:12:02 v #12809 > >             !\($'"!hashlib.sha256()"') : py_sha256
00:12:02 v #12810 > >         Python = fun () =>
00:12:02 v #12811 > >             global "import hashlib"
00:12:02 v #12812 > >             $'hashlib.sha256()' : py_sha256
00:12:02 v #12813 > >     }
00:12:02 v #12814 > >
00:12:02 v #12815 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:02 v #12816 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:12:02 v #12817 > > │ ### sha256_update                                                            │
00:12:02 v #12818 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:12:02 v #12819 > >
00:12:02 v #12820 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:02 v #12821 > > inl sha256_update (x : string) (sha256 : py_sha256) : py_sha256 =
00:12:02 v #12822 > >     backend_switch {
00:12:02 v #12823 > >         Fsharp = fun () =>
00:12:02 v #12824 > >             open python_operators
00:12:02 v #12825 > >             !\\(x, $'"!sha256.update($0)"') : ()
00:12:02 v #12826 > >         Python = fun () =>
00:12:02 v #12827 > >             $'!sha256.update(!x)' : ()
00:12:02 v #12828 > >     }
00:12:02 v #12829 > >     sha256
00:12:02 v #12830 > >
00:12:02 v #12831 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:02 v #12832 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:12:02 v #12833 > > │ ### sha256_hexdigest                                                         │
00:12:02 v #12834 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:12:02 v #12835 > >
00:12:02 v #12836 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:02 v #12837 > > inl sha256_hexdigest (sha256 : py_sha256) : string =
00:12:02 v #12838 > >     backend_switch {
00:12:02 v #12839 > >         Fsharp = fun () =>
00:12:02 v #12840 > >             open python_operators
00:12:02 v #12841 > >             !\($'"!sha256.hexdigest()"') : string
00:12:02 v #12842 > >         Python = fun () =>
00:12:02 v #12843 > >             $'!sha256.hexdigest()' : string
00:12:02 v #12844 > >     }
00:12:03 v #12845 > >
00:12:03 v #12846 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:03 v #12847 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:12:03 v #12848 > > │ ## crypto                                                                    │
00:12:03 v #12849 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:12:03 v #12850 > >
00:12:03 v #12851 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:03 v #12852 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:12:03 v #12853 > > │ ### hash_text                                                                │
00:12:03 v #12854 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:12:03 v #12855 > >
00:12:03 v #12856 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:03 v #12857 > > let hash_text (~input : string) =
00:12:03 v #12858 > >     run_target function
00:12:03 v #12859 > >         | Fsharp (Native) => fun () =>
00:12:03 v #12860 > >             inl sha256 = sha256 () |> use
00:12:03 v #12861 > >             input
00:12:03 v #12862 > >             |> sm'.utf8_get_bytes
00:12:03 v #12863 > >             |> sha256_compute_hash sha256
00:12:03 v #12864 > >             |> am.map (sm'.byte_to_string "x2")
00:12:03 v #12865 > >             |> seq.of_array'
00:12:03 v #12866 > >             |> sm'.concat (join "")
00:12:03 v #12867 > >         | TypeScript (Native) => fun () =>
00:12:03 v #12868 > >             create_hash "sha256"
00:12:03 v #12869 > >             |> hash_update input
00:12:03 v #12870 > >             |> hash_digest "hex"
00:12:03 v #12871 > >         | Rust (Native) => fun () =>
00:12:03 v #12872 > >             input
00:12:03 v #12873 > >             |> sm'.utf8_get_bytes
00:12:03 v #12874 > >             |> fun (a x) => x
00:12:03 v #12875 > >             |> am'.to_vec
00:12:03 v #12876 > >             |> stream.new_cursor
00:12:03 v #12877 > >             |> hash_read
00:12:03 v #12878 > >             |> resultm.unwrap'
00:12:03 v #12879 > >         | Python (Native) | Cuda (Native) => fun () =>
00:12:03 v #12880 > >             hashlib_sha256 ()
00:12:03 v #12881 > >             |> sha256_update (input |> sm'.encode_utf8)
00:12:03 v #12882 > >             |> sha256_hexdigest
00:12:03 v #12883 > >         | _ => fun () => null ()
00:12:03 v #12884 > >
00:12:03 v #12885 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:03 v #12886 > > //// test
00:12:03 v #12887 > > ///! fsharp
00:12:03 v #12888 > > ///! cuda
00:12:03 v #12889 > > ///! rust -d sha2
00:12:03 v #12890 > > ///! typescript
00:12:03 v #12891 > > ///! python
00:12:03 v #12892 > >
00:12:03 v #12893 > > "\n"
00:12:03 v #12894 > > |> hash_text
00:12:03 v #12895 > > |> _assert_eq "01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b"
00:12:03 v #12896 > >
00:12:03 v #12897 > > ""
00:12:03 v #12898 > > |> hash_text
00:12:03 v #12899 > > |> _assert_eq "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
00:12:07 v #12900 > >
00:12:07 v #12901 > > ╭─[ 4.00s - return value ]─────────────────────────────────────────────────────╮
00:12:07 v #12902 > > │                                                                              │
00:12:07 v #12903 > > │ .py output (Cuda):                                                           │
00:12:07 v #12904 > > │ __assert_eq / actual:                                                        │
00:12:07 v #12905 > > │ 01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b / expected: │
00:12:07 v #12906 > > │ 01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b             │
00:12:07 v #12907 > > │ __assert_eq / actual:                                                        │
00:12:07 v #12908 > > │ e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 / expected: │
00:12:07 v #12909 > > │ e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855             │
00:12:07 v #12910 > > │                                                                              │
00:12:07 v #12911 > > │                                                                              │
00:12:07 v #12912 > > │ .rs output (rust -d sha2):                                                   │
00:12:07 v #12913 > > │ __assert_eq / actual:                                                        │
00:12:07 v #12914 > > │ "01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b" /         │
00:12:07 v #12915 > > │ expected: "01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b" │
00:12:07 v #12916 > > │ __assert_eq / actual:                                                        │
00:12:07 v #12917 > > │ "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" /         │
00:12:07 v #12918 > > │ expected: "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" │
00:12:07 v #12919 > > │                                                                              │
00:12:07 v #12920 > > │                                                                              │
00:12:07 v #12921 > > │ .ts output:                                                                  │
00:12:07 v #12922 > > │ __assert_eq / actual:                                                        │
00:12:07 v #12923 > > │ 01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b / expected: │
00:12:07 v #12924 > > │ 01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b             │
00:12:07 v #12925 > > │ __assert_eq / actual:                                                        │
00:12:07 v #12926 > > │ e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 / expected: │
00:12:07 v #12927 > > │ e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855             │
00:12:07 v #12928 > > │                                                                              │
00:12:07 v #12929 > > │                                                                              │
00:12:07 v #12930 > > │ .py output:                                                                  │
00:12:07 v #12931 > > │ __assert_eq / actual:                                                        │
00:12:07 v #12932 > > │ 01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b / expected: │
00:12:07 v #12933 > > │ 01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b             │
00:12:07 v #12934 > > │ __assert_eq / actual:                                                        │
00:12:07 v #12935 > > │ e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 / expected: │
00:12:07 v #12936 > > │ e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855             │
00:12:07 v #12937 > > │                                                                              │
00:12:07 v #12938 > > │                                                                              │
00:12:07 v #12939 > > │                                                                              │
00:12:07 v #12940 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:12:07 v #12941 > >
00:12:07 v #12942 > > ╭─[ 4.01s - stdout ]───────────────────────────────────────────────────────────╮
00:12:07 v #12943 > > │ .fsx output:                                                                 │
00:12:07 v #12944 > > │ __assert_eq / actual:                                                        │
00:12:07 v #12945 > > │ "01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b" /         │
00:12:07 v #12946 > > │ expected: "01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b" │
00:12:07 v #12947 > > │ __assert_eq / actual:                                                        │
00:12:07 v #12948 > > │ "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" /         │
00:12:07 v #12949 > > │ expected: "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" │
00:12:07 v #12950 > > │                                                                              │
00:12:07 v #12951 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:12:07 v #12952 > >
00:12:07 v #12953 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:07 v #12954 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:12:07 v #12955 > > │ ### hash_to_port                                                             │
00:12:07 v #12956 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:12:07 v #12957 > >
00:12:07 v #12958 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:07 v #12959 > > inl hash_to_port (text : string) : u16 =
00:12:07 v #12960 > >     inl first_letter_code = text |> sm'.index 0i32 |> sm'.convert_to_utf32
00:12:07 v #12961 > >     inl hash_part = text |> sm'.slice 0i32 7
00:12:07 v #12962 > >     inl combined_value = convert_i32_base 16 hash_part + first_letter_code |>
00:12:07 v #12963 > > u16
00:12:07 v #12964 > >     trace Verbose
00:12:07 v #12965 > >         fun () => "crypto.hash_to_port"
00:12:07 v #12966 > >         fun () => { first_letter_code hash_part combined_value }
00:12:07 v #12967 > >     combined_value % 48128 + 1024
00:12:08 v #12968 > >
00:12:08 v #12969 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:08 v #12970 > > //// test
00:12:08 v #12971 > > ///! fsharp
00:12:08 v #12972 > > ///! cuda
00:12:08 v #12973 > > ///! rust -d sha2
00:12:08 v #12974 > > ///! typescript
00:12:08 v #12975 > > ///! python
00:12:08 v #12976 > >
00:12:08 v #12977 > > "\n"
00:12:08 v #12978 > > |> hash_text
00:12:08 v #12979 > > |> hash_to_port
00:12:08 v #12980 > > |> _assert_eq 19273
00:12:12 v #12981 > >
00:12:12 v #12982 > > ╭─[ 4.69s - return value ]─────────────────────────────────────────────────────╮
00:12:12 v #12983 > > │                                                                              │
00:12:12 v #12984 > > │ .py output (Cuda):                                                           │
00:12:12 v #12985 > > │ 00:00:00 v #1 crypto.hash_to_port / { first_letter_code = 48; hash_part │
00:12:12 v #12986 > > │ = 01ba4719; combined_value = 18249 }                                         │
00:12:12 v #12987 > > │ __assert_eq / actual: 19273 / expected: 19273                                │
00:12:12 v #12988 > > │                                                                              │
00:12:12 v #12989 > > │                                                                              │
00:12:12 v #12990 > > │ .rs output (rust -d sha2):                                                   │
00:12:12 v #12991 > > │ 00:00:00 v #1 crypto.hash_to_port / { first_letter_code = 48;          │
00:12:12 v #12992 > > │ hash_part = 01ba4719; combined_value = 18249 }                               │
00:12:12 v #12993 > > │ __assert_eq / actual: 19273 / expected: 19273                                │
00:12:12 v #12994 > > │                                                                              │
00:12:12 v #12995 > > │                                                                              │
00:12:12 v #12996 > > │ .ts output:                                                                  │
00:12:12 v #12997 > > │ 00:00:00 v #1 crypto.hash_to_port / { first_letter_code = 48; hash_part │
00:12:12 v #12998 > > │ = 01ba4719; combined_value = 18249 }                                         │
00:12:12 v #12999 > > │ __assert_eq / actual: 19273 / expected: 19273                                │
00:12:12 v #13000 > > │                                                                              │
00:12:12 v #13001 > > │                                                                              │
00:12:12 v #13002 > > │ .py output:                                                                  │
00:12:12 v #13003 > > │ 00:00:00 v #1 crypto.hash_to_port / { first_letter_code = 48; hash_part │
00:12:12 v #13004 > > │ = 01ba4719; combined_value = 18249 }                                         │
00:12:12 v #13005 > > │ __assert_eq / actual: 19273 / expected: 19273                                │
00:12:12 v #13006 > > │                                                                              │
00:12:12 v #13007 > > │                                                                              │
00:12:12 v #13008 > > │                                                                              │
00:12:12 v #13009 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:12:12 v #13010 > >
00:12:12 v #13011 > > ╭─[ 4.70s - stdout ]───────────────────────────────────────────────────────────╮
00:12:12 v #13012 > > │ .fsx output:                                                                 │
00:12:12 v #13013 > > │ 00:00:00 v #1 crypto.hash_to_port / { first_letter_code = 48; hash_part │
00:12:12 v #13014 > > │ = 01ba4719; combined_value = 18249 }                                         │
00:12:12 v #13015 > > │ __assert_eq / actual: 19273us / expected: 19273us                            │
00:12:12 v #13016 > > │                                                                              │
00:12:12 v #13017 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:12:12 v #13018 > >
00:12:12 v #13019 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:12 v #13020 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:12:12 v #13021 > > │ ## main                                                                      │
00:12:12 v #13022 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:12:12 v #13023 > >
00:12:12 v #13024 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:12 v #13025 > > inl main () =
00:12:12 v #13026 > >     $'let hash_text x = !hash_text x' : ()
00:12:12 v #13027 > >     $'let hash_to_port x = !hash_to_port x' : ()
00:12:13 v #13028 > 00:01:30 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 30538 }
00:12:13 v #13029 > 00:01:30 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/polyglot/lib/spiral/crypto.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/polyglot/lib/spiral/crypto.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:12:15 v #13030 > 00:01:31 v #5 ! [NbConvertApp] Converting notebook c:/home/git/polyglot/lib/spiral/crypto.dib.ipynb to html
00:12:15 v #13031 > 00:01:31 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:12:15 v #13032 > 00:01:31 v #7 !   validate(nb)
00:12:15 v #13033 > 00:01:32 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:12:15 v #13034 > 00:01:32 v #9 !   return _pygments_highlight(
00:12:16 v #13035 > 00:01:32 v #10 ! [NbConvertApp] Writing 341584 bytes to c:\home\git\polyglot\lib\spiral\crypto.dib.html
00:12:16 v #13036 > 00:01:33 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 854 }
00:12:16 v #13037 > 00:01:33 d #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 854 }
00:12:16 v #13038 > 00:01:33 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/crypto.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/crypto.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:12:16 v #13039 > 00:01:33 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:12:16 v #13040 > 00:01:33 d #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:12:16 v #13041 > 00:01:33 d #16 spiral_builder.run / dib / { exit_code = 0; result_length = 31451 }
00:12:16 d #13042 runtime.execute_with_options_async / { exit_code = 0; output_length = 35218 }
00:12:16 d #15 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder.exe dib --path crypto.dib --retries 3
00:12:16 d #13043 runtime.execute_with_options_async / { file_name = ../../workspace/target/release/spiral_builder.exe; arguments = US5_0 "dib --path common.dib --retries 3"; options = { command = ../../workspace/target/release/spiral_builder.exe dib --path common.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:12:16 v #13044 > 00:00:00 d #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "common.dib", "--retries", "3"])) }
00:12:16 v #13045 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/polyglot/lib/spiral/common.dib", "--output-path", "c:/home/git/polyglot/lib/spiral/common.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/polyglot/lib/spiral/common.dib" --output-path "c:/home/git/polyglot/lib/spiral/common.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:12:18 v #13046 > >
00:12:18 v #13047 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:18 v #13048 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:12:18 v #13049 > > │ # common                                                                     │
00:12:18 v #13050 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:12:21 v #13051 > >
00:12:21 v #13052 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:21 v #13053 > > //// test
00:12:21 v #13054 > >
00:12:21 v #13055 > > open testing
00:12:22 v #13056 > >
00:12:22 v #13057 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:22 v #13058 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:12:22 v #13059 > > │ ## common                                                                    │
00:12:22 v #13060 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:12:22 v #13061 > >
00:12:22 v #13062 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:22 v #13063 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:12:22 v #13064 > > │ ### join_body                                                                │
00:12:22 v #13065 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:12:22 v #13066 > >
00:12:22 v #13067 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:22 v #13068 > > inl join_body body acc x =
00:12:22 v #13069 > >     if var_is x |> not
00:12:22 v #13070 > >     then body acc x
00:12:22 v #13071 > >     else
00:12:22 v #13072 > >         inl acc = dyn acc
00:12:22 v #13073 > >         join body acc x
00:12:23 v #13074 > >
00:12:23 v #13075 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:23 v #13076 > > //// test
00:12:23 v #13077 > >
00:12:23 v #13078 > > inl rec fold_list f s = function
00:12:23 v #13079 > >     | Cons (x, x') => fold_list f (f s x) x'
00:12:23 v #13080 > >     | Nil => s
00:12:23 v #13081 > >
00:12:23 v #13082 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:23 v #13083 > > //// test
00:12:23 v #13084 > > ///! fsharp
00:12:23 v #13085 > > ///! cuda
00:12:23 v #13086 > > ///! rust
00:12:23 v #13087 > > ///! typescript
00:12:23 v #13088 > > ///! python
00:12:23 v #13089 > > //// print_code
00:12:23 v #13090 > >
00:12:23 v #13091 > > [[ 5i32; 4; join 3; 2; 1 ]]
00:12:23 v #13092 > > |> fold_list (+) 0
00:12:23 v #13093 > > |> _assert_eq 15
00:12:27 v #13094 > >
00:12:27 v #13095 > > ╭─[ 4.43s - return value ]─────────────────────────────────────────────────────╮
00:12:27 v #13096 > > │ .py output (Cuda):                                                           │
00:12:27 v #13097 > > │ __assert_eq / actual: 15 / expected: 15                                      │
00:12:27 v #13098 > > │                                                                              │
00:12:27 v #13099 > > │ .rs output:                                                                  │
00:12:27 v #13100 > > │ __assert_eq / actual: 15 / expected: 15                                      │
00:12:27 v #13101 > > │                                                                              │
00:12:27 v #13102 > > │ .ts output:                                                                  │
00:12:27 v #13103 > > │ __assert_eq / actual: 15 / expected: 15                                      │
00:12:27 v #13104 > > │                                                                              │
00:12:27 v #13105 > > │ .py output:                                                                  │
00:12:27 v #13106 > > │ __assert_eq / actual: 15 / expected: 15                                      │
00:12:27 v #13107 > > │                                                                              │
00:12:27 v #13108 > > │                                                                              │
00:12:27 v #13109 > > │                                                                              │
00:12:27 v #13110 > > │                                                                              │
00:12:27 v #13111 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:12:27 v #13112 > >
00:12:28 v #13113 > > ╭─[ 4.44s - stdout ]───────────────────────────────────────────────────────────╮
00:12:28 v #13114 > > │ .fsx:                                                                        │
00:12:28 v #13115 > > │ let rec method1 () : int32 =                                                 │
00:12:28 v #13116 > > │     3                                                                        │
00:12:28 v #13117 > > │ and method2 (v0 : bool) : bool =                                             │
00:12:28 v #13118 > > │     v0                                                                       │
00:12:28 v #13119 > > │ and closure0 (v0 : string) () : unit =                                       │
00:12:28 v #13120 > > │     let v1 : (string -> unit) = System.Console.WriteLine                     │
00:12:28 v #13121 > > │     v1 v0                                                                    │
00:12:28 v #13122 > > │ and method0 () : unit =                                                      │
00:12:28 v #13123 > > │     let v0 : int32 = method1()                                               │
00:12:28 v #13124 > > │     let v1 : int32 = 9 + v0                                                  │
00:12:28 v #13125 > > │     let v2 : int32 = v1 + 2                                                  │
00:12:28 v #13126 > > │     let v3 : int32 = v2 + 1                                                  │
00:12:28 v #13127 > > │     let v4 : bool = v3 = 15                                                  │
00:12:28 v #13128 > > │     let v6 : bool =                                                          │
00:12:28 v #13129 > > │         if v4 then                                                           │
00:12:28 v #13130 > > │             true                                                             │
00:12:28 v #13131 > > │         else                                                                 │
00:12:28 v #13132 > > │             method2(v4)                                                      │
00:12:28 v #13133 > > │     let v7 : string = "__assert_eq"                                          │
00:12:28 v #13134 > > │     let v8 : string = $"{v7} / actual: %A{v3} / expected: %A{15}"            │
00:12:28 v #13135 > > │     let v11 : unit = ()                                                      │
00:12:28 v #13136 > > │     let v12 : (unit -> unit) = closure0(v8)                                  │
00:12:28 v #13137 > > │     let v13 : unit = (fun () -> v12 (); v11) ()                              │
00:12:28 v #13138 > > │     let v15 : bool = v6 = false                                              │
00:12:28 v #13139 > > │     if v15 then                                                              │
00:12:28 v #13140 > > │         failwith<unit> v8                                                    │
00:12:28 v #13141 > > │ method0()                                                                    │
00:12:28 v #13142 > > │                                                                              │
00:12:28 v #13143 > > │                                                                              │
00:12:28 v #13144 > > │ .rs:                                                                         │
00:12:28 v #13145 > > │ #![allow(dead_code)]                                                         │
00:12:28 v #13146 > > │ #![allow(non_camel_case_types)]                                              │
00:12:28 v #13147 > > │ #![allow(non_snake_case)]                                                    │
00:12:28 v #13148 > > │ #![allow(non_upper_case_globals)]                                            │
00:12:28 v #13149 > > │ #![allow(unreachable_code)]                                                  │
00:12:28 v #13150 > > │ #![allow(unused_attributes)]                                                 │
00:12:28 v #13151 > > │ #![allow(unused_imports)]                                                    │
00:12:28 v #13152 > > │ #![allow(unused_macros)]                                                     │
00:12:28 v #13153 > > │ #![allow(unused_parens)]                                                     │
00:12:28 v #13154 > > │ #![allow(unused_variables)]                                                  │
00:12:28 v #13155 > > │ mod module_5170bee5 {                                                        │
00:12:28 v #13156 > > │     pub mod Spiral_builder {                                                 │
00:12:28 v #13157 > > │         use super::*;                                                        │
00:12:28 v #13158 > > │         use fable_library_rust::Native_::on_startup;                         │
00:12:28 v #13159 > > │         use fable_library_rust::String_::printfn;                            │
00:12:28 v #13160 > > │         use fable_library_rust::String_::sprintf;                            │
00:12:28 v #13161 > > │         use fable_library_rust::String_::string;                             │
00:12:28 v #13162 > > │         pub fn method1() -> i32 {                                            │
00:12:28 v #13163 > > │             3_i32                                                            │
00:12:28 v #13164 > > │         }                                                                    │
00:12:28 v #13165 > > │         pub fn method2(v0: bool) -> bool {                                   │
00:12:28 v #13166 > > │             v0                                                               │
00:12:28 v #13167 > > │         }                                                                    │
00:12:28 v #13168 > > │         pub fn closure0(v0: string, unitVar: ()) {                           │
00:12:28 v #13169 > > │             printfn!("{0}", v0);                                             │
00:12:28 v #13170 > > │         }                                                                    │
00:12:28 v #13171 > > │         pub fn method0() {                                                   │
00:12:28 v #13172 > > │             let v3: i32 = 9_i32 + Spiral_builder::method1() + 2_i32 + 1_i32; │
00:12:28 v #13173 > > │             let v4: bool = v3 == 15_i32;                                     │
00:12:28 v #13174 > > │             let v6: bool = if v4 {                                           │
00:12:28 v #13175 > > │                 true                                                         │
00:12:28 v #13176 > > │             } else {                                                         │
00:12:28 v #13177 > > │                 Spiral_builder::method2(v4)                                  │
00:12:28 v #13178 > > │             };                                                               │
00:12:28 v #13179 > > │             let v8: string = sprintf!(                                       │
00:12:28 v #13180 > > │                 "{} / actual: {:?} / expected: {:?}",                        │
00:12:28 v #13181 > > │                 string("__assert_eq"),                                       │
00:12:28 v #13182 > > │                 v3,                                                          │
00:12:28 v #13183 > > │                 15_i32                                                       │
00:12:28 v #13184 > > │             );                                                               │
00:12:28 v #13185 > > │             let v13: () = {                                                  │
00:12:28 v #13186 > > │                 Spiral_builder::closure0(v8.clone(), ());                    │
00:12:28 v #13187 > > │                 ()                                                           │
00:12:28 v #13188 > > │             };                                                               │
00:12:28 v #13189 > > │             if v6 == false {                                                 │
00:12:28 v #13190 > > │                 panic!("{}", v8,);                                           │
00:12:28 v #13191 > > │             }                                                                │
00:12:28 v #13192 > > │         }                                                                    │
00:12:28 v #13193 > > │         // on_startup!(Spiral_builder::method0());                           │
00:12:28 v #13194 > > │     }                                                                        │
00:12:28 v #13195 > > │ }                                                                            │
00:12:28 v #13196 > > │ pub use module_5170bee5::*;                                                  │
00:12:28 v #13197 > > │                                                                              │
00:12:28 v #13198 > > │ pub fn main() -> Result<(), String> {                                        │
00:12:28 v #13199 > > │     Ok(Spiral_builder::method0())                                            │
00:12:28 v #13200 > > │ }                                                                            │
00:12:28 v #13201 > > │                                                                              │
00:12:28 v #13202 > > │ .ts:                                                                         │
00:12:28 v #13203 > > │ import { int32 } from "./fable_modules/fable-library-ts.4.21.0/Int32.js";    │
00:12:28 v #13204 > > │ import { interpolate, toText } from                                          │
00:12:28 v #13205 > > │ "./fable_modules/fable-library-ts.4.21.0/String.js";                         │
00:12:28 v #13206 > > │                                                                              │
00:12:28 v #13207 > > │ export function method1(): int32 {                                           │
00:12:28 v #13208 > > │     return 3;                                                                │
00:12:28 v #13209 > > │ }                                                                            │
00:12:28 v #13210 > > │                                                                              │
00:12:28 v #13211 > > │ export function method2(v0: boolean): boolean {                              │
00:12:28 v #13212 > > │     return v0;                                                               │
00:12:28 v #13213 > > │ }                                                                            │
00:12:28 v #13214 > > │                                                                              │
00:12:28 v #13215 > > │ export function closure0(v0: string, unitVar: void): void {                  │
00:12:28 v #13216 > > │     console.log(v0);                                                         │
00:12:28 v #13217 > > │ }                                                                            │
00:12:28 v #13218 > > │                                                                              │
00:12:28 v #13219 > > │ export function method0(): void {                                            │
00:12:28 v #13220 > > │     const v3: int32 = (((9 + method1()) + 2) + 1) | 0;                       │
00:12:28 v #13221 > > │     const v4: boolean = v3 === 15;                                           │
00:12:28 v #13222 > > │     const v6: boolean = v4 ? true : method2(v4);                             │
00:12:28 v #13223 > > │     const v8: string = toText(interpolate("%P() / actual: %A%P() / expected: │
00:12:28 v #13224 > > │ %A%P()", ["__assert_eq", v3, 15]));                                          │
00:12:28 v #13225 > > │     let v13: any;                                                            │
00:12:28 v #13226 > > │     closure0(v8, undefined);                                                 │
00:12:28 v #13227 > > │     v13 = undefined;                                                         │
00:12:28 v #13228 > > │     if (v6 === false) {                                                      │
00:12:28 v #13229 > > │         throw new Error(v8);                                                 │
00:12:28 v #13230 > > │     }                                                                        │
00:12:28 v #13231 > > │ }                                                                            │
00:12:28 v #13232 > > │                                                                              │
00:12:28 v #13233 > > │ method0();                                                                   │
00:12:28 v #13234 > > │                                                                              │
00:12:28 v #13235 > > │                                                                              │
00:12:28 v #13236 > > │                                                                              │
00:12:28 v #13237 > > │ // spiral_builder.process_typescript                                         │
00:12:28 v #13238 > > │                                                                              │
00:12:28 v #13239 > > │ .py:                                                                         │
00:12:28 v #13240 > > │ from fable_modules.fable_library.string_ import (to_text, interpolate)       │
00:12:28 v #13241 > > │                                                                              │
00:12:28 v #13242 > > │ def method1(__unit: None=None) -> int:                                       │
00:12:28 v #13243 > > │     return 3                                                                 │
00:12:28 v #13244 > > │                                                                              │
00:12:28 v #13245 > > │                                                                              │
00:12:28 v #13246 > > │ def method2(v0: bool) -> bool:                                               │
00:12:28 v #13247 > > │     return v0                                                                │
00:12:28 v #13248 > > │                                                                              │
00:12:28 v #13249 > > │                                                                              │
00:12:28 v #13250 > > │ def closure0(v0: str, unit_var: None) -> None:                               │
00:12:28 v #13251 > > │     print(v0)                                                                │
00:12:28 v #13252 > > │                                                                              │
00:12:28 v #13253 > > │                                                                              │
00:12:28 v #13254 > > │ def method0(__unit: None=None) -> None:                                      │
00:12:28 v #13255 > > │     v3: int = (((9 + method1()) + 2) + 1) or 0                               │
00:12:28 v #13256 > > │     v4: bool = v3 == 15                                                      │
00:12:28 v #13257 > > │     v6: bool = True if v4 else method2(v4)                                   │
00:12:28 v #13258 > > │     v8: str = to_text(interpolate("%P() / actual: %A%P() / expected:         │
00:12:28 v #13259 > > │ %A%P()", ["__assert_eq", v3, 15]))                                           │
00:12:28 v #13260 > > │     v13: None                                                                │
00:12:28 v #13261 > > │     closure0(v8, None)                                                       │
00:12:28 v #13262 > > │     v13 = None                                                               │
00:12:28 v #13263 > > │     if v6 == False:                                                          │
00:12:28 v #13264 > > │         raise Exception(v8)                                                  │
00:12:28 v #13265 > > │                                                                              │
00:12:28 v #13266 > > │                                                                              │
00:12:28 v #13267 > > │                                                                              │
00:12:28 v #13268 > > │ method0()                                                                    │
00:12:28 v #13269 > > │                                                                              │
00:12:28 v #13270 > > │                                                                              │
00:12:28 v #13271 > > │                                                                              │
00:12:28 v #13272 > > │ # spiral_builder.process_python                                              │
00:12:28 v #13273 > > │                                                                              │
00:12:28 v #13274 > > │ .py:                                                                         │
00:12:28 v #13275 > > │ kernel = r"""                                                                │
00:12:28 v #13276 > > │ """                                                                          │
00:12:28 v #13277 > > │ class static_array():                                                        │
00:12:28 v #13278 > > │     def __init__(self, length):                                              │
00:12:28 v #13279 > > │         self.ptr = []                                                        │
00:12:28 v #13280 > > │         for _ in range(length):                                              │
00:12:28 v #13281 > > │             self.ptr.append(None)                                            │
00:12:28 v #13282 > > │                                                                              │
00:12:28 v #13283 > > │     def __getitem__(self, index):                                            │
00:12:28 v #13284 > > │         assert 0 <= index < len(self.ptr), "The get index needs to be in     │
00:12:28 v #13285 > > │ range."                                                                      │
00:12:28 v #13286 > > │         return self.ptr[index]                                               │
00:12:28 v #13287 > > │                                                                              │
00:12:28 v #13288 > > │     def __setitem__(self, index, value):                                     │
00:12:28 v #13289 > > │         assert 0 <= index < len(self.ptr), "The set index needs to be in     │
00:12:28 v #13290 > > │ range."                                                                      │
00:12:28 v #13291 > > │         self.ptr[index] = value                                              │
00:12:28 v #13292 > > │                                                                              │
00:12:28 v #13293 > > │ class static_array_list(static_array):                                       │
00:12:28 v #13294 > > │     def __init__(self, length):                                              │
00:12:28 v #13295 > > │         super().__init__(length)                                             │
00:12:28 v #13296 > > │         self.length = 0                                                      │
00:12:28 v #13297 > > │                                                                              │
00:12:28 v #13298 > > │     def __getitem__(self, index):                                            │
00:12:28 v #13299 > > │         assert 0 <= index < self.length, "The get index needs to be in       │
00:12:28 v #13300 > > │ range."                                                                      │
00:12:28 v #13301 > > │         return self.ptr[index]                                               │
00:12:28 v #13302 > > │                                                                              │
00:12:28 v #13303 > > │     def __setitem__(self, index, value):                                     │
00:12:28 v #13304 > > │         assert 0 <= index < self.length, "The set index needs to be in       │
00:12:28 v #13305 > > │ range."                                                                      │
00:12:28 v #13306 > > │         self.ptr[index] = value                                              │
00:12:28 v #13307 > > │                                                                              │
00:12:28 v #13308 > > │     def push(self,value):                                                    │
00:12:28 v #13309 > > │         assert (self.length < len(self.ptr)), "The length before pushing has │
00:12:28 v #13310 > > │ to be less than the maximum length of the array."                            │
00:12:28 v #13311 > > │         self.ptr[self.length] = value                                        │
00:12:28 v #13312 > > │         self.length += 1                                                     │
00:12:28 v #13313 > > │                                                                              │
00:12:28 v #13314 > > │     def pop(self):                                                           │
00:12:28 v #13315 > > │         assert (0 < self.length), "The length before popping has to be       │
00:12:28 v #13316 > > │ greater than 0."                                                             │
00:12:28 v #13317 > > │         self.length -= 1                                                     │
00:12:28 v #13318 > > │         return self.ptr[self.length]                                         │
00:12:28 v #13319 > > │                                                                              │
00:12:28 v #13320 > > │     def unsafe_set_length(self,i):                                           │
00:12:28 v #13321 > > │         assert 0 <= i <= len(self.ptr), "The new length has to be in range." │
00:12:28 v #13322 > > │         self.length = i                                                      │
00:12:28 v #13323 > > │                                                                              │
00:12:28 v #13324 > > │ class dynamic_array(static_array):                                           │
00:12:28 v #13325 > > │     pass                                                                     │
00:12:28 v #13326 > > │                                                                              │
00:12:28 v #13327 > > │ class dynamic_array_list(static_array_list):                                 │
00:12:28 v #13328 > > │     def length_(self): return self.length                                    │
00:12:28 v #13329 > > │                                                                              │
00:12:28 v #13330 > > │ import cupy as cp                                                            │
00:12:28 v #13331 > > │ import numpy as np                                                           │
00:12:28 v #13332 > > │ from dataclasses import dataclass                                            │
00:12:28 v #13333 > > │ from typing import NamedTuple, Union, Callable, Tuple                        │
00:12:28 v #13334 > > │ i8 = int; i16 = int; i32 = int; i64 = int; u8 = int; u16 = int; u32 = int;   │
00:12:28 v #13335 > > │ u64 = int; f32 = float; f64 = float; char = str; string = str                │
00:12:28 v #13336 > > │ cuda = False                                                                 │
00:12:28 v #13337 > > │                                                                              │
00:12:28 v #13338 > > │ def method1() -> i32:                                                        │
00:12:28 v #13339 > > │     return 3                                                                 │
00:12:28 v #13340 > > │ def method2(v0 : bool) -> bool:                                              │
00:12:28 v #13341 > > │     return v0                                                                │
00:12:28 v #13342 > > │ def method0() -> None:                                                       │
00:12:28 v #13343 > > │     v0 = method1()                                                           │
00:12:28 v #13344 > > │     v1 = 9 + v0                                                              │
00:12:28 v #13345 > > │     del v0                                                                   │
00:12:28 v #13346 > > │     v2 = v1 + 2                                                              │
00:12:28 v #13347 > > │     del v1                                                                   │
00:12:28 v #13348 > > │     v3 = v2 + 1                                                              │
00:12:28 v #13349 > > │     del v2                                                                   │
00:12:28 v #13350 > > │     v4 = v3 == 15                                                            │
00:12:28 v #13351 > > │     if v4:                                                                   │
00:12:28 v #13352 > > │         v6 = True                                                            │
00:12:28 v #13353 > > │     else:                                                                    │
00:12:28 v #13354 > > │         v6 = method2(v4)                                                     │
00:12:28 v #13355 > > │     del v4                                                                   │
00:12:28 v #13356 > > │     v9 = "__assert_eq"                                                       │
00:12:28 v #13357 > > │     v10 = f"{v9} / actual: {v3} / expected: {15}"                            │
00:12:28 v #13358 > > │     del v3, v9                                                               │
00:12:28 v #13359 > > │     print(v10)                                                               │
00:12:28 v #13360 > > │     v16 = v6 == False                                                        │
00:12:28 v #13361 > > │     del v6                                                                   │
00:12:28 v #13362 > > │     if v16:                                                                  │
00:12:28 v #13363 > > │         del v16                                                              │
00:12:28 v #13364 > > │         raise Exception(v10)                                                 │
00:12:28 v #13365 > > │     else:                                                                    │
00:12:28 v #13366 > > │         del v10, v16                                                         │
00:12:28 v #13367 > > │         return                                                               │
00:12:28 v #13368 > > │ def main_body():                                                             │
00:12:28 v #13369 > > │     return method0()                                                         │
00:12:28 v #13370 > > │                                                                              │
00:12:28 v #13371 > > │ def main():                                                                  │
00:12:28 v #13372 > > │     r = main_body()                                                          │
00:12:28 v #13373 > > │     if cuda: cp.cuda.get_current_stream().synchronize() # This line is here  │
00:12:28 v #13374 > > │ so the `__trap()` calls on the kernel aren't missed.                         │
00:12:28 v #13375 > > │     return r                                                                 │
00:12:28 v #13376 > > │                                                                              │
00:12:28 v #13377 > > │ if __name__ == '__main__': result = main(); None if result is None else      │
00:12:28 v #13378 > > │ print(result)                                                                │
00:12:28 v #13379 > > │                                                                              │
00:12:28 v #13380 > > │                                                                              │
00:12:28 v #13381 > > │ .py:                                                                         │
00:12:28 v #13382 > > │ kernel = r"""                                                                │
00:12:28 v #13383 > > │ """                                                                          │
00:12:28 v #13384 > > │ class static_array():                                                        │
00:12:28 v #13385 > > │     def __init__(self, length):                                              │
00:12:28 v #13386 > > │         self.ptr = []                                                        │
00:12:28 v #13387 > > │         for _ in range(length):                                              │
00:12:28 v #13388 > > │             self.ptr.append(None)                                            │
00:12:28 v #13389 > > │                                                                              │
00:12:28 v #13390 > > │     def __getitem__(self, index):                                            │
00:12:28 v #13391 > > │         assert 0 <= index < len(self.ptr), "The get index needs to be in     │
00:12:28 v #13392 > > │ range."                                                                      │
00:12:28 v #13393 > > │         return self.ptr[index]                                               │
00:12:28 v #13394 > > │                                                                              │
00:12:28 v #13395 > > │     def __setitem__(self, index, value):                                     │
00:12:28 v #13396 > > │         assert 0 <= index < len(self.ptr), "The set index needs to be in     │
00:12:28 v #13397 > > │ range."                                                                      │
00:12:28 v #13398 > > │         self.ptr[index] = value                                              │
00:12:28 v #13399 > > │                                                                              │
00:12:28 v #13400 > > │ class static_array_list(static_array):                                       │
00:12:28 v #13401 > > │     def __init__(self, length):                                              │
00:12:28 v #13402 > > │         super().__init__(length)                                             │
00:12:28 v #13403 > > │         self.length = 0                                                      │
00:12:28 v #13404 > > │                                                                              │
00:12:28 v #13405 > > │     def __getitem__(self, index):                                            │
00:12:28 v #13406 > > │         assert 0 <= index < self.length, "The get index needs to be in       │
00:12:28 v #13407 > > │ range."                                                                      │
00:12:28 v #13408 > > │         return self.ptr[index]                                               │
00:12:28 v #13409 > > │                                                                              │
00:12:28 v #13410 > > │     def __setitem__(self, index, value):                                     │
00:12:28 v #13411 > > │         assert 0 <= index < self.length, "The set index needs to be in       │
00:12:28 v #13412 > > │ range."                                                                      │
00:12:28 v #13413 > > │         self.ptr[index] = value                                              │
00:12:28 v #13414 > > │                                                                              │
00:12:28 v #13415 > > │     def push(self,value):                                                    │
00:12:28 v #13416 > > │         assert (self.length < len(self.ptr)), "The length before pushing has │
00:12:28 v #13417 > > │ to be less than the maximum length of the array."                            │
00:12:28 v #13418 > > │         self.ptr[self.length] = value                                        │
00:12:28 v #13419 > > │         self.length += 1                                                     │
00:12:28 v #13420 > > │                                                                              │
00:12:28 v #13421 > > │     def pop(self):                                                           │
00:12:28 v #13422 > > │         assert (0 < self.length), "The length before popping has to be       │
00:12:28 v #13423 > > │ greater than 0."                                                             │
00:12:28 v #13424 > > │         self.length -= 1                                                     │
00:12:28 v #13425 > > │         return self.ptr[self.length]                                         │
00:12:28 v #13426 > > │                                                                              │
00:12:28 v #13427 > > │     def unsafe_set_length(self,i):                                           │
00:12:28 v #13428 > > │         assert 0 <= i <= len(self.ptr), "The new length has to be in range." │
00:12:28 v #13429 > > │         self.length = i                                                      │
00:12:28 v #13430 > > │                                                                              │
00:12:28 v #13431 > > │ class dynamic_array(static_array):                                           │
00:12:28 v #13432 > > │     pass                                                                     │
00:12:28 v #13433 > > │                                                                              │
00:12:28 v #13434 > > │ class dynamic_array_list(static_array_list):                                 │
00:12:28 v #13435 > > │     def length_(self): return self.length                                    │
00:12:28 v #13436 > > │                                                                              │
00:12:28 v #13437 > > │ import cupy as cp                                                            │
00:12:28 v #13438 > > │ import numpy as np                                                           │
00:12:28 v #13439 > > │ from dataclasses import dataclass                                            │
00:12:28 v #13440 > > │ from typing import NamedTuple, Union, Callable, Tuple                        │
00:12:28 v #13441 > > │ i8 = int; i16 = int; i32 = int; i64 = int; u8 = int; u16 = int; u32 = int;   │
00:12:28 v #13442 > > │ u64 = int; f32 = float; f64 = float; char = str; string = str                │
00:12:28 v #13443 > > │ cuda = False                                                                 │
00:12:28 v #13444 > > │                                                                              │
00:12:28 v #13445 > > │ def method1() -> i32:                                                        │
00:12:28 v #13446 > > │     return 3                                                                 │
00:12:28 v #13447 > > │ def method2(v0 : bool) -> bool:                                              │
00:12:28 v #13448 > > │     return v0                                                                │
00:12:28 v #13449 > > │ def method0() -> None:                                                       │
00:12:28 v #13450 > > │     v0 = method1()                                                           │
00:12:28 v #13451 > > │     v1 = 9 + v0                                                              │
00:12:28 v #13452 > > │     del v0                                                                   │
00:12:28 v #13453 > > │     v2 = v1 + 2                                                              │
00:12:28 v #13454 > > │     del v1                                                                   │
00:12:28 v #13455 > > │     v3 = v2 + 1                                                              │
00:12:28 v #13456 > > │     del v2                                                                   │
00:12:28 v #13457 > > │     v4 = v3 == 15                                                            │
00:12:28 v #13458 > > │     if v4:                                                                   │
00:12:28 v #13459 > > │         v6 = True                                                            │
00:12:28 v #13460 > > │     else:                                                                    │
00:12:28 v #13461 > > │         v6 = method2(v4)                                                     │
00:12:28 v #13462 > > │     del v4                                                                   │
00:12:28 v #13463 > > │     v9 = "__assert_eq"                                                       │
00:12:28 v #13464 > > │     v10 = f"{v9} / actual: {v3} / expected: {15}"                            │
00:12:28 v #13465 > > │     del v3, v9                                                               │
00:12:28 v #13466 > > │     print(v10)                                                               │
00:12:28 v #13467 > > │     v16 = v6 == False                                                        │
00:12:28 v #13468 > > │     del v6                                                                   │
00:12:28 v #13469 > > │     if v16:                                                                  │
00:12:28 v #13470 > > │         del v16                                                              │
00:12:28 v #13471 > > │         raise Exception(v10)                                                 │
00:12:28 v #13472 > > │     else:                                                                    │
00:12:28 v #13473 > > │         del v10, v16                                                         │
00:12:28 v #13474 > > │         return                                                               │
00:12:28 v #13475 > > │ def main_body():                                                             │
00:12:28 v #13476 > > │     return method0()                                                         │
00:12:28 v #13477 > > │                                                                              │
00:12:28 v #13478 > > │ def main():                                                                  │
00:12:28 v #13479 > > │     r = main_body()                                                          │
00:12:28 v #13480 > > │     if cuda: cp.cuda.get_current_stream().synchronize() # This line is here  │
00:12:28 v #13481 > > │ so the `__trap()` calls on the kernel aren't missed.                         │
00:12:28 v #13482 > > │     return r                                                                 │
00:12:28 v #13483 > > │                                                                              │
00:12:28 v #13484 > > │ if __name__ == '__main__': result = main(); None if result is None else      │
00:12:28 v #13485 > > │ print(result)                                                                │
00:12:28 v #13486 > > │                                                                              │
00:12:28 v #13487 > > │ .fsx output:                                                                 │
00:12:28 v #13488 > > │ __assert_eq / actual: 15 / expected: 15                                      │
00:12:28 v #13489 > > │                                                                              │
00:12:28 v #13490 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:12:28 v #13491 > >
00:12:28 v #13492 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:28 v #13493 > > //// test
00:12:28 v #13494 > > ///! fsharp
00:12:28 v #13495 > > ///! cuda
00:12:28 v #13496 > > ///! rust
00:12:28 v #13497 > > ///! typescript
00:12:28 v #13498 > > ///! python
00:12:28 v #13499 > > //// print_code
00:12:28 v #13500 > >
00:12:28 v #13501 > > [[ 5i32; 4; join 3; 2; 1 ]]
00:12:28 v #13502 > > |> fold_list (join_body (+)) 0
00:12:28 v #13503 > > |> _assert_eq 15
00:12:31 v #13504 > >
00:12:31 v #13505 > > ╭─[ 3.63s - return value ]─────────────────────────────────────────────────────╮
00:12:31 v #13506 > > │ .py output (Cuda):                                                           │
00:12:31 v #13507 > > │ __assert_eq / actual: 15 / expected: 15                                      │
00:12:31 v #13508 > > │                                                                              │
00:12:31 v #13509 > > │ .rs output:                                                                  │
00:12:31 v #13510 > > │ __assert_eq / actual: 15 / expected: 15                                      │
00:12:31 v #13511 > > │                                                                              │
00:12:31 v #13512 > > │ .ts output:                                                                  │
00:12:31 v #13513 > > │ __assert_eq / actual: 15 / expected: 15                                      │
00:12:31 v #13514 > > │                                                                              │
00:12:31 v #13515 > > │ .py output:                                                                  │
00:12:31 v #13516 > > │ __assert_eq / actual: 15 / expected: 15                                      │
00:12:31 v #13517 > > │                                                                              │
00:12:31 v #13518 > > │                                                                              │
00:12:31 v #13519 > > │                                                                              │
00:12:31 v #13520 > > │                                                                              │
00:12:31 v #13521 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:12:31 v #13522 > >
00:12:31 v #13523 > > ╭─[ 3.63s - stdout ]───────────────────────────────────────────────────────────╮
00:12:31 v #13524 > > │ .fsx:                                                                        │
00:12:31 v #13525 > > │ let rec method1 () : int32 =                                                 │
00:12:31 v #13526 > > │     3                                                                        │
00:12:31 v #13527 > > │ and method2 (v0 : int32, v1 : int32) : int32 =                               │
00:12:31 v #13528 > > │     let v2 : int32 = v1 + v0                                                 │
00:12:31 v #13529 > > │     v2                                                                       │
00:12:31 v #13530 > > │ and method3 (v0 : bool) : bool =                                             │
00:12:31 v #13531 > > │     v0                                                                       │
00:12:31 v #13532 > > │ and closure0 (v0 : string) () : unit =                                       │
00:12:31 v #13533 > > │     let v1 : (string -> unit) = System.Console.WriteLine                     │
00:12:31 v #13534 > > │     v1 v0                                                                    │
00:12:31 v #13535 > > │ and method0 () : unit =                                                      │
00:12:31 v #13536 > > │     let v0 : int32 = method1()                                               │
00:12:31 v #13537 > > │     let v1 : int32 = 9                                                       │
00:12:31 v #13538 > > │     let v2 : int32 = method2(v0, v1)                                         │
00:12:31 v #13539 > > │     let v3 : int32 = v2 + 2                                                  │
00:12:31 v #13540 > > │     let v4 : int32 = v3 + 1                                                  │
00:12:31 v #13541 > > │     let v5 : bool = v4 = 15                                                  │
00:12:31 v #13542 > > │     let v7 : bool =                                                          │
00:12:31 v #13543 > > │         if v5 then                                                           │
00:12:31 v #13544 > > │             true                                                             │
00:12:31 v #13545 > > │         else                                                                 │
00:12:31 v #13546 > > │             method3(v5)                                                      │
00:12:31 v #13547 > > │     let v8 : string = "__assert_eq"                                          │
00:12:31 v #13548 > > │     let v9 : string = $"{v8} / actual: %A{v4} / expected: %A{15}"            │
00:12:31 v #13549 > > │     let v12 : unit = ()                                                      │
00:12:31 v #13550 > > │     let v13 : (unit -> unit) = closure0(v9)                                  │
00:12:31 v #13551 > > │     let v14 : unit = (fun () -> v13 (); v12) ()                              │
00:12:31 v #13552 > > │     let v16 : bool = v7 = false                                              │
00:12:31 v #13553 > > │     if v16 then                                                              │
00:12:31 v #13554 > > │         failwith<unit> v9                                                    │
00:12:31 v #13555 > > │ method0()                                                                    │
00:12:31 v #13556 > > │                                                                              │
00:12:31 v #13557 > > │                                                                              │
00:12:31 v #13558 > > │ .rs:                                                                         │
00:12:31 v #13559 > > │ #![allow(dead_code)]                                                         │
00:12:31 v #13560 > > │ #![allow(non_camel_case_types)]                                              │
00:12:31 v #13561 > > │ #![allow(non_snake_case)]                                                    │
00:12:31 v #13562 > > │ #![allow(non_upper_case_globals)]                                            │
00:12:31 v #13563 > > │ #![allow(unreachable_code)]                                                  │
00:12:31 v #13564 > > │ #![allow(unused_attributes)]                                                 │
00:12:31 v #13565 > > │ #![allow(unused_imports)]                                                    │
00:12:31 v #13566 > > │ #![allow(unused_macros)]                                                     │
00:12:31 v #13567 > > │ #![allow(unused_parens)]                                                     │
00:12:31 v #13568 > > │ #![allow(unused_variables)]                                                  │
00:12:31 v #13569 > > │ mod module_84d7d073 {                                                        │
00:12:31 v #13570 > > │     pub mod Spiral_builder {                                                 │
00:12:31 v #13571 > > │         use super::*;                                                        │
00:12:31 v #13572 > > │         use fable_library_rust::Native_::on_startup;                         │
00:12:31 v #13573 > > │         use fable_library_rust::String_::printfn;                            │
00:12:31 v #13574 > > │         use fable_library_rust::String_::sprintf;                            │
00:12:31 v #13575 > > │         use fable_library_rust::String_::string;                             │
00:12:31 v #13576 > > │         pub fn method1() -> i32 {                                            │
00:12:31 v #13577 > > │             3_i32                                                            │
00:12:31 v #13578 > > │         }                                                                    │
00:12:31 v #13579 > > │         pub fn method2(v0: i32, v1: i32) -> i32 {                            │
00:12:31 v #13580 > > │             v1 + v0                                                          │
00:12:31 v #13581 > > │         }                                                                    │
00:12:31 v #13582 > > │         pub fn method3(v0: bool) -> bool {                                   │
00:12:31 v #13583 > > │             v0                                                               │
00:12:31 v #13584 > > │         }                                                                    │
00:12:31 v #13585 > > │         pub fn closure0(v0: string, unitVar: ()) {                           │
00:12:31 v #13586 > > │             printfn!("{0}", v0);                                             │
00:12:31 v #13587 > > │         }                                                                    │
00:12:31 v #13588 > > │         pub fn method0() {                                                   │
00:12:31 v #13589 > > │             let v4: i32 = Spiral_builder::method2(Spiral_builder::method1(), │
00:12:31 v #13590 > > │ 9_i32) + 2_i32 + 1_i32;                                                      │
00:12:31 v #13591 > > │             let v5: bool = v4 == 15_i32;                                     │
00:12:31 v #13592 > > │             let v7: bool = if v5 {                                           │
00:12:31 v #13593 > > │                 true                                                         │
00:12:31 v #13594 > > │             } else {                                                         │
00:12:31 v #13595 > > │                 Spiral_builder::method3(v5)                                  │
00:12:31 v #13596 > > │             };                                                               │
00:12:31 v #13597 > > │             let v9: string = sprintf!(                                       │
00:12:31 v #13598 > > │                 "{} / actual: {:?} / expected: {:?}",                        │
00:12:31 v #13599 > > │                 string("__assert_eq"),                                       │
00:12:31 v #13600 > > │                 v4,                                                          │
00:12:31 v #13601 > > │                 15_i32                                                       │
00:12:31 v #13602 > > │             );                                                               │
00:12:31 v #13603 > > │             let v14: () = {                                                  │
00:12:31 v #13604 > > │                 Spiral_builder::closure0(v9.clone(), ());                    │
00:12:31 v #13605 > > │                 ()                                                           │
00:12:31 v #13606 > > │             };                                                               │
00:12:31 v #13607 > > │             if v7 == false {                                                 │
00:12:31 v #13608 > > │                 panic!("{}", v9,);                                           │
00:12:31 v #13609 > > │             }                                                                │
00:12:31 v #13610 > > │         }                                                                    │
00:12:31 v #13611 > > │         // on_startup!(Spiral_builder::method0());                           │
00:12:31 v #13612 > > │     }                                                                        │
00:12:31 v #13613 > > │ }                                                                            │
00:12:31 v #13614 > > │ pub use module_84d7d073::*;                                                  │
00:12:31 v #13615 > > │                                                                              │
00:12:31 v #13616 > > │ pub fn main() -> Result<(), String> {                                        │
00:12:31 v #13617 > > │     Ok(Spiral_builder::method0())                                            │
00:12:31 v #13618 > > │ }                                                                            │
00:12:31 v #13619 > > │                                                                              │
00:12:31 v #13620 > > │ .ts:                                                                         │
00:12:31 v #13621 > > │ import { int32 } from "./fable_modules/fable-library-ts.4.21.0/Int32.js";    │
00:12:31 v #13622 > > │ import { interpolate, toText } from                                          │
00:12:31 v #13623 > > │ "./fable_modules/fable-library-ts.4.21.0/String.js";                         │
00:12:31 v #13624 > > │                                                                              │
00:12:31 v #13625 > > │ export function method1(): int32 {                                           │
00:12:31 v #13626 > > │     return 3;                                                                │
00:12:31 v #13627 > > │ }                                                                            │
00:12:31 v #13628 > > │                                                                              │
00:12:31 v #13629 > > │ export function method2(v0: int32, v1: int32): int32 {                       │
00:12:31 v #13630 > > │     return v1 + v0;                                                          │
00:12:31 v #13631 > > │ }                                                                            │
00:12:31 v #13632 > > │                                                                              │
00:12:31 v #13633 > > │ export function method3(v0: boolean): boolean {                              │
00:12:31 v #13634 > > │     return v0;                                                               │
00:12:31 v #13635 > > │ }                                                                            │
00:12:31 v #13636 > > │                                                                              │
00:12:31 v #13637 > > │ export function closure0(v0: string, unitVar: void): void {                  │
00:12:31 v #13638 > > │     console.log(v0);                                                         │
00:12:31 v #13639 > > │ }                                                                            │
00:12:31 v #13640 > > │                                                                              │
00:12:31 v #13641 > > │ export function method0(): void {                                            │
00:12:31 v #13642 > > │     const v4: int32 = ((method2(method1(), 9) + 2) + 1) | 0;                 │
00:12:31 v #13643 > > │     const v5: boolean = v4 === 15;                                           │
00:12:31 v #13644 > > │     const v7: boolean = v5 ? true : method3(v5);                             │
00:12:31 v #13645 > > │     const v9: string = toText(interpolate("%P() / actual: %A%P() / expected: │
00:12:31 v #13646 > > │ %A%P()", ["__assert_eq", v4, 15]));                                          │
00:12:31 v #13647 > > │     let v14: any;                                                            │
00:12:31 v #13648 > > │     closure0(v9, undefined);                                                 │
00:12:31 v #13649 > > │     v14 = undefined;                                                         │
00:12:31 v #13650 > > │     if (v7 === false) {                                                      │
00:12:31 v #13651 > > │         throw new Error(v9);                                                 │
00:12:31 v #13652 > > │     }                                                                        │
00:12:31 v #13653 > > │ }                                                                            │
00:12:31 v #13654 > > │                                                                              │
00:12:31 v #13655 > > │ method0();                                                                   │
00:12:31 v #13656 > > │                                                                              │
00:12:31 v #13657 > > │                                                                              │
00:12:31 v #13658 > > │                                                                              │
00:12:31 v #13659 > > │ // spiral_builder.process_typescript                                         │
00:12:31 v #13660 > > │                                                                              │
00:12:31 v #13661 > > │ .py:                                                                         │
00:12:31 v #13662 > > │ from fable_modules.fable_library.string_ import (to_text, interpolate)       │
00:12:31 v #13663 > > │                                                                              │
00:12:31 v #13664 > > │ def method1(__unit: None=None) -> int:                                       │
00:12:31 v #13665 > > │     return 3                                                                 │
00:12:31 v #13666 > > │                                                                              │
00:12:31 v #13667 > > │                                                                              │
00:12:31 v #13668 > > │ def method2(v0: int, v1: int) -> int:                                        │
00:12:31 v #13669 > > │     return v1 + v0                                                           │
00:12:31 v #13670 > > │                                                                              │
00:12:31 v #13671 > > │                                                                              │
00:12:31 v #13672 > > │ def method3(v0: bool) -> bool:                                               │
00:12:31 v #13673 > > │     return v0                                                                │
00:12:31 v #13674 > > │                                                                              │
00:12:31 v #13675 > > │                                                                              │
00:12:31 v #13676 > > │ def closure0(v0: str, unit_var: None) -> None:                               │
00:12:31 v #13677 > > │     print(v0)                                                                │
00:12:31 v #13678 > > │                                                                              │
00:12:31 v #13679 > > │                                                                              │
00:12:31 v #13680 > > │ def method0(__unit: None=None) -> None:                                      │
00:12:31 v #13681 > > │     v4: int = ((method2(method1(), 9) + 2) + 1) or 0                         │
00:12:31 v #13682 > > │     v5: bool = v4 == 15                                                      │
00:12:31 v #13683 > > │     v7: bool = True if v5 else method3(v5)                                   │
00:12:31 v #13684 > > │     v9: str = to_text(interpolate("%P() / actual: %A%P() / expected:         │
00:12:31 v #13685 > > │ %A%P()", ["__assert_eq", v4, 15]))                                           │
00:12:31 v #13686 > > │     v14: None                                                                │
00:12:31 v #13687 > > │     closure0(v9, None)                                                       │
00:12:31 v #13688 > > │     v14 = None                                                               │
00:12:31 v #13689 > > │     if v7 == False:                                                          │
00:12:31 v #13690 > > │         raise Exception(v9)                                                  │
00:12:31 v #13691 > > │                                                                              │
00:12:31 v #13692 > > │                                                                              │
00:12:31 v #13693 > > │                                                                              │
00:12:31 v #13694 > > │ method0()                                                                    │
00:12:31 v #13695 > > │                                                                              │
00:12:31 v #13696 > > │                                                                              │
00:12:31 v #13697 > > │                                                                              │
00:12:31 v #13698 > > │ # spiral_builder.process_python                                              │
00:12:31 v #13699 > > │                                                                              │
00:12:31 v #13700 > > │ .py:                                                                         │
00:12:31 v #13701 > > │ kernel = r"""                                                                │
00:12:31 v #13702 > > │ """                                                                          │
00:12:31 v #13703 > > │ class static_array():                                                        │
00:12:31 v #13704 > > │     def __init__(self, length):                                              │
00:12:31 v #13705 > > │         self.ptr = []                                                        │
00:12:31 v #13706 > > │         for _ in range(length):                                              │
00:12:31 v #13707 > > │             self.ptr.append(None)                                            │
00:12:31 v #13708 > > │                                                                              │
00:12:31 v #13709 > > │     def __getitem__(self, index):                                            │
00:12:31 v #13710 > > │         assert 0 <= index < len(self.ptr), "The get index needs to be in     │
00:12:31 v #13711 > > │ range."                                                                      │
00:12:31 v #13712 > > │         return self.ptr[index]                                               │
00:12:31 v #13713 > > │                                                                              │
00:12:31 v #13714 > > │     def __setitem__(self, index, value):                                     │
00:12:31 v #13715 > > │         assert 0 <= index < len(self.ptr), "The set index needs to be in     │
00:12:31 v #13716 > > │ range."                                                                      │
00:12:31 v #13717 > > │         self.ptr[index] = value                                              │
00:12:31 v #13718 > > │                                                                              │
00:12:31 v #13719 > > │ class static_array_list(static_array):                                       │
00:12:31 v #13720 > > │     def __init__(self, length):                                              │
00:12:31 v #13721 > > │         super().__init__(length)                                             │
00:12:31 v #13722 > > │         self.length = 0                                                      │
00:12:31 v #13723 > > │                                                                              │
00:12:31 v #13724 > > │     def __getitem__(self, index):                                            │
00:12:31 v #13725 > > │         assert 0 <= index < self.length, "The get index needs to be in       │
00:12:31 v #13726 > > │ range."                                                                      │
00:12:31 v #13727 > > │         return self.ptr[index]                                               │
00:12:31 v #13728 > > │                                                                              │
00:12:31 v #13729 > > │     def __setitem__(self, index, value):                                     │
00:12:31 v #13730 > > │         assert 0 <= index < self.length, "The set index needs to be in       │
00:12:31 v #13731 > > │ range."                                                                      │
00:12:31 v #13732 > > │         self.ptr[index] = value                                              │
00:12:31 v #13733 > > │                                                                              │
00:12:31 v #13734 > > │     def push(self,value):                                                    │
00:12:31 v #13735 > > │         assert (self.length < len(self.ptr)), "The length before pushing has │
00:12:31 v #13736 > > │ to be less than the maximum length of the array."                            │
00:12:31 v #13737 > > │         self.ptr[self.length] = value                                        │
00:12:31 v #13738 > > │         self.length += 1                                                     │
00:12:31 v #13739 > > │                                                                              │
00:12:31 v #13740 > > │     def pop(self):                                                           │
00:12:31 v #13741 > > │         assert (0 < self.length), "The length before popping has to be       │
00:12:31 v #13742 > > │ greater than 0."                                                             │
00:12:31 v #13743 > > │         self.length -= 1                                                     │
00:12:31 v #13744 > > │         return self.ptr[self.length]                                         │
00:12:31 v #13745 > > │                                                                              │
00:12:31 v #13746 > > │     def unsafe_set_length(self,i):                                           │
00:12:31 v #13747 > > │         assert 0 <= i <= len(self.ptr), "The new length has to be in range." │
00:12:31 v #13748 > > │         self.length = i                                                      │
00:12:31 v #13749 > > │                                                                              │
00:12:31 v #13750 > > │ class dynamic_array(static_array):                                           │
00:12:31 v #13751 > > │     pass                                                                     │
00:12:31 v #13752 > > │                                                                              │
00:12:31 v #13753 > > │ class dynamic_array_list(static_array_list):                                 │
00:12:31 v #13754 > > │     def length_(self): return self.length                                    │
00:12:31 v #13755 > > │                                                                              │
00:12:31 v #13756 > > │ import cupy as cp                                                            │
00:12:31 v #13757 > > │ import numpy as np                                                           │
00:12:31 v #13758 > > │ from dataclasses import dataclass                                            │
00:12:31 v #13759 > > │ from typing import NamedTuple, Union, Callable, Tuple                        │
00:12:31 v #13760 > > │ i8 = int; i16 = int; i32 = int; i64 = int; u8 = int; u16 = int; u32 = int;   │
00:12:31 v #13761 > > │ u64 = int; f32 = float; f64 = float; char = str; string = str                │
00:12:31 v #13762 > > │ cuda = False                                                                 │
00:12:31 v #13763 > > │                                                                              │
00:12:31 v #13764 > > │ def method1() -> i32:                                                        │
00:12:31 v #13765 > > │     return 3                                                                 │
00:12:31 v #13766 > > │ def method2(v0 : i32, v1 : i32) -> i32:                                      │
00:12:31 v #13767 > > │     v2 = v1 + v0                                                             │
00:12:31 v #13768 > > │     del v0, v1                                                               │
00:12:31 v #13769 > > │     return v2                                                                │
00:12:31 v #13770 > > │ def method3(v0 : bool) -> bool:                                              │
00:12:31 v #13771 > > │     return v0                                                                │
00:12:31 v #13772 > > │ def method0() -> None:                                                       │
00:12:31 v #13773 > > │     v0 = method1()                                                           │
00:12:31 v #13774 > > │     v1 = 9                                                                   │
00:12:31 v #13775 > > │     v2 = method2(v0, v1)                                                     │
00:12:31 v #13776 > > │     del v0, v1                                                               │
00:12:31 v #13777 > > │     v3 = v2 + 2                                                              │
00:12:31 v #13778 > > │     del v2                                                                   │
00:12:31 v #13779 > > │     v4 = v3 + 1                                                              │
00:12:31 v #13780 > > │     del v3                                                                   │
00:12:31 v #13781 > > │     v5 = v4 == 15                                                            │
00:12:31 v #13782 > > │     if v5:                                                                   │
00:12:31 v #13783 > > │         v7 = True                                                            │
00:12:31 v #13784 > > │     else:                                                                    │
00:12:31 v #13785 > > │         v7 = method3(v5)                                                     │
00:12:31 v #13786 > > │     del v5                                                                   │
00:12:31 v #13787 > > │     v10 = "__assert_eq"                                                      │
00:12:31 v #13788 > > │     v11 = f"{v10} / actual: {v4} / expected: {15}"                           │
00:12:31 v #13789 > > │     del v4, v10                                                              │
00:12:31 v #13790 > > │     print(v11)                                                               │
00:12:31 v #13791 > > │     v17 = v7 == False                                                        │
00:12:31 v #13792 > > │     del v7                                                                   │
00:12:31 v #13793 > > │     if v17:                                                                  │
00:12:31 v #13794 > > │         del v17                                                              │
00:12:31 v #13795 > > │         raise Exception(v11)                                                 │
00:12:31 v #13796 > > │     else:                                                                    │
00:12:31 v #13797 > > │         del v11, v17                                                         │
00:12:31 v #13798 > > │         return                                                               │
00:12:31 v #13799 > > │ def main_body():                                                             │
00:12:31 v #13800 > > │     return method0()                                                         │
00:12:31 v #13801 > > │                                                                              │
00:12:31 v #13802 > > │ def main():                                                                  │
00:12:31 v #13803 > > │     r = main_body()                                                          │
00:12:31 v #13804 > > │     if cuda: cp.cuda.get_current_stream().synchronize() # This line is here  │
00:12:31 v #13805 > > │ so the `__trap()` calls on the kernel aren't missed.                         │
00:12:31 v #13806 > > │     return r                                                                 │
00:12:31 v #13807 > > │                                                                              │
00:12:31 v #13808 > > │ if __name__ == '__main__': result = main(); None if result is None else      │
00:12:31 v #13809 > > │ print(result)                                                                │
00:12:31 v #13810 > > │                                                                              │
00:12:31 v #13811 > > │                                                                              │
00:12:31 v #13812 > > │ .py:                                                                         │
00:12:31 v #13813 > > │ kernel = r"""                                                                │
00:12:31 v #13814 > > │ """                                                                          │
00:12:31 v #13815 > > │ class static_array():                                                        │
00:12:31 v #13816 > > │     def __init__(self, length):                                              │
00:12:31 v #13817 > > │         self.ptr = []                                                        │
00:12:31 v #13818 > > │         for _ in range(length):                                              │
00:12:31 v #13819 > > │             self.ptr.append(None)                                            │
00:12:31 v #13820 > > │                                                                              │
00:12:31 v #13821 > > │     def __getitem__(self, index):                                            │
00:12:31 v #13822 > > │         assert 0 <= index < len(self.ptr), "The get index needs to be in     │
00:12:31 v #13823 > > │ range."                                                                      │
00:12:31 v #13824 > > │         return self.ptr[index]                                               │
00:12:31 v #13825 > > │                                                                              │
00:12:31 v #13826 > > │     def __setitem__(self, index, value):                                     │
00:12:31 v #13827 > > │         assert 0 <= index < len(self.ptr), "The set index needs to be in     │
00:12:31 v #13828 > > │ range."                                                                      │
00:12:31 v #13829 > > │         self.ptr[index] = value                                              │
00:12:31 v #13830 > > │                                                                              │
00:12:31 v #13831 > > │ class static_array_list(static_array):                                       │
00:12:31 v #13832 > > │     def __init__(self, length):                                              │
00:12:31 v #13833 > > │         super().__init__(length)                                             │
00:12:31 v #13834 > > │         self.length = 0                                                      │
00:12:31 v #13835 > > │                                                                              │
00:12:31 v #13836 > > │     def __getitem__(self, index):                                            │
00:12:31 v #13837 > > │         assert 0 <= index < self.length, "The get index needs to be in       │
00:12:31 v #13838 > > │ range."                                                                      │
00:12:31 v #13839 > > │         return self.ptr[index]                                               │
00:12:31 v #13840 > > │                                                                              │
00:12:31 v #13841 > > │     def __setitem__(self, index, value):                                     │
00:12:31 v #13842 > > │         assert 0 <= index < self.length, "The set index needs to be in       │
00:12:31 v #13843 > > │ range."                                                                      │
00:12:31 v #13844 > > │         self.ptr[index] = value                                              │
00:12:31 v #13845 > > │                                                                              │
00:12:31 v #13846 > > │     def push(self,value):                                                    │
00:12:31 v #13847 > > │         assert (self.length < len(self.ptr)), "The length before pushing has │
00:12:31 v #13848 > > │ to be less than the maximum length of the array."                            │
00:12:31 v #13849 > > │         self.ptr[self.length] = value                                        │
00:12:31 v #13850 > > │         self.length += 1                                                     │
00:12:31 v #13851 > > │                                                                              │
00:12:31 v #13852 > > │     def pop(self):                                                           │
00:12:31 v #13853 > > │         assert (0 < self.length), "The length before popping has to be       │
00:12:31 v #13854 > > │ greater than 0."                                                             │
00:12:31 v #13855 > > │         self.length -= 1                                                     │
00:12:31 v #13856 > > │         return self.ptr[self.length]                                         │
00:12:31 v #13857 > > │                                                                              │
00:12:31 v #13858 > > │     def unsafe_set_length(self,i):                                           │
00:12:31 v #13859 > > │         assert 0 <= i <= len(self.ptr), "The new length has to be in range." │
00:12:31 v #13860 > > │         self.length = i                                                      │
00:12:31 v #13861 > > │                                                                              │
00:12:31 v #13862 > > │ class dynamic_array(static_array):                                           │
00:12:31 v #13863 > > │     pass                                                                     │
00:12:31 v #13864 > > │                                                                              │
00:12:31 v #13865 > > │ class dynamic_array_list(static_array_list):                                 │
00:12:31 v #13866 > > │     def length_(self): return self.length                                    │
00:12:31 v #13867 > > │                                                                              │
00:12:31 v #13868 > > │ import cupy as cp                                                            │
00:12:31 v #13869 > > │ import numpy as np                                                           │
00:12:31 v #13870 > > │ from dataclasses import dataclass                                            │
00:12:31 v #13871 > > │ from typing import NamedTuple, Union, Callable, Tuple                        │
00:12:31 v #13872 > > │ i8 = int; i16 = int; i32 = int; i64 = int; u8 = int; u16 = int; u32 = int;   │
00:12:31 v #13873 > > │ u64 = int; f32 = float; f64 = float; char = str; string = str                │
00:12:31 v #13874 > > │ cuda = False                                                                 │
00:12:31 v #13875 > > │                                                                              │
00:12:31 v #13876 > > │ def method1() -> i32:                                                        │
00:12:31 v #13877 > > │     return 3                                                                 │
00:12:31 v #13878 > > │ def method2(v0 : i32, v1 : i32) -> i32:                                      │
00:12:31 v #13879 > > │     v2 = v1 + v0                                                             │
00:12:31 v #13880 > > │     del v0, v1                                                               │
00:12:31 v #13881 > > │     return v2                                                                │
00:12:31 v #13882 > > │ def method3(v0 : bool) -> bool:                                              │
00:12:31 v #13883 > > │     return v0                                                                │
00:12:31 v #13884 > > │ def method0() -> None:                                                       │
00:12:31 v #13885 > > │     v0 = method1()                                                           │
00:12:31 v #13886 > > │     v1 = 9                                                                   │
00:12:31 v #13887 > > │     v2 = method2(v0, v1)                                                     │
00:12:31 v #13888 > > │     del v0, v1                                                               │
00:12:31 v #13889 > > │     v3 = v2 + 2                                                              │
00:12:31 v #13890 > > │     del v2                                                                   │
00:12:31 v #13891 > > │     v4 = v3 + 1                                                              │
00:12:31 v #13892 > > │     del v3                                                                   │
00:12:31 v #13893 > > │     v5 = v4 == 15                                                            │
00:12:31 v #13894 > > │     if v5:                                                                   │
00:12:31 v #13895 > > │         v7 = True                                                            │
00:12:31 v #13896 > > │     else:                                                                    │
00:12:31 v #13897 > > │         v7 = method3(v5)                                                     │
00:12:31 v #13898 > > │     del v5                                                                   │
00:12:31 v #13899 > > │     v10 = "__assert_eq"                                                      │
00:12:31 v #13900 > > │     v11 = f"{v10} / actual: {v4} / expected: {15}"                           │
00:12:31 v #13901 > > │     del v4, v10                                                              │
00:12:31 v #13902 > > │     print(v11)                                                               │
00:12:31 v #13903 > > │     v17 = v7 == False                                                        │
00:12:31 v #13904 > > │     del v7                                                                   │
00:12:31 v #13905 > > │     if v17:                                                                  │
00:12:31 v #13906 > > │         del v17                                                              │
00:12:31 v #13907 > > │         raise Exception(v11)                                                 │
00:12:31 v #13908 > > │     else:                                                                    │
00:12:31 v #13909 > > │         del v11, v17                                                         │
00:12:31 v #13910 > > │         return                                                               │
00:12:31 v #13911 > > │ def main_body():                                                             │
00:12:31 v #13912 > > │     return method0()                                                         │
00:12:31 v #13913 > > │                                                                              │
00:12:31 v #13914 > > │ def main():                                                                  │
00:12:31 v #13915 > > │     r = main_body()                                                          │
00:12:31 v #13916 > > │     if cuda: cp.cuda.get_current_stream().synchronize() # This line is here  │
00:12:31 v #13917 > > │ so the `__trap()` calls on the kernel aren't missed.                         │
00:12:31 v #13918 > > │     return r                                                                 │
00:12:31 v #13919 > > │                                                                              │
00:12:31 v #13920 > > │ if __name__ == '__main__': result = main(); None if result is None else      │
00:12:31 v #13921 > > │ print(result)                                                                │
00:12:31 v #13922 > > │                                                                              │
00:12:31 v #13923 > > │ .fsx output:                                                                 │
00:12:31 v #13924 > > │ __assert_eq / actual: 15 / expected: 15                                      │
00:12:31 v #13925 > > │                                                                              │
00:12:31 v #13926 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:12:31 v #13927 > >
00:12:31 v #13928 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:31 v #13929 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:12:31 v #13930 > > │ ### join_body_unit                                                           │
00:12:31 v #13931 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:12:31 v #13932 > >
00:12:31 v #13933 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:31 v #13934 > > inl join_body_unit body d x =
00:12:31 v #13935 > >     if var_is d |> not
00:12:31 v #13936 > >     then body x
00:12:31 v #13937 > >     else
00:12:31 v #13938 > >         inl x = dyn x
00:12:31 v #13939 > >         join body x
00:12:32 v #13940 > >
00:12:32 v #13941 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:32 v #13942 > > //// test
00:12:32 v #13943 > > ///! fsharp
00:12:32 v #13944 > > ///! cuda
00:12:32 v #13945 > > ///! rust
00:12:32 v #13946 > > ///! typescript
00:12:32 v #13947 > > ///! python
00:12:32 v #13948 > > //// print_code=true
00:12:32 v #13949 > >
00:12:32 v #13950 > > [[ 5i32; 4; join 3; 2; 1 ]]
00:12:32 v #13951 > > |> fold_list (fun acc n => join_body_unit ((+) acc) n n) 0
00:12:32 v #13952 > > |> _assert_eq 15
00:12:35 v #13953 > >
00:12:35 v #13954 > > ╭─[ 3.73s - return value ]─────────────────────────────────────────────────────╮
00:12:35 v #13955 > > │ .py output (Cuda):                                                           │
00:12:35 v #13956 > > │ __assert_eq / actual: 15 / expected: 15                                      │
00:12:35 v #13957 > > │                                                                              │
00:12:35 v #13958 > > │ .rs output:                                                                  │
00:12:35 v #13959 > > │ __assert_eq / actual: 15 / expected: 15                                      │
00:12:35 v #13960 > > │                                                                              │
00:12:35 v #13961 > > │ .ts output:                                                                  │
00:12:35 v #13962 > > │ __assert_eq / actual: 15 / expected: 15                                      │
00:12:35 v #13963 > > │                                                                              │
00:12:35 v #13964 > > │ .py output:                                                                  │
00:12:35 v #13965 > > │ __assert_eq / actual: 15 / expected: 15                                      │
00:12:35 v #13966 > > │                                                                              │
00:12:35 v #13967 > > │                                                                              │
00:12:35 v #13968 > > │                                                                              │
00:12:35 v #13969 > > │                                                                              │
00:12:35 v #13970 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:12:35 v #13971 > >
00:12:35 v #13972 > > ╭─[ 3.74s - stdout ]───────────────────────────────────────────────────────────╮
00:12:35 v #13973 > > │ .fsx:                                                                        │
00:12:35 v #13974 > > │ let rec method1 () : int32 =                                                 │
00:12:35 v #13975 > > │     3                                                                        │
00:12:35 v #13976 > > │ and method2 (v0 : int32) : int32 =                                           │
00:12:35 v #13977 > > │     let v1 : int32 = 9 + v0                                                  │
00:12:35 v #13978 > > │     v1                                                                       │
00:12:35 v #13979 > > │ and method3 (v0 : bool) : bool =                                             │
00:12:35 v #13980 > > │     v0                                                                       │
00:12:35 v #13981 > > │ and closure0 (v0 : string) () : unit =                                       │
00:12:35 v #13982 > > │     let v1 : (string -> unit) = System.Console.WriteLine                     │
00:12:35 v #13983 > > │     v1 v0                                                                    │
00:12:35 v #13984 > > │ and method0 () : unit =                                                      │
00:12:35 v #13985 > > │     let v0 : int32 = method1()                                               │
00:12:35 v #13986 > > │     let v1 : int32 = method2(v0)                                             │
00:12:35 v #13987 > > │     let v2 : int32 = v1 + 2                                                  │
00:12:35 v #13988 > > │     let v3 : int32 = v2 + 1                                                  │
00:12:35 v #13989 > > │     let v4 : bool = v3 = 15                                                  │
00:12:35 v #13990 > > │     let v6 : bool =                                                          │
00:12:35 v #13991 > > │         if v4 then                                                           │
00:12:35 v #13992 > > │             true                                                             │
00:12:35 v #13993 > > │         else                                                                 │
00:12:35 v #13994 > > │             method3(v4)                                                      │
00:12:35 v #13995 > > │     let v7 : string = "__assert_eq"                                          │
00:12:35 v #13996 > > │     let v8 : string = $"{v7} / actual: %A{v3} / expected: %A{15}"            │
00:12:35 v #13997 > > │     let v11 : unit = ()                                                      │
00:12:35 v #13998 > > │     let v12 : (unit -> unit) = closure0(v8)                                  │
00:12:35 v #13999 > > │     let v13 : unit = (fun () -> v12 (); v11) ()                              │
00:12:35 v #14000 > > │     let v15 : bool = v6 = false                                              │
00:12:35 v #14001 > > │     if v15 then                                                              │
00:12:35 v #14002 > > │         failwith<unit> v8                                                    │
00:12:35 v #14003 > > │ method0()                                                                    │
00:12:35 v #14004 > > │                                                                              │
00:12:35 v #14005 > > │                                                                              │
00:12:35 v #14006 > > │ .rs:                                                                         │
00:12:35 v #14007 > > │ #![allow(dead_code)]                                                         │
00:12:35 v #14008 > > │ #![allow(non_camel_case_types)]                                              │
00:12:35 v #14009 > > │ #![allow(non_snake_case)]                                                    │
00:12:35 v #14010 > > │ #![allow(non_upper_case_globals)]                                            │
00:12:35 v #14011 > > │ #![allow(unreachable_code)]                                                  │
00:12:35 v #14012 > > │ #![allow(unused_attributes)]                                                 │
00:12:35 v #14013 > > │ #![allow(unused_imports)]                                                    │
00:12:35 v #14014 > > │ #![allow(unused_macros)]                                                     │
00:12:35 v #14015 > > │ #![allow(unused_parens)]                                                     │
00:12:35 v #14016 > > │ #![allow(unused_variables)]                                                  │
00:12:35 v #14017 > > │ mod module_e782e7b7 {                                                        │
00:12:35 v #14018 > > │     pub mod Spiral_builder {                                                 │
00:12:35 v #14019 > > │         use super::*;                                                        │
00:12:35 v #14020 > > │         use fable_library_rust::Native_::on_startup;                         │
00:12:35 v #14021 > > │         use fable_library_rust::String_::printfn;                            │
00:12:35 v #14022 > > │         use fable_library_rust::String_::sprintf;                            │
00:12:35 v #14023 > > │         use fable_library_rust::String_::string;                             │
00:12:35 v #14024 > > │         pub fn method1() -> i32 {                                            │
00:12:35 v #14025 > > │             3_i32                                                            │
00:12:35 v #14026 > > │         }                                                                    │
00:12:35 v #14027 > > │         pub fn method2(v0: i32) -> i32 {                                     │
00:12:35 v #14028 > > │             9_i32 + v0                                                       │
00:12:35 v #14029 > > │         }                                                                    │
00:12:35 v #14030 > > │         pub fn method3(v0: bool) -> bool {                                   │
00:12:35 v #14031 > > │             v0                                                               │
00:12:35 v #14032 > > │         }                                                                    │
00:12:35 v #14033 > > │         pub fn closure0(v0: string, unitVar: ()) {                           │
00:12:35 v #14034 > > │             printfn!("{0}", v0);                                             │
00:12:35 v #14035 > > │         }                                                                    │
00:12:35 v #14036 > > │         pub fn method0() {                                                   │
00:12:35 v #14037 > > │             let v3: i32 = Spiral_builder::method2(Spiral_builder::method1()) │
00:12:35 v #14038 > > │ + 2_i32 + 1_i32;                                                             │
00:12:35 v #14039 > > │             let v4: bool = v3 == 15_i32;                                     │
00:12:35 v #14040 > > │             let v6: bool = if v4 {                                           │
00:12:35 v #14041 > > │                 true                                                         │
00:12:35 v #14042 > > │             } else {                                                         │
00:12:35 v #14043 > > │                 Spiral_builder::method3(v4)                                  │
00:12:35 v #14044 > > │             };                                                               │
00:12:35 v #14045 > > │             let v8: string = sprintf!(                                       │
00:12:35 v #14046 > > │                 "{} / actual: {:?} / expected: {:?}",                        │
00:12:35 v #14047 > > │                 string("__assert_eq"),                                       │
00:12:35 v #14048 > > │                 v3,                                                          │
00:12:35 v #14049 > > │                 15_i32                                                       │
00:12:35 v #14050 > > │             );                                                               │
00:12:35 v #14051 > > │             let v13: () = {                                                  │
00:12:35 v #14052 > > │                 Spiral_builder::closure0(v8.clone(), ());                    │
00:12:35 v #14053 > > │                 ()                                                           │
00:12:35 v #14054 > > │             };                                                               │
00:12:35 v #14055 > > │             if v6 == false {                                                 │
00:12:35 v #14056 > > │                 panic!("{}", v8,);                                           │
00:12:35 v #14057 > > │             }                                                                │
00:12:35 v #14058 > > │         }                                                                    │
00:12:35 v #14059 > > │         // on_startup!(Spiral_builder::method0());                           │
00:12:35 v #14060 > > │     }                                                                        │
00:12:35 v #14061 > > │ }                                                                            │
00:12:35 v #14062 > > │ pub use module_e782e7b7::*;                                                  │
00:12:35 v #14063 > > │                                                                              │
00:12:35 v #14064 > > │ pub fn main() -> Result<(), String> {                                        │
00:12:35 v #14065 > > │     Ok(Spiral_builder::method0())                                            │
00:12:35 v #14066 > > │ }                                                                            │
00:12:35 v #14067 > > │                                                                              │
00:12:35 v #14068 > > │ .ts:                                                                         │
00:12:35 v #14069 > > │ import { int32 } from "./fable_modules/fable-library-ts.4.21.0/Int32.js";    │
00:12:35 v #14070 > > │ import { interpolate, toText } from                                          │
00:12:35 v #14071 > > │ "./fable_modules/fable-library-ts.4.21.0/String.js";                         │
00:12:35 v #14072 > > │                                                                              │
00:12:35 v #14073 > > │ export function method1(): int32 {                                           │
00:12:35 v #14074 > > │     return 3;                                                                │
00:12:35 v #14075 > > │ }                                                                            │
00:12:35 v #14076 > > │                                                                              │
00:12:35 v #14077 > > │ export function method2(v0: int32): int32 {                                  │
00:12:35 v #14078 > > │     return 9 + v0;                                                           │
00:12:35 v #14079 > > │ }                                                                            │
00:12:35 v #14080 > > │                                                                              │
00:12:35 v #14081 > > │ export function method3(v0: boolean): boolean {                              │
00:12:35 v #14082 > > │     return v0;                                                               │
00:12:35 v #14083 > > │ }                                                                            │
00:12:35 v #14084 > > │                                                                              │
00:12:35 v #14085 > > │ export function closure0(v0: string, unitVar: void): void {                  │
00:12:35 v #14086 > > │     console.log(v0);                                                         │
00:12:35 v #14087 > > │ }                                                                            │
00:12:35 v #14088 > > │                                                                              │
00:12:35 v #14089 > > │ export function method0(): void {                                            │
00:12:35 v #14090 > > │     const v3: int32 = ((method2(method1()) + 2) + 1) | 0;                    │
00:12:35 v #14091 > > │     const v4: boolean = v3 === 15;                                           │
00:12:35 v #14092 > > │     const v6: boolean = v4 ? true : method3(v4);                             │
00:12:35 v #14093 > > │     const v8: string = toText(interpolate("%P() / actual: %A%P() / expected: │
00:12:35 v #14094 > > │ %A%P()", ["__assert_eq", v3, 15]));                                          │
00:12:35 v #14095 > > │     let v13: any;                                                            │
00:12:35 v #14096 > > │     closure0(v8, undefined);                                                 │
00:12:35 v #14097 > > │     v13 = undefined;                                                         │
00:12:35 v #14098 > > │     if (v6 === false) {                                                      │
00:12:35 v #14099 > > │         throw new Error(v8);                                                 │
00:12:35 v #14100 > > │     }                                                                        │
00:12:35 v #14101 > > │ }                                                                            │
00:12:35 v #14102 > > │                                                                              │
00:12:35 v #14103 > > │ method0();                                                                   │
00:12:35 v #14104 > > │                                                                              │
00:12:35 v #14105 > > │                                                                              │
00:12:35 v #14106 > > │                                                                              │
00:12:35 v #14107 > > │ // spiral_builder.process_typescript                                         │
00:12:35 v #14108 > > │                                                                              │
00:12:35 v #14109 > > │ .py:                                                                         │
00:12:35 v #14110 > > │ from fable_modules.fable_library.string_ import (to_text, interpolate)       │
00:12:35 v #14111 > > │                                                                              │
00:12:35 v #14112 > > │ def method1(__unit: None=None) -> int:                                       │
00:12:35 v #14113 > > │     return 3                                                                 │
00:12:35 v #14114 > > │                                                                              │
00:12:35 v #14115 > > │                                                                              │
00:12:35 v #14116 > > │ def method2(v0: int) -> int:                                                 │
00:12:35 v #14117 > > │     return 9 + v0                                                            │
00:12:35 v #14118 > > │                                                                              │
00:12:35 v #14119 > > │                                                                              │
00:12:35 v #14120 > > │ def method3(v0: bool) -> bool:                                               │
00:12:35 v #14121 > > │     return v0                                                                │
00:12:35 v #14122 > > │                                                                              │
00:12:35 v #14123 > > │                                                                              │
00:12:35 v #14124 > > │ def closure0(v0: str, unit_var: None) -> None:                               │
00:12:35 v #14125 > > │     print(v0)                                                                │
00:12:35 v #14126 > > │                                                                              │
00:12:35 v #14127 > > │                                                                              │
00:12:35 v #14128 > > │ def method0(__unit: None=None) -> None:                                      │
00:12:35 v #14129 > > │     v3: int = ((method2(method1()) + 2) + 1) or 0                            │
00:12:35 v #14130 > > │     v4: bool = v3 == 15                                                      │
00:12:35 v #14131 > > │     v6: bool = True if v4 else method3(v4)                                   │
00:12:35 v #14132 > > │     v8: str = to_text(interpolate("%P() / actual: %A%P() / expected:         │
00:12:35 v #14133 > > │ %A%P()", ["__assert_eq", v3, 15]))                                           │
00:12:35 v #14134 > > │     v13: None                                                                │
00:12:35 v #14135 > > │     closure0(v8, None)                                                       │
00:12:35 v #14136 > > │     v13 = None                                                               │
00:12:35 v #14137 > > │     if v6 == False:                                                          │
00:12:35 v #14138 > > │         raise Exception(v8)                                                  │
00:12:35 v #14139 > > │                                                                              │
00:12:35 v #14140 > > │                                                                              │
00:12:35 v #14141 > > │                                                                              │
00:12:35 v #14142 > > │ method0()                                                                    │
00:12:35 v #14143 > > │                                                                              │
00:12:35 v #14144 > > │                                                                              │
00:12:35 v #14145 > > │                                                                              │
00:12:35 v #14146 > > │ # spiral_builder.process_python                                              │
00:12:35 v #14147 > > │                                                                              │
00:12:35 v #14148 > > │ .py:                                                                         │
00:12:35 v #14149 > > │ kernel = r"""                                                                │
00:12:35 v #14150 > > │ """                                                                          │
00:12:35 v #14151 > > │ class static_array():                                                        │
00:12:35 v #14152 > > │     def __init__(self, length):                                              │
00:12:35 v #14153 > > │         self.ptr = []                                                        │
00:12:35 v #14154 > > │         for _ in range(length):                                              │
00:12:35 v #14155 > > │             self.ptr.append(None)                                            │
00:12:35 v #14156 > > │                                                                              │
00:12:35 v #14157 > > │     def __getitem__(self, index):                                            │
00:12:35 v #14158 > > │         assert 0 <= index < len(self.ptr), "The get index needs to be in     │
00:12:35 v #14159 > > │ range."                                                                      │
00:12:35 v #14160 > > │         return self.ptr[index]                                               │
00:12:35 v #14161 > > │                                                                              │
00:12:35 v #14162 > > │     def __setitem__(self, index, value):                                     │
00:12:35 v #14163 > > │         assert 0 <= index < len(self.ptr), "The set index needs to be in     │
00:12:35 v #14164 > > │ range."                                                                      │
00:12:35 v #14165 > > │         self.ptr[index] = value                                              │
00:12:35 v #14166 > > │                                                                              │
00:12:35 v #14167 > > │ class static_array_list(static_array):                                       │
00:12:35 v #14168 > > │     def __init__(self, length):                                              │
00:12:35 v #14169 > > │         super().__init__(length)                                             │
00:12:35 v #14170 > > │         self.length = 0                                                      │
00:12:35 v #14171 > > │                                                                              │
00:12:35 v #14172 > > │     def __getitem__(self, index):                                            │
00:12:35 v #14173 > > │         assert 0 <= index < self.length, "The get index needs to be in       │
00:12:35 v #14174 > > │ range."                                                                      │
00:12:35 v #14175 > > │         return self.ptr[index]                                               │
00:12:35 v #14176 > > │                                                                              │
00:12:35 v #14177 > > │     def __setitem__(self, index, value):                                     │
00:12:35 v #14178 > > │         assert 0 <= index < self.length, "The set index needs to be in       │
00:12:35 v #14179 > > │ range."                                                                      │
00:12:35 v #14180 > > │         self.ptr[index] = value                                              │
00:12:35 v #14181 > > │                                                                              │
00:12:35 v #14182 > > │     def push(self,value):                                                    │
00:12:35 v #14183 > > │         assert (self.length < len(self.ptr)), "The length before pushing has │
00:12:35 v #14184 > > │ to be less than the maximum length of the array."                            │
00:12:35 v #14185 > > │         self.ptr[self.length] = value                                        │
00:12:35 v #14186 > > │         self.length += 1                                                     │
00:12:35 v #14187 > > │                                                                              │
00:12:35 v #14188 > > │     def pop(self):                                                           │
00:12:35 v #14189 > > │         assert (0 < self.length), "The length before popping has to be       │
00:12:35 v #14190 > > │ greater than 0."                                                             │
00:12:35 v #14191 > > │         self.length -= 1                                                     │
00:12:35 v #14192 > > │         return self.ptr[self.length]                                         │
00:12:35 v #14193 > > │                                                                              │
00:12:35 v #14194 > > │     def unsafe_set_length(self,i):                                           │
00:12:35 v #14195 > > │         assert 0 <= i <= len(self.ptr), "The new length has to be in range." │
00:12:35 v #14196 > > │         self.length = i                                                      │
00:12:35 v #14197 > > │                                                                              │
00:12:35 v #14198 > > │ class dynamic_array(static_array):                                           │
00:12:35 v #14199 > > │     pass                                                                     │
00:12:35 v #14200 > > │                                                                              │
00:12:35 v #14201 > > │ class dynamic_array_list(static_array_list):                                 │
00:12:35 v #14202 > > │     def length_(self): return self.length                                    │
00:12:35 v #14203 > > │                                                                              │
00:12:35 v #14204 > > │ import cupy as cp                                                            │
00:12:35 v #14205 > > │ import numpy as np                                                           │
00:12:35 v #14206 > > │ from dataclasses import dataclass                                            │
00:12:35 v #14207 > > │ from typing import NamedTuple, Union, Callable, Tuple                        │
00:12:35 v #14208 > > │ i8 = int; i16 = int; i32 = int; i64 = int; u8 = int; u16 = int; u32 = int;   │
00:12:35 v #14209 > > │ u64 = int; f32 = float; f64 = float; char = str; string = str                │
00:12:35 v #14210 > > │ cuda = False                                                                 │
00:12:35 v #14211 > > │                                                                              │
00:12:35 v #14212 > > │ def method1() -> i32:                                                        │
00:12:35 v #14213 > > │     return 3                                                                 │
00:12:35 v #14214 > > │ def method2(v0 : i32) -> i32:                                                │
00:12:35 v #14215 > > │     v1 = 9 + v0                                                              │
00:12:35 v #14216 > > │     del v0                                                                   │
00:12:35 v #14217 > > │     return v1                                                                │
00:12:35 v #14218 > > │ def method3(v0 : bool) -> bool:                                              │
00:12:35 v #14219 > > │     return v0                                                                │
00:12:35 v #14220 > > │ def method0() -> None:                                                       │
00:12:35 v #14221 > > │     v0 = method1()                                                           │
00:12:35 v #14222 > > │     v1 = method2(v0)                                                         │
00:12:35 v #14223 > > │     del v0                                                                   │
00:12:35 v #14224 > > │     v2 = v1 + 2                                                              │
00:12:35 v #14225 > > │     del v1                                                                   │
00:12:35 v #14226 > > │     v3 = v2 + 1                                                              │
00:12:35 v #14227 > > │     del v2                                                                   │
00:12:35 v #14228 > > │     v4 = v3 == 15                                                            │
00:12:35 v #14229 > > │     if v4:                                                                   │
00:12:35 v #14230 > > │         v6 = True                                                            │
00:12:35 v #14231 > > │     else:                                                                    │
00:12:35 v #14232 > > │         v6 = method3(v4)                                                     │
00:12:35 v #14233 > > │     del v4                                                                   │
00:12:35 v #14234 > > │     v9 = "__assert_eq"                                                       │
00:12:35 v #14235 > > │     v10 = f"{v9} / actual: {v3} / expected: {15}"                            │
00:12:35 v #14236 > > │     del v3, v9                                                               │
00:12:35 v #14237 > > │     print(v10)                                                               │
00:12:35 v #14238 > > │     v16 = v6 == False                                                        │
00:12:35 v #14239 > > │     del v6                                                                   │
00:12:35 v #14240 > > │     if v16:                                                                  │
00:12:35 v #14241 > > │         del v16                                                              │
00:12:35 v #14242 > > │         raise Exception(v10)                                                 │
00:12:35 v #14243 > > │     else:                                                                    │
00:12:35 v #14244 > > │         del v10, v16                                                         │
00:12:35 v #14245 > > │         return                                                               │
00:12:35 v #14246 > > │ def main_body():                                                             │
00:12:35 v #14247 > > │     return method0()                                                         │
00:12:35 v #14248 > > │                                                                              │
00:12:35 v #14249 > > │ def main():                                                                  │
00:12:35 v #14250 > > │     r = main_body()                                                          │
00:12:35 v #14251 > > │     if cuda: cp.cuda.get_current_stream().synchronize() # This line is here  │
00:12:35 v #14252 > > │ so the `__trap()` calls on the kernel aren't missed.                         │
00:12:35 v #14253 > > │     return r                                                                 │
00:12:35 v #14254 > > │                                                                              │
00:12:35 v #14255 > > │ if __name__ == '__main__': result = main(); None if result is None else      │
00:12:35 v #14256 > > │ print(result)                                                                │
00:12:35 v #14257 > > │                                                                              │
00:12:35 v #14258 > > │                                                                              │
00:12:35 v #14259 > > │ .py:                                                                         │
00:12:35 v #14260 > > │ kernel = r"""                                                                │
00:12:35 v #14261 > > │ """                                                                          │
00:12:35 v #14262 > > │ class static_array():                                                        │
00:12:35 v #14263 > > │     def __init__(self, length):                                              │
00:12:35 v #14264 > > │         self.ptr = []                                                        │
00:12:35 v #14265 > > │         for _ in range(length):                                              │
00:12:35 v #14266 > > │             self.ptr.append(None)                                            │
00:12:35 v #14267 > > │                                                                              │
00:12:35 v #14268 > > │     def __getitem__(self, index):                                            │
00:12:35 v #14269 > > │         assert 0 <= index < len(self.ptr), "The get index needs to be in     │
00:12:35 v #14270 > > │ range."                                                                      │
00:12:35 v #14271 > > │         return self.ptr[index]                                               │
00:12:35 v #14272 > > │                                                                              │
00:12:35 v #14273 > > │     def __setitem__(self, index, value):                                     │
00:12:35 v #14274 > > │         assert 0 <= index < len(self.ptr), "The set index needs to be in     │
00:12:35 v #14275 > > │ range."                                                                      │
00:12:35 v #14276 > > │         self.ptr[index] = value                                              │
00:12:35 v #14277 > > │                                                                              │
00:12:35 v #14278 > > │ class static_array_list(static_array):                                       │
00:12:35 v #14279 > > │     def __init__(self, length):                                              │
00:12:35 v #14280 > > │         super().__init__(length)                                             │
00:12:35 v #14281 > > │         self.length = 0                                                      │
00:12:35 v #14282 > > │                                                                              │
00:12:35 v #14283 > > │     def __getitem__(self, index):                                            │
00:12:35 v #14284 > > │         assert 0 <= index < self.length, "The get index needs to be in       │
00:12:35 v #14285 > > │ range."                                                                      │
00:12:35 v #14286 > > │         return self.ptr[index]                                               │
00:12:35 v #14287 > > │                                                                              │
00:12:35 v #14288 > > │     def __setitem__(self, index, value):                                     │
00:12:35 v #14289 > > │         assert 0 <= index < self.length, "The set index needs to be in       │
00:12:35 v #14290 > > │ range."                                                                      │
00:12:35 v #14291 > > │         self.ptr[index] = value                                              │
00:12:35 v #14292 > > │                                                                              │
00:12:35 v #14293 > > │     def push(self,value):                                                    │
00:12:35 v #14294 > > │         assert (self.length < len(self.ptr)), "The length before pushing has │
00:12:35 v #14295 > > │ to be less than the maximum length of the array."                            │
00:12:35 v #14296 > > │         self.ptr[self.length] = value                                        │
00:12:35 v #14297 > > │         self.length += 1                                                     │
00:12:35 v #14298 > > │                                                                              │
00:12:35 v #14299 > > │     def pop(self):                                                           │
00:12:35 v #14300 > > │         assert (0 < self.length), "The length before popping has to be       │
00:12:35 v #14301 > > │ greater than 0."                                                             │
00:12:35 v #14302 > > │         self.length -= 1                                                     │
00:12:35 v #14303 > > │         return self.ptr[self.length]                                         │
00:12:35 v #14304 > > │                                                                              │
00:12:35 v #14305 > > │     def unsafe_set_length(self,i):                                           │
00:12:35 v #14306 > > │         assert 0 <= i <= len(self.ptr), "The new length has to be in range." │
00:12:35 v #14307 > > │         self.length = i                                                      │
00:12:35 v #14308 > > │                                                                              │
00:12:35 v #14309 > > │ class dynamic_array(static_array):                                           │
00:12:35 v #14310 > > │     pass                                                                     │
00:12:35 v #14311 > > │                                                                              │
00:12:35 v #14312 > > │ class dynamic_array_list(static_array_list):                                 │
00:12:35 v #14313 > > │     def length_(self): return self.length                                    │
00:12:35 v #14314 > > │                                                                              │
00:12:35 v #14315 > > │ import cupy as cp                                                            │
00:12:35 v #14316 > > │ import numpy as np                                                           │
00:12:35 v #14317 > > │ from dataclasses import dataclass                                            │
00:12:35 v #14318 > > │ from typing import NamedTuple, Union, Callable, Tuple                        │
00:12:35 v #14319 > > │ i8 = int; i16 = int; i32 = int; i64 = int; u8 = int; u16 = int; u32 = int;   │
00:12:35 v #14320 > > │ u64 = int; f32 = float; f64 = float; char = str; string = str                │
00:12:35 v #14321 > > │ cuda = False                                                                 │
00:12:35 v #14322 > > │                                                                              │
00:12:35 v #14323 > > │ def method1() -> i32:                                                        │
00:12:35 v #14324 > > │     return 3                                                                 │
00:12:35 v #14325 > > │ def method2(v0 : i32) -> i32:                                                │
00:12:35 v #14326 > > │     v1 = 9 + v0                                                              │
00:12:35 v #14327 > > │     del v0                                                                   │
00:12:35 v #14328 > > │     return v1                                                                │
00:12:35 v #14329 > > │ def method3(v0 : bool) -> bool:                                              │
00:12:35 v #14330 > > │     return v0                                                                │
00:12:35 v #14331 > > │ def method0() -> None:                                                       │
00:12:35 v #14332 > > │     v0 = method1()                                                           │
00:12:35 v #14333 > > │     v1 = method2(v0)                                                         │
00:12:35 v #14334 > > │     del v0                                                                   │
00:12:35 v #14335 > > │     v2 = v1 + 2                                                              │
00:12:35 v #14336 > > │     del v1                                                                   │
00:12:35 v #14337 > > │     v3 = v2 + 1                                                              │
00:12:35 v #14338 > > │     del v2                                                                   │
00:12:35 v #14339 > > │     v4 = v3 == 15                                                            │
00:12:35 v #14340 > > │     if v4:                                                                   │
00:12:35 v #14341 > > │         v6 = True                                                            │
00:12:35 v #14342 > > │     else:                                                                    │
00:12:35 v #14343 > > │         v6 = method3(v4)                                                     │
00:12:35 v #14344 > > │     del v4                                                                   │
00:12:35 v #14345 > > │     v9 = "__assert_eq"                                                       │
00:12:35 v #14346 > > │     v10 = f"{v9} / actual: {v3} / expected: {15}"                            │
00:12:35 v #14347 > > │     del v3, v9                                                               │
00:12:35 v #14348 > > │     print(v10)                                                               │
00:12:35 v #14349 > > │     v16 = v6 == False                                                        │
00:12:35 v #14350 > > │     del v6                                                                   │
00:12:35 v #14351 > > │     if v16:                                                                  │
00:12:35 v #14352 > > │         del v16                                                              │
00:12:35 v #14353 > > │         raise Exception(v10)                                                 │
00:12:35 v #14354 > > │     else:                                                                    │
00:12:35 v #14355 > > │         del v10, v16                                                         │
00:12:35 v #14356 > > │         return                                                               │
00:12:35 v #14357 > > │ def main_body():                                                             │
00:12:35 v #14358 > > │     return method0()                                                         │
00:12:35 v #14359 > > │                                                                              │
00:12:35 v #14360 > > │ def main():                                                                  │
00:12:35 v #14361 > > │     r = main_body()                                                          │
00:12:35 v #14362 > > │     if cuda: cp.cuda.get_current_stream().synchronize() # This line is here  │
00:12:35 v #14363 > > │ so the `__trap()` calls on the kernel aren't missed.                         │
00:12:35 v #14364 > > │     return r                                                                 │
00:12:35 v #14365 > > │                                                                              │
00:12:35 v #14366 > > │ if __name__ == '__main__': result = main(); None if result is None else      │
00:12:35 v #14367 > > │ print(result)                                                                │
00:12:35 v #14368 > > │                                                                              │
00:12:35 v #14369 > > │ .fsx output:                                                                 │
00:12:35 v #14370 > > │ __assert_eq / actual: 15 / expected: 15                                      │
00:12:35 v #14371 > > │                                                                              │
00:12:35 v #14372 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:12:35 v #14373 > >
00:12:35 v #14374 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:35 v #14375 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:12:35 v #14376 > > │ ### retry_fn'                                                                │
00:12:35 v #14377 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:12:35 v #14378 > >
00:12:35 v #14379 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:35 v #14380 > > inl retry_fn' retries fn =
00:12:35 v #14381 > >     let rec loop retry =
00:12:35 v #14382 > >         inl is_error, result =
00:12:35 v #14383 > >             match fn () with
00:12:35 v #14384 > >             | Ok x => false, x
00:12:35 v #14385 > >             | Error x => true, x
00:12:35 v #14386 > >         if not is_error || retry >= retries
00:12:35 v #14387 > >         then result
00:12:35 v #14388 > >         else
00:12:35 v #14389 > >             trace Debug
00:12:35 v #14390 > >                 fun () => "common.retry_fn\' / loop"
00:12:35 v #14391 > >                 fun () => { is_error retry = $'$"{!retry}/{!retries}"' : string;
00:12:35 v #14392 > > result }
00:12:35 v #14393 > >             loop (retry + 1)
00:12:35 v #14394 > >     loop 1
00:12:36 v #14395 > >
00:12:36 v #14396 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:36 v #14397 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:12:36 v #14398 > > │ ## fsharp                                                                    │
00:12:36 v #14399 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:12:36 v #14400 > >
00:12:36 v #14401 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:36 v #14402 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:12:36 v #14403 > > │ ### upcast                                                                   │
00:12:36 v #14404 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:12:36 v #14405 > >
00:12:36 v #14406 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:36 v #14407 > > inl upcast forall t u. (x : t) : u =
00:12:36 v #14408 > >     $'!x :> `u '
00:12:36 v #14409 > >
00:12:36 v #14410 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:36 v #14411 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:12:36 v #14412 > > │ ### downcast                                                                 │
00:12:36 v #14413 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:12:36 v #14414 > >
00:12:36 v #14415 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:36 v #14416 > > inl downcast forall t u. (x : t) : u =
00:12:36 v #14417 > >     $'!x :?> `u '
00:12:37 v #14418 > >
00:12:37 v #14419 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:37 v #14420 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:12:37 v #14421 > > │ ### random                                                                   │
00:12:37 v #14422 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:12:37 v #14423 > >
00:12:37 v #14424 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:37 v #14425 > > nominal random = $'System.Random'
00:12:37 v #14426 > >
00:12:37 v #14427 > > inl random () : random =
00:12:37 v #14428 > >     $'`random ' ()
00:12:37 v #14429 > >
00:12:37 v #14430 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:37 v #14431 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:12:37 v #14432 > > │ ### random_next                                                              │
00:12:37 v #14433 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:12:37 v #14434 > >
00:12:37 v #14435 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:37 v #14436 > > inl random_next (min : i32) (max : i32) (random : random) : i32 =
00:12:37 v #14437 > >     $'!random.Next (!min, !max)'
00:12:37 v #14438 > >
00:12:37 v #14439 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:37 v #14440 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:12:37 v #14441 > > │ ### disposable                                                               │
00:12:37 v #14442 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:12:37 v #14443 > >
00:12:37 v #14444 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:37 v #14445 > > nominal disposable t = $"backend_switch `({ Fsharp : $'System.IDisposable';
00:12:37 v #14446 > > Python : $'object' })"
00:12:38 v #14447 > >
00:12:38 v #14448 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:38 v #14449 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:12:38 v #14450 > > │ ### dispose                                                                  │
00:12:38 v #14451 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:12:38 v #14452 > >
00:12:38 v #14453 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:38 v #14454 > > inl dispose (disposable : disposable _) : () =
00:12:38 v #14455 > >     backend_switch {
00:12:38 v #14456 > >         Fsharp = fun () => disposable |> $'_.Dispose()' : ()
00:12:38 v #14457 > >         Python = fun () => $'!disposable.__exit__(None, None, None)' : ()
00:12:38 v #14458 > >     }
00:12:38 v #14459 > >
00:12:38 v #14460 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:38 v #14461 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:12:38 v #14462 > > │ ### yield                                                                    │
00:12:38 v #14463 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:12:38 v #14464 > >
00:12:38 v #14465 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:38 v #14466 > > inl yield forall t. (x : t) : () =
00:12:38 v #14467 > >     $'yield !x '
00:12:39 v #14468 > >
00:12:39 v #14469 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:39 v #14470 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:12:39 v #14471 > > │ ### return                                                                   │
00:12:39 v #14472 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:12:39 v #14473 > >
00:12:39 v #14474 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:39 v #14475 > > inl return forall t. (x : t) : () =
00:12:39 v #14476 > >     $'return !x '
00:12:39 v #14477 > >
00:12:39 v #14478 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:39 v #14479 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:12:39 v #14480 > > │ ### return'                                                                  │
00:12:39 v #14481 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:12:39 v #14482 > >
00:12:39 v #14483 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:39 v #14484 > > inl return' forall t. (x : t) : t =
00:12:39 v #14485 > >     $'return !x '
00:12:39 v #14486 > >
00:12:39 v #14487 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:39 v #14488 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:12:39 v #14489 > > │ ### retry_fn                                                                 │
00:12:39 v #14490 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:12:39 v #14491 > >
00:12:39 v #14492 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:39 v #14493 > > inl retry_fn forall t. retries (fn : () -> t) : option t =
00:12:39 v #14494 > >     let rec loop retry =
00:12:39 v #14495 > >         try
00:12:39 v #14496 > >             fun () =>
00:12:39 v #14497 > >                 if retry < retries
00:12:39 v #14498 > >                 then fn () |> Some
00:12:39 v #14499 > >                 else None
00:12:39 v #14500 > >             fun ex =>
00:12:39 v #14501 > >                 trace Warning
00:12:39 v #14502 > >                     fun () => "common.retry_fn"
00:12:39 v #14503 > >                     fun () => { retry ex }
00:12:39 v #14504 > >                 None
00:12:39 v #14505 > >         |> function
00:12:39 v #14506 > >             | Some x => x
00:12:39 v #14507 > >             | None => loop (retry + 1)
00:12:39 v #14508 > >     loop 0
00:12:40 v #14509 > >
00:12:40 v #14510 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:40 v #14511 > > //// test
00:12:40 v #14512 > > ///! fsharp
00:12:40 v #14513 > > ///! cuda
00:12:40 v #14514 > > ///! rust
00:12:40 v #14515 > > ///! typescript
00:12:40 v #14516 > > ///! python
00:12:40 v #14517 > >
00:12:40 v #14518 > > inl retry_fn_test = mut 0i32
00:12:40 v #14519 > > fun () =>
00:12:40 v #14520 > >     retry_fn_test <- *retry_fn_test + 1
00:12:40 v #14521 > >     *retry_fn_test
00:12:40 v #14522 > > |> retry_fn 3i32
00:12:40 v #14523 > > |> _assert_eq' (Some 1i32)
00:12:45 v #14524 > >
00:12:45 v #14525 > > ╭─[ 4.89s - return value ]─────────────────────────────────────────────────────╮
00:12:45 v #14526 > > │ .py output (Cuda):                                                           │
00:12:45 v #14527 > > │ __assert_eq' / actual: US0_0(v0=1) / expected: US0_0(v0=1)                   │
00:12:45 v #14528 > > │                                                                              │
00:12:45 v #14529 > > │ .rs output:                                                                  │
00:12:45 v #14530 > > │ __assert_eq' / actual: US0_0(1) / expected: US0_0(1)                         │
00:12:45 v #14531 > > │                                                                              │
00:12:45 v #14532 > > │ .ts output:                                                                  │
00:12:45 v #14533 > > │ __assert_eq' / actual: US0_0 1 / expected: US0_0 1                           │
00:12:45 v #14534 > > │                                                                              │
00:12:45 v #14535 > > │ .py output:                                                                  │
00:12:45 v #14536 > > │ __assert_eq' / actual: US0_0 1 / expected: US0_0 1                           │
00:12:45 v #14537 > > │                                                                              │
00:12:45 v #14538 > > │                                                                              │
00:12:45 v #14539 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:12:45 v #14540 > >
00:12:45 v #14541 > > ╭─[ 4.89s - stdout ]───────────────────────────────────────────────────────────╮
00:12:45 v #14542 > > │ .fsx output:                                                                 │
00:12:45 v #14543 > > │ __assert_eq' / actual: US0_0 1 / expected: US0_0 1                           │
00:12:45 v #14544 > > │                                                                              │
00:12:45 v #14545 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:12:45 v #14546 > >
00:12:45 v #14547 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:45 v #14548 > > //// test
00:12:45 v #14549 > > ///! fsharp
00:12:45 v #14550 > > ////! cuda // v3 = $"retry: {v0} / ex: %A{v1} / {v2 ()}"
00:12:45 v #14551 > > ///! rust
00:12:45 v #14552 > > ///! typescript
00:12:45 v #14553 > > ///! python
00:12:45 v #14554 > >
00:12:45 v #14555 > > inl retry_fn_test = mut 0i32
00:12:45 v #14556 > > fun () =>
00:12:45 v #14557 > >     if *retry_fn_test >= 2
00:12:45 v #14558 > >     then *retry_fn_test
00:12:45 v #14559 > >     else
00:12:45 v #14560 > >         retry_fn_test <- *retry_fn_test + 1
00:12:45 v #14561 > >         failwith "test"
00:12:45 v #14562 > > |> retry_fn 3i32
00:12:45 v #14563 > > |> _assert_eq' (Some 2i32)
00:12:48 v #14564 > >
00:12:48 v #14565 > > ╭─[ 3.53s - return value ]─────────────────────────────────────────────────────╮
00:12:48 v #14566 > > │                                                                              │
00:12:48 v #14567 > > │ .rs output:                                                                  │
00:12:48 v #14568 > > │ 00:00:00 w #1 common.retry_fn / { retry = 0; ex = Exception {          │
00:12:48 v #14569 > > │     message: "test",                                                         │
00:12:48 v #14570 > > │ } }                                                                          │
00:12:48 v #14571 > > │ 00:00:00 w #2 common.retry_fn / { retry = 1; ex = Exception {          │
00:12:48 v #14572 > > │     message: "test",                                                         │
00:12:48 v #14573 > > │ } }                                                                          │
00:12:48 v #14574 > > │ __assert_eq' / actual: US0_0(2) / expected: US0_0(2)                         │
00:12:48 v #14575 > > │                                                                              │
00:12:48 v #14576 > > │                                                                              │
00:12:48 v #14577 > > │ .ts output:                                                                  │
00:12:48 v #14578 > > │ 00:00:00 w #1 common.retry_fn / { retry = 0; ex = Error: test }         │
00:12:48 v #14579 > > │ 00:00:00 w #2 common.retry_fn / { retry = 1; ex = Error: test }         │
00:12:48 v #14580 > > │ __assert_eq' / actual: US0_0 2 / expected: US0_0 2                           │
00:12:48 v #14581 > > │                                                                              │
00:12:48 v #14582 > > │                                                                              │
00:12:48 v #14583 > > │ .py output:                                                                  │
00:12:48 v #14584 > > │ 00:00:00 w #1 common.retry_fn / { retry = 0; ex = test }                │
00:12:48 v #14585 > > │ 00:00:00 w #2 common.retry_fn / { retry = 1; ex = test }                │
00:12:48 v #14586 > > │ __assert_eq' / actual: US0_0 2 / expected: US0_0 2                           │
00:12:48 v #14587 > > │                                                                              │
00:12:48 v #14588 > > │                                                                              │
00:12:48 v #14589 > > │                                                                              │
00:12:48 v #14590 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:12:48 v #14591 > >
00:12:48 v #14592 > > ╭─[ 3.53s - stdout ]───────────────────────────────────────────────────────────╮
00:12:48 v #14593 > > │ .fsx output:                                                                 │
00:12:48 v #14594 > > │ 00:00:00 w #1 common.retry_fn / { retry = 0; ex = System.Exception:     │
00:12:48 v #14595 > > │ test                                                                         │
00:12:48 v #14596 > > │    at FSI_0026.closure1(Mut0 v0, Int32 v1, Unit unitVar2)                    │
00:12:48 v #14597 > > │    at FSI_0026.method1(Mut0 v0, Int32 v1) }                                  │
00:12:48 v #14598 > > │ 00:00:00 w #2 common.retry_fn / { retry = 1; ex = System.Exception:     │
00:12:48 v #14599 > > │ test                                                                         │
00:12:48 v #14600 > > │    at FSI_0026.closure1(Mut0 v0, Int32 v1, Unit unitVar2)                    │
00:12:48 v #14601 > > │    at FSI_0026.method1(Mut0 v0, Int32 v1) }                                  │
00:12:48 v #14602 > > │ __assert_eq' / actual: US0_0 2 / expected: US0_0 2                           │
00:12:48 v #14603 > > │                                                                              │
00:12:48 v #14604 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:12:48 v #14605 > >
00:12:48 v #14606 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:48 v #14607 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:12:48 v #14608 > > │ ## common                                                                    │
00:12:48 v #14609 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:12:48 v #14610 > >
00:12:48 v #14611 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:48 v #14612 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:12:48 v #14613 > > │ ### random'                                                                  │
00:12:48 v #14614 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:12:48 v #14615 > >
00:12:48 v #14616 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:48 v #14617 > > inl random' forall t. (min : t) (max : t) : t =
00:12:48 v #14618 > >     run_target function
00:12:48 v #14619 > >         | Rust (Contract) => fun () =>
00:12:48 v #14620 > >             failwith "common.random' / target=Rust(Contract)"
00:12:48 v #14621 > >         | Rust _ => fun () =>
00:12:48 v #14622 > >             open rust.rust_operators
00:12:48 v #14623 > >             !\\((min, max), $'"rand::Rng::gen_range(&mut rand::thread_rng(),
00:12:48 v #14624 > > $0..$1)"')
00:12:48 v #14625 > >         | _ => fun () =>
00:12:48 v #14626 > >             random () |> random_next (i32 min) (i32 max) |> convert
00:12:49 v #14627 > >
00:12:49 v #14628 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:49 v #14629 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:12:49 v #14630 > > │ ### new_disposable                                                           │
00:12:49 v #14631 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:12:49 v #14632 > >
00:12:49 v #14633 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:49 v #14634 > > inl new_disposable (fn : () -> ()) : disposable _ =
00:12:49 v #14635 > >     run_target function
00:12:49 v #14636 > >         | Rust _ => fun () =>
00:12:49 v #14637 > >             global "type Disposable (f : unit -> unit) = interface
00:12:49 v #14638 > > System.IDisposable with member _.Dispose () = f ()"
00:12:49 v #14639 > >             inl fn = join fn
00:12:49 v #14640 > >             $'new Disposable (fun () -> Fable.Core.RustInterop.emitRustExpr !fn
00:12:49 v #14641 > > "$0()" )'
00:12:49 v #14642 > >         | Fsharp _ | TypeScript _ | Python _ => fun () =>
00:12:49 v #14643 > >             inl fn = join fn
00:12:49 v #14644 > >             $'{ new System.IDisposable with member _.Dispose () = !fn () }'
00:12:49 v #14645 > >         | Cuda _ => fun () =>
00:12:49 v #14646 > >             $'class Disposable:'
00:12:49 v #14647 > >             $'    def __init__(self, fn):'
00:12:49 v #14648 > >             $'        self.fn = fn'
00:12:49 v #14649 > >             $'    def __exit__(self, exc_type, exc_value, traceback):'
00:12:49 v #14650 > >             $'        self.fn()'
00:12:49 v #14651 > >             $'        return False'
00:12:49 v #14652 > >             $'Disposable(!fn)'
00:12:49 v #14653 > >         | _ => fun () => null ()
00:12:49 v #14654 > >
00:12:49 v #14655 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:49 v #14656 > > //// test
00:12:49 v #14657 > > ///! fsharp
00:12:49 v #14658 > > ///! cuda
00:12:49 v #14659 > > ///! rust
00:12:49 v #14660 > > ///! typescript
00:12:49 v #14661 > > ///! python
00:12:49 v #14662 > >
00:12:49 v #14663 > > inl new_disposable_test = mut 0i32
00:12:49 v #14664 > > new_disposable fun () => new_disposable_test <- *new_disposable_test + 1
00:12:49 v #14665 > > |> fun x => x : disposable ()
00:12:49 v #14666 > > |> dispose
00:12:49 v #14667 > > *new_disposable_test |> _assert_eq 1
00:12:53 v #14668 > >
00:12:53 v #14669 > > ╭─[ 3.73s - return value ]─────────────────────────────────────────────────────╮
00:12:53 v #14670 > > │ .py output (Cuda):                                                           │
00:12:53 v #14671 > > │ __assert_eq / actual: 1 / expected: 1                                        │
00:12:53 v #14672 > > │                                                                              │
00:12:53 v #14673 > > │ .rs output:                                                                  │
00:12:53 v #14674 > > │ __assert_eq / actual: 1 / expected: 1                                        │
00:12:53 v #14675 > > │                                                                              │
00:12:53 v #14676 > > │ .ts output:                                                                  │
00:12:53 v #14677 > > │ __assert_eq / actual: 1 / expected: 1                                        │
00:12:53 v #14678 > > │                                                                              │
00:12:53 v #14679 > > │ .py output:                                                                  │
00:12:53 v #14680 > > │ __assert_eq / actual: 1 / expected: 1                                        │
00:12:53 v #14681 > > │                                                                              │
00:12:53 v #14682 > > │                                                                              │
00:12:53 v #14683 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:12:53 v #14684 > >
00:12:53 v #14685 > > ╭─[ 3.74s - stdout ]───────────────────────────────────────────────────────────╮
00:12:53 v #14686 > > │ .fsx output:                                                                 │
00:12:53 v #14687 > > │ __assert_eq / actual: 1 / expected: 1                                        │
00:12:53 v #14688 > > │                                                                              │
00:12:53 v #14689 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:12:53 v #14690 > >
00:12:53 v #14691 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:53 v #14692 > > //// test
00:12:53 v #14693 > >
00:12:53 v #14694 > > inl new_disposable_test = mut 0i32
00:12:53 v #14695 > > fun () =>
00:12:53 v #14696 > >     new_disposable fun () => new_disposable_test <- *new_disposable_test + 1
00:12:53 v #14697 > >     |> fun x => x : disposable ()
00:12:53 v #14698 > >     |> use
00:12:53 v #14699 > >     |> ignore
00:12:53 v #14700 > >     |> return
00:12:53 v #14701 > > |> async.new_task
00:12:53 v #14702 > > |> async.await_task
00:12:53 v #14703 > > |> async.run_synchronously
00:12:53 v #14704 > > *new_disposable_test |> _assert_eq 1
00:12:53 v #14705 > >
00:12:53 v #14706 > > ╭─[ 516.47ms - stdout ]────────────────────────────────────────────────────────╮
00:12:53 v #14707 > > │ __assert_eq / actual: 1 / expected: 1                                        │
00:12:53 v #14708 > > │                                                                              │
00:12:53 v #14709 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:12:53 v #14710 > >
00:12:53 v #14711 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:53 v #14712 > > //// test
00:12:53 v #14713 > >
00:12:53 v #14714 > > inl new_disposable_test = mut 0i32
00:12:53 v #14715 > > fun () =>
00:12:53 v #14716 > >     new_disposable fun () => new_disposable_test <- *new_disposable_test + 1
00:12:53 v #14717 > >     |> fun x => x : disposable ()
00:12:53 v #14718 > >     |> use
00:12:53 v #14719 > >     |> ignore
00:12:53 v #14720 > >     |> return
00:12:53 v #14721 > > |> async.new_async
00:12:53 v #14722 > > |> async.run_synchronously
00:12:53 v #14723 > > *new_disposable_test |> _assert_eq 1
00:12:54 v #14724 > >
00:12:54 v #14725 > > ╭─[ 439.06ms - stdout ]────────────────────────────────────────────────────────╮
00:12:54 v #14726 > > │ __assert_eq / actual: 1 / expected: 1                                        │
00:12:54 v #14727 > > │                                                                              │
00:12:54 v #14728 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:12:54 v #14729 > >
00:12:54 v #14730 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:54 v #14731 > > //// test
00:12:54 v #14732 > >
00:12:54 v #14733 > > inl new_disposable_test = mut 0i32
00:12:54 v #14734 > > fun () =>
00:12:54 v #14735 > >     new_disposable fun () => new_disposable_test <- *new_disposable_test + 1
00:12:54 v #14736 > >     |> fun x => x : disposable ()
00:12:54 v #14737 > >     |> ignore
00:12:54 v #14738 > >     |> return
00:12:54 v #14739 > > |> async.new_async
00:12:54 v #14740 > > |> async.run_synchronously
00:12:54 v #14741 > > *new_disposable_test |> _assert_eq 0
00:12:54 v #14742 > >
00:12:54 v #14743 > > ╭─[ 437.17ms - stdout ]────────────────────────────────────────────────────────╮
00:12:54 v #14744 > > │ __assert_eq / actual: 0 / expected: 0                                        │
00:12:54 v #14745 > > │                                                                              │
00:12:54 v #14746 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:12:54 v #14747 > >
00:12:54 v #14748 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:54 v #14749 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:12:54 v #14750 > > │ ## main                                                                      │
00:12:54 v #14751 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:12:54 v #14752 > >
00:12:54 v #14753 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:54 v #14754 > > inl main () =
00:12:54 v #14755 > >     init_trace_state None
00:12:54 v #14756 > >     inl new_disposable x : _ () = new_disposable x
00:12:54 v #14757 > >     $'let new_disposable x = !new_disposable x' : ()
00:12:54 v #14758 > >     inl retry_fn (r : i32) (x : () -> _) : optionm'.option' () = retry_fn r x |>
00:12:54 v #14759 > > optionm'.box
00:12:54 v #14760 > >     $'let retry_fn x = !retry_fn x' : ()
00:12:54 v #14761 > >     inl memoize (fn : () -> ()) : () -> () = memoize fn
00:12:54 v #14762 > >     $'let memoize x = !memoize x' : ()
00:12:55 v #14763 > 00:00:38 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 121989 }
00:12:55 v #14764 > 00:00:38 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/polyglot/lib/spiral/common.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/polyglot/lib/spiral/common.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:12:56 v #14765 > 00:00:40 v #5 ! [NbConvertApp] Converting notebook c:/home/git/polyglot/lib/spiral/common.dib.ipynb to html
00:12:56 v #14766 > 00:00:40 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:12:56 v #14767 > 00:00:40 v #7 !   validate(nb)
00:12:57 v #14768 > 00:00:40 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:12:57 v #14769 > 00:00:40 v #9 !   return _pygments_highlight(
00:12:57 v #14770 > 00:00:41 v #10 ! [NbConvertApp] Writing 360966 bytes to c:\home\git\polyglot\lib\spiral\common.dib.html
00:12:57 v #14771 > 00:00:41 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 854 }
00:12:57 v #14772 > 00:00:41 d #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 854 }
00:12:57 v #14773 > 00:00:41 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/common.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/common.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:12:58 v #14774 > 00:00:41 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:12:58 v #14775 > 00:00:41 d #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:12:58 v #14776 > 00:00:41 d #16 spiral_builder.run / dib / { exit_code = 0; result_length = 122902 }
00:12:58 d #14777 runtime.execute_with_options_async / { exit_code = 0; output_length = 128905 }
00:12:58 d #16 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder.exe dib --path common.dib --retries 3
00:12:58 d #14778 runtime.execute_with_options_async / { file_name = ../../workspace/target/release/spiral_builder.exe; arguments = US5_0 "dib --path resultm.dib --retries 3"; options = { command = ../../workspace/target/release/spiral_builder.exe dib --path resultm.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:12:58 v #14779 > 00:00:00 d #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "resultm.dib", "--retries", "3"])) }
00:12:58 v #14780 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/polyglot/lib/spiral/resultm.dib", "--output-path", "c:/home/git/polyglot/lib/spiral/resultm.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/polyglot/lib/spiral/resultm.dib" --output-path "c:/home/git/polyglot/lib/spiral/resultm.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:12:59 v #14781 > >
00:12:59 v #14782 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:59 v #14783 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:12:59 v #14784 > > │ # resultm                                                                    │
00:12:59 v #14785 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:03 v #14786 > >
00:13:03 v #14787 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:03 v #14788 > > open rust
00:13:03 v #14789 > > open rust_operators
00:13:04 v #14790 > >
00:13:04 v #14791 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:04 v #14792 > > //// test
00:13:04 v #14793 > >
00:13:04 v #14794 > > open testing
00:13:04 v #14795 > >
00:13:04 v #14796 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:04 v #14797 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:13:04 v #14798 > > │ ## resultm                                                                   │
00:13:04 v #14799 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:04 v #14800 > >
00:13:04 v #14801 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:04 v #14802 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:13:04 v #14803 > > │ ### from_option_error                                                        │
00:13:04 v #14804 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:04 v #14805 > >
00:13:04 v #14806 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:04 v #14807 > > inl from_option_error error opt =
00:13:04 v #14808 > >     match opt with
00:13:04 v #14809 > >     | Some x => Ok x
00:13:04 v #14810 > >     | None => Error error
00:13:05 v #14811 > >
00:13:05 v #14812 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:05 v #14813 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:13:05 v #14814 > > │ ### from_option                                                              │
00:13:05 v #14815 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:05 v #14816 > >
00:13:05 v #14817 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:05 v #14818 > > inl from_option opt =
00:13:05 v #14819 > >     opt |> from_option_error "resultm.from_option / Option does not have a
00:13:05 v #14820 > > value."
00:13:05 v #14821 > >
00:13:05 v #14822 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:05 v #14823 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:13:05 v #14824 > > │ ### flatten_option                                                           │
00:13:05 v #14825 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:05 v #14826 > >
00:13:05 v #14827 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:05 v #14828 > > inl flatten_option forall t u. (x : option (result (option t) u)) : result
00:13:05 v #14829 > > (option t) u =
00:13:05 v #14830 > >     match x with
00:13:05 v #14831 > >     | Some (Error x) => Error x
00:13:05 v #14832 > >     | Some (Ok (Some x)) => Ok (Some x)
00:13:05 v #14833 > >     | _ => Ok None
00:13:06 v #14834 > >
00:13:06 v #14835 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:06 v #14836 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:13:06 v #14837 > > │ ### flatten                                                                  │
00:13:06 v #14838 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:06 v #14839 > >
00:13:06 v #14840 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:06 v #14841 > > inl flatten forall t u. (x : result (result t u) u) : result t u =
00:13:06 v #14842 > >     match x with
00:13:06 v #14843 > >     | Ok x => x
00:13:06 v #14844 > >     | Error x => Error x
00:13:06 v #14845 > >
00:13:06 v #14846 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:06 v #14847 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:13:06 v #14848 > > │ ### get                                                                      │
00:13:06 v #14849 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:06 v #14850 > >
00:13:06 v #14851 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:06 v #14852 > > inl get forall t e. (source : result t e) : t =
00:13:06 v #14853 > >     match source with
00:13:06 v #14854 > >     | Ok x => x
00:13:06 v #14855 > >     | Error x =>
00:13:06 v #14856 > >         backend_switch {
00:13:06 v #14857 > >             Fsharp = fun () => $'$"resultm.get / Result value was Error: {!x}"'
00:13:06 v #14858 > > : string
00:13:06 v #14859 > >             Python = fun () => $'f"resultm.get / Result value was Error: {!x}"'
00:13:06 v #14860 > > : string
00:13:06 v #14861 > >         }
00:13:06 v #14862 > >         |> failwith
00:13:06 v #14863 > >
00:13:06 v #14864 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:06 v #14865 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:13:06 v #14866 > > │ ### map                                                                      │
00:13:06 v #14867 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:06 v #14868 > >
00:13:06 v #14869 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:06 v #14870 > > inl map forall t e u. (fn : t -> u) (source : result t e) : result u e =
00:13:06 v #14871 > >     match source with
00:13:06 v #14872 > >     | Ok x => x |> fn |> Ok
00:13:06 v #14873 > >     | Error x => Error x
00:13:07 v #14874 > >
00:13:07 v #14875 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:07 v #14876 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:13:07 v #14877 > > │ ### map_error                                                                │
00:13:07 v #14878 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:07 v #14879 > >
00:13:07 v #14880 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:07 v #14881 > > inl map_error forall t e u. (fn : e -> u) (source : result t e) : result t u =
00:13:07 v #14882 > >     match source with
00:13:07 v #14883 > >     | Ok x => Ok x
00:13:07 v #14884 > >     | Error x => x |> fn |> Error
00:13:07 v #14885 > >
00:13:07 v #14886 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:07 v #14887 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:13:07 v #14888 > > │ ### unwrap_err                                                               │
00:13:07 v #14889 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:07 v #14890 > >
00:13:07 v #14891 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:07 v #14892 > > inl unwrap_err forall t u. (x : result t u) : u =
00:13:07 v #14893 > >     match x with
00:13:07 v #14894 > >     | Ok x =>
00:13:07 v #14895 > >         backend_switch {
00:13:07 v #14896 > >             Fsharp = fun () => $'$"resultm.unwrap_err / x: {!x}"' : string
00:13:07 v #14897 > >             Python = fun () => $'f"resultm.unwrap_err / x: {!x}"' : string
00:13:07 v #14898 > >         }
00:13:07 v #14899 > >         |> failwith
00:13:07 v #14900 > >     | Error x => x
00:13:08 v #14901 > >
00:13:08 v #14902 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:08 v #14903 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:13:08 v #14904 > > │ ### ok                                                                       │
00:13:08 v #14905 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:08 v #14906 > >
00:13:08 v #14907 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:08 v #14908 > > inl ok forall t. (x : result t _) : option t =
00:13:08 v #14909 > >     match x with
00:13:08 v #14910 > >     | Ok x => Some x
00:13:08 v #14911 > >     | Error _ => None
00:13:08 v #14912 > >
00:13:08 v #14913 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:08 v #14914 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:13:08 v #14915 > > │ ## fsharp                                                                    │
00:13:08 v #14916 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:08 v #14917 > >
00:13:08 v #14918 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:08 v #14919 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:13:08 v #14920 > > │ ### result'                                                                  │
00:13:08 v #14921 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:08 v #14922 > >
00:13:08 v #14923 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:08 v #14924 > > nominal result' t u = $'Result<`t, `u>'
00:13:08 v #14925 > >
00:13:08 v #14926 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:08 v #14927 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:13:08 v #14928 > > │ ### unbox                                                                    │
00:13:08 v #14929 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:08 v #14930 > >
00:13:08 v #14931 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:08 v #14932 > > inl unbox forall t u. (x : result' t u) : result t u =
00:13:08 v #14933 > >     inl ok x : result t u = Ok x
00:13:08 v #14934 > >     inl error x : result t u = Error x
00:13:08 v #14935 > >     inl ok = join ok
00:13:08 v #14936 > >     inl error = join error
00:13:08 v #14937 > >     real
00:13:08 v #14938 > >         typecase t with
00:13:08 v #14939 > >         | () => $'match !x with Ok () -> !ok () | Error x -> !error x' : result
00:13:08 v #14940 > > t u
00:13:08 v #14941 > >         | _ => $'match !x with Ok x -> !ok x | Error x -> !error x' : result t u
00:13:09 v #14942 > >
00:13:09 v #14943 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:09 v #14944 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:13:09 v #14945 > > │ ### box                                                                      │
00:13:09 v #14946 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:09 v #14947 > >
00:13:09 v #14948 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:09 v #14949 > > inl box forall t u. (x : result t u) : result' t u =
00:13:09 v #14950 > >     match x with
00:13:09 v #14951 > >     | Ok x => $'Ok !x '
00:13:09 v #14952 > >     | Error err => $'Error !err '
00:13:09 v #14953 > >
00:13:09 v #14954 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:09 v #14955 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:13:09 v #14956 > > │ ## rust                                                                      │
00:13:09 v #14957 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:09 v #14958 > >
00:13:09 v #14959 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:09 v #14960 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:13:09 v #14961 > > │ ### anyhow_result                                                            │
00:13:09 v #14962 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:09 v #14963 > >
00:13:09 v #14964 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:09 v #14965 > > nominal anyhow_result t =
00:13:09 v #14966 > >     `(
00:13:09 v #14967 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:13:09 v #14968 > > Fable.Core.Emit(\"anyhow::Result<$0>\")>]]\n#endif\ntype anyhow_Result<'T> =
00:13:09 v #14969 > > class end"
00:13:09 v #14970 > >         $'' : $'anyhow_Result<`t>'
00:13:09 v #14971 > >     )
00:13:10 v #14972 > >
00:13:10 v #14973 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:10 v #14974 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:13:10 v #14975 > > │ ### anyhow_error                                                             │
00:13:10 v #14976 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:10 v #14977 > >
00:13:10 v #14978 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:10 v #14979 > > nominal anyhow_error =
00:13:10 v #14980 > >     `(
00:13:10 v #14981 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:13:10 v #14982 > > Fable.Core.Emit(\"anyhow::Error\")>]]\n#endif\ntype anyhow_Error = class end"
00:13:10 v #14983 > >         $'' : $'anyhow_Error'
00:13:10 v #14984 > >     )
00:13:10 v #14985 > >
00:13:10 v #14986 > > inl anyhow_error error =
00:13:10 v #14987 > >     !\\(error, $'"anyhow::anyhow\!($0)"')
00:13:10 v #14988 > >
00:13:10 v #14989 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:10 v #14990 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:13:10 v #14991 > > │ ### try'                                                                     │
00:13:10 v #14992 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:10 v #14993 > >
00:13:10 v #14994 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:10 v #14995 > > inl try' forall t u. (x : result' t u) : t =
00:13:10 v #14996 > >     inl is_unit =
00:13:10 v #14997 > >         real
00:13:10 v #14998 > >             typecase t with
00:13:10 v #14999 > >             | () => true
00:13:10 v #15000 > >             | _ => false
00:13:10 v #15001 > >     if is_unit
00:13:10 v #15002 > >     then (!\\(x, $'"true; $0?"') : bool) |> fun _ => $''
00:13:10 v #15003 > >     else !\\(x, $'"$0?"')
00:13:10 v #15004 > >
00:13:10 v #15005 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:10 v #15006 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:13:10 v #15007 > > │ ### to_try                                                                   │
00:13:10 v #15008 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:10 v #15009 > >
00:13:10 v #15010 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:10 v #15011 > > inl to_try forall t u. (x : result' t u) : rust.try t =
00:13:10 v #15012 > >     !\\(x, $'"$0"')
00:13:11 v #15013 > >
00:13:11 v #15014 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:11 v #15015 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:13:11 v #15016 > > │ ### unwrap'                                                                  │
00:13:11 v #15017 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:11 v #15018 > >
00:13:11 v #15019 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:11 v #15020 > > inl unwrap' forall t u. (x : result' t u) : t =
00:13:11 v #15021 > >     run_target function
00:13:11 v #15022 > >         | Rust _ => fun () => !\\(x, $'"$0.unwrap()"')
00:13:11 v #15023 > >         | _ => fun () => $'match !x with Ok x -> x | Error e -> failwith
00:13:11 v #15024 > > $"resultm.unwrap\' / e: {e}"'
00:13:11 v #15025 > >
00:13:11 v #15026 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:11 v #15027 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:13:11 v #15028 > > │ ### unwrap_err'                                                              │
00:13:11 v #15029 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:11 v #15030 > >
00:13:11 v #15031 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:11 v #15032 > > inl unwrap_err' forall t u. (x : result' t u) : u =
00:13:11 v #15033 > >     $'match !x with Ok x -> failwith $"resultm.unwrap_err\' / x: %A{x}" | Error
00:13:11 v #15034 > > x -> x'
00:13:12 v #15035 > >
00:13:12 v #15036 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:12 v #15037 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:13:12 v #15038 > > │ ### unbox'                                                                   │
00:13:12 v #15039 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:12 v #15040 > >
00:13:12 v #15041 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:12 v #15042 > > inl unbox' forall t u. (x : result' t u) : result t u =
00:13:12 v #15043 > >     inl ok x : result t u = Ok x
00:13:12 v #15044 > >     inl ok = join ok
00:13:12 v #15045 > >     inl error x : result t u = Error x
00:13:12 v #15046 > >     inl error = join error
00:13:12 v #15047 > >     real
00:13:12 v #15048 > >         typecase t with
00:13:12 v #15049 > >         | () =>
00:13:12 v #15050 > >             (~!\\)
00:13:12 v #15051 > >                 `((result' t u -> result t u) * (result' t u -> result t u))
00:13:12 v #15052 > >                 `(result t u)
00:13:12 v #15053 > >                 ((ok, error, x), ($'"match $2 { Ok(()) => $0(()), Err(e) =>
00:13:12 v #15054 > > $1(e) }"' : string))
00:13:12 v #15055 > >         | _ =>
00:13:12 v #15056 > >             (~!\\)
00:13:12 v #15057 > >                 `((result' t u -> result t u) * (result' t u -> result t u))
00:13:12 v #15058 > >                 `(result t u)
00:13:12 v #15059 > >                 ((ok, error, x), ($'"match $2 { Ok(x) => $0(x), Err(e) => $1(e)
00:13:12 v #15060 > > }"' : string))
00:13:12 v #15061 > >
00:13:12 v #15062 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:12 v #15063 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:13:12 v #15064 > > │ ### map'                                                                     │
00:13:12 v #15065 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:12 v #15066 > >
00:13:12 v #15067 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:12 v #15068 > > inl map' forall t e u. (fn : t -> u) (source : result' t e) : result' u e =
00:13:12 v #15069 > >     (!\\(source, $'"true; let _result_map_ = $0.map(|x| { //"') : bool) |>
00:13:12 v #15070 > > ignore
00:13:12 v #15071 > >     (!\\(fn !\($'"x"'), $'"true; $0 })"') : bool) |> ignore
00:13:12 v #15072 > >     !\($'"_result_map_"')
00:13:12 v #15073 > >
00:13:12 v #15074 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:12 v #15075 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:13:12 v #15076 > > │ ### map''                                                                    │
00:13:12 v #15077 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:12 v #15078 > >
00:13:12 v #15079 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:12 v #15080 > > inl map'' forall t e u. (fn : t -> u) (source : result' t e) : result' u e =
00:13:12 v #15081 > >     inl fn = join fn
00:13:12 v #15082 > >     inl source = join source
00:13:12 v #15083 > >     !\($'"!source.map(|x| !fn(x))"')
00:13:13 v #15084 > >
00:13:13 v #15085 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:13 v #15086 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:13:13 v #15087 > > │ ### map_error'                                                               │
00:13:13 v #15088 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:13 v #15089 > >
00:13:13 v #15090 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:13 v #15091 > > inl map_error' forall t e u. (fn : e -> u) (source : result' t e) : result' t u
00:13:13 v #15092 > > =
00:13:13 v #15093 > >     inl fn = join fn
00:13:13 v #15094 > >     run_target_args (fun () => fn) function
00:13:13 v #15095 > >         | Rust _ => fun fn =>
00:13:13 v #15096 > >             !\\((source, fn), $'"$0.map_err(|x| $1(x))"')
00:13:13 v #15097 > >         | _ => fun fn =>
00:13:13 v #15098 > >             $'match !source with Ok x -> Ok x | Error x -> Error (!fn x)' :
00:13:13 v #15099 > > result' t u
00:13:13 v #15100 > >
00:13:13 v #15101 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:13 v #15102 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:13:13 v #15103 > > │ ### map_error''                                                              │
00:13:13 v #15104 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:13 v #15105 > >
00:13:13 v #15106 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:13 v #15107 > > inl map_error'' forall t e u. (fn : e -> u) (source : result' t e) : result' t u
00:13:13 v #15108 > > =
00:13:13 v #15109 > >     (!\\(source, $'"true; let _result_map_error__ = $0.map_err(|x| { //"') :
00:13:13 v #15110 > > bool) |> ignore
00:13:13 v #15111 > >     (!\\(fn !\($'"x"'), $'"true; $0 })"') : bool) |> ignore
00:13:13 v #15112 > >     !\($'"_result_map_error__"')
00:13:14 v #15113 > >
00:13:14 v #15114 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:14 v #15115 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:13:14 v #15116 > > │ ### option_ok_or                                                             │
00:13:14 v #15117 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:14 v #15118 > >
00:13:14 v #15119 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:14 v #15120 > > inl option_ok_or forall t e. (e : e) (source : optionm'.option' t) : result' t e
00:13:14 v #15121 > > =
00:13:14 v #15122 > >     !\\(source, $'"$0.ok_or(!e)"')
00:13:14 v #15123 > >
00:13:14 v #15124 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:14 v #15125 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:13:14 v #15126 > > │ ### unwrap_or_else                                                           │
00:13:14 v #15127 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:14 v #15128 > >
00:13:14 v #15129 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:14 v #15130 > > inl unwrap_or_else forall t e u. (fn : e -> u) (source : result' t e) : u =
00:13:14 v #15131 > >     (!\\(source, $'"true; let _result_unwrap_or_else = $0.unwrap_or_else(|x| {
00:13:14 v #15132 > > //"') : bool) |> ignore
00:13:14 v #15133 > >     (!\\(fn !\($'"x"'), $'"true; $0 })"') : bool) |> ignore
00:13:14 v #15134 > >     !\($'"_result_unwrap_or_else"')
00:13:14 v #15135 > >
00:13:14 v #15136 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:14 v #15137 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:13:14 v #15138 > > │ ### map_or_else                                                              │
00:13:14 v #15139 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:14 v #15140 > >
00:13:14 v #15141 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:14 v #15142 > > inl map_or_else forall t e u v. (fn : e -> v) (fn2 : u -> v) (source : result' t
00:13:14 v #15143 > > e) : v =
00:13:14 v #15144 > >     (!\\(source, $'"true; let _result_map_or_else = $0.map_or_else(|x| { //"') :
00:13:14 v #15145 > > bool) |> ignore
00:13:14 v #15146 > >     (!\\(fn !\($'"x"'), $'"true; $0 }, |x| { //"') : bool) |> ignore
00:13:14 v #15147 > >     (!\\(fn2 !\($'"x"'), $'"true; $0 })"') : bool) |> ignore
00:13:14 v #15148 > >     !\($'"_result_map_or_else"')
00:13:15 v #15149 > >
00:13:15 v #15150 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:15 v #15151 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:13:15 v #15152 > > │ ### as_ref                                                                   │
00:13:15 v #15153 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:15 v #15154 > >
00:13:15 v #15155 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:15 v #15156 > > inl as_ref forall t e. (source : result' t e) : result' (rust.ref t) (rust.ref
00:13:15 v #15157 > > e) =
00:13:15 v #15158 > >     !\($'"!source.as_ref()"')
00:13:15 v #15159 > >
00:13:15 v #15160 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:15 v #15161 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:13:15 v #15162 > > │ ### as_ref'                                                                  │
00:13:15 v #15163 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:15 v #15164 > >
00:13:15 v #15165 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:15 v #15166 > > inl as_ref' forall t e. (source : rust.ref (result' t e)) : result' (rust.ref t)
00:13:15 v #15167 > > (rust.ref e) =
00:13:15 v #15168 > >     !\($'"!source.as_ref()"')
00:13:16 v #15169 > >
00:13:16 v #15170 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:16 v #15171 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:13:16 v #15172 > > │ ### unwrap_or'                                                               │
00:13:16 v #15173 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:16 v #15174 > >
00:13:16 v #15175 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:16 v #15176 > > inl unwrap_or' forall t u. (default : t) (x : result' t u) : t =
00:13:16 v #15177 > >     !\\((x, default), $'"$0.unwrap_or($1)"')
00:13:16 v #15178 > >
00:13:16 v #15179 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:16 v #15180 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:13:16 v #15181 > > │ ### expect                                                                   │
00:13:16 v #15182 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:16 v #15183 > >
00:13:16 v #15184 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:16 v #15185 > > inl expect forall t u. (error : rust.ref string) (x : result' t u) : t =
00:13:16 v #15186 > >     !\($'"!x.expect(&!error)"')
00:13:16 v #15187 > >
00:13:16 v #15188 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:16 v #15189 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:13:16 v #15190 > > │ ### is_err                                                                   │
00:13:16 v #15191 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:16 v #15192 > >
00:13:16 v #15193 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:16 v #15194 > > inl is_err forall t u. (x : result' t u) : bool =
00:13:16 v #15195 > >     run_target function
00:13:16 v #15196 > >         | Rust _ => fun () => !\\(x, $'"$0.is_err()"')
00:13:16 v #15197 > >         | _ => fun () => true
00:13:17 v #15198 > >
00:13:17 v #15199 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:17 v #15200 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:13:17 v #15201 > > │ ### ok'                                                                      │
00:13:17 v #15202 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:17 v #15203 > >
00:13:17 v #15204 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:17 v #15205 > > inl ok' forall t. (x : result' t _) : optionm'.option' t =
00:13:17 v #15206 > >     run_target function
00:13:17 v #15207 > >         | Rust _ => fun () => !\\(x, $'"$0.ok()"')
00:13:17 v #15208 > >         | _ => fun () => $'match !x with Ok x -> Some x | Error _ -> None'
00:13:17 v #15209 > >
00:13:17 v #15210 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:17 v #15211 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:13:17 v #15212 > > │ ### err                                                                      │
00:13:17 v #15213 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:17 v #15214 > >
00:13:17 v #15215 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:17 v #15216 > > inl err forall t u. (x : u) : result' t u =
00:13:17 v #15217 > >     run_target function
00:13:17 v #15218 > >         | Rust _ => fun () => !\\(x, $'"Err($0)"')
00:13:17 v #15219 > >         | _ => fun () => $'!x |> Error'
00:13:18 v #15220 > >
00:13:18 v #15221 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:18 v #15222 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:13:18 v #15223 > > │ ### ok''                                                                     │
00:13:18 v #15224 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:18 v #15225 > >
00:13:18 v #15226 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:18 v #15227 > > inl ok'' forall t u. (x : t) : result' t u =
00:13:18 v #15228 > >     run_target function
00:13:18 v #15229 > >         | Rust _ => fun () => !\\(x, $'"Ok($0)"')
00:13:18 v #15230 > >         | _ => fun () => $'!x |> Ok'
00:13:18 v #15231 > >
00:13:18 v #15232 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:18 v #15233 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:13:18 v #15234 > > │ ### transpose                                                                │
00:13:18 v #15235 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:18 v #15236 > >
00:13:18 v #15237 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:18 v #15238 > > inl transpose forall t u. (x : optionm'.option' (result' t u)) : result'
00:13:18 v #15239 > > (optionm'.option' t) u =
00:13:18 v #15240 > >     !\\(x, $'"$0.transpose()"')
00:13:18 v #15241 > >
00:13:18 v #15242 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:18 v #15243 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:13:18 v #15244 > > │ ### rc_try_unwrap                                                            │
00:13:18 v #15245 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:18 v #15246 > >
00:13:18 v #15247 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:18 v #15248 > > inl rc_try_unwrap forall t. (x : rust.rc t) : result' t (rust.rc t) =
00:13:18 v #15249 > >     !\\(x, $'"std::rc::Rc::try_unwrap($0)"')
00:13:19 v #15250 > >
00:13:19 v #15251 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:19 v #15252 > > //// test
00:13:19 v #15253 > > ///! rust
00:13:19 v #15254 > >
00:13:19 v #15255 > > rust.new_rc true
00:13:19 v #15256 > > |> rc_try_unwrap
00:13:19 v #15257 > > |> unbox
00:13:19 v #15258 > > |> _assert_eq (Ok true)
00:13:33 v #15259 > >
00:13:33 v #15260 > > ╭─[ 14.00s - return value ]────────────────────────────────────────────────────╮
00:13:33 v #15261 > > │ __assert_eq / actual: US0_0(true) / expected: US0_0(true)                    │
00:13:33 v #15262 > > │                                                                              │
00:13:33 v #15263 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:33 v #15264 > 00:00:35 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 23823 }
00:13:33 v #15265 > 00:00:35 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/polyglot/lib/spiral/resultm.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/polyglot/lib/spiral/resultm.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:13:34 v #15266 > 00:00:36 v #5 ! [NbConvertApp] Converting notebook c:/home/git/polyglot/lib/spiral/resultm.dib.ipynb to html
00:13:34 v #15267 > 00:00:36 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:13:34 v #15268 > 00:00:36 v #7 !   validate(nb)
00:13:35 v #15269 > 00:00:36 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:13:35 v #15270 > 00:00:36 v #9 !   return _pygments_highlight(
00:13:35 v #15271 > 00:00:37 v #10 ! [NbConvertApp] Writing 352020 bytes to c:\home\git\polyglot\lib\spiral\resultm.dib.html
00:13:35 v #15272 > 00:00:37 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 856 }
00:13:35 v #15273 > 00:00:37 d #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 856 }
00:13:35 v #15274 > 00:00:37 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/resultm.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/resultm.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:13:36 v #15275 > 00:00:37 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:13:36 v #15276 > 00:00:37 d #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:13:36 v #15277 > 00:00:37 d #16 spiral_builder.run / dib / { exit_code = 0; result_length = 24738 }
00:13:36 d #15278 runtime.execute_with_options_async / { exit_code = 0; output_length = 28280 }
00:13:36 d #17 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder.exe dib --path resultm.dib --retries 3
00:13:36 d #15279 runtime.execute_with_options_async / { file_name = ../../workspace/target/release/spiral_builder.exe; arguments = US5_0 "dib --path console.dib --retries 3"; options = { command = ../../workspace/target/release/spiral_builder.exe dib --path console.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:13:36 v #15280 > 00:00:00 d #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "console.dib", "--retries", "3"])) }
00:13:36 v #15281 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/polyglot/lib/spiral/console.dib", "--output-path", "c:/home/git/polyglot/lib/spiral/console.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/polyglot/lib/spiral/console.dib" --output-path "c:/home/git/polyglot/lib/spiral/console.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:13:37 v #15282 > >
00:13:37 v #15283 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:37 v #15284 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:13:37 v #15285 > > │ # console                                                                    │
00:13:37 v #15286 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:41 v #15287 > >
00:13:41 v #15288 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:41 v #15289 > > //// test
00:13:41 v #15290 > >
00:13:41 v #15291 > > open testing
00:13:42 v #15292 > >
00:13:42 v #15293 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:42 v #15294 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:13:42 v #15295 > > │ ## fsharp                                                                    │
00:13:42 v #15296 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:42 v #15297 > >
00:13:42 v #15298 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:42 v #15299 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:13:42 v #15300 > > │ ### console_color                                                            │
00:13:42 v #15301 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:42 v #15302 > >
00:13:42 v #15303 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:42 v #15304 > > nominal console_color = $'System.ConsoleColor'
00:13:42 v #15305 > >
00:13:42 v #15306 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:42 v #15307 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:13:42 v #15308 > > │ ### reset_color                                                              │
00:13:42 v #15309 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:42 v #15310 > >
00:13:42 v #15311 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:42 v #15312 > > inl reset_color () : () =
00:13:42 v #15313 > >     run_target function
00:13:42 v #15314 > >         | Fsharp => fun () => $'System.Console.ResetColor ()'
00:13:42 v #15315 > >         | _ => fun () => ()
00:13:43 v #15316 > >
00:13:43 v #15317 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:43 v #15318 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:13:43 v #15319 > > │ ### set_foreground_color                                                     │
00:13:43 v #15320 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:43 v #15321 > >
00:13:43 v #15322 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:43 v #15323 > > inl set_foreground_color (color : console_color) : () =
00:13:43 v #15324 > >     run_target function
00:13:43 v #15325 > >         | Fsharp => fun () => $'System.Console.ForegroundColor <- !color '
00:13:43 v #15326 > >         | _ => fun () => ()
00:13:43 v #15327 > >
00:13:43 v #15328 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:43 v #15329 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:13:43 v #15330 > > │ ## console                                                                   │
00:13:43 v #15331 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:43 v #15332 > >
00:13:43 v #15333 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:43 v #15334 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:13:43 v #15335 > > │ ### write_line                                                               │
00:13:43 v #15336 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:43 v #15337 > >
00:13:43 v #15338 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:43 v #15339 > > inl write_line obj : () =
00:13:43 v #15340 > >     backend_switch {
00:13:43 v #15341 > >         Fsharp = fun () =>
00:13:43 v #15342 > >             fun () => obj |> $'System.Console.WriteLine'
00:13:43 v #15343 > >             |> exec_unit
00:13:43 v #15344 > >         Python = fun () => $'print(!obj)' : ()
00:13:43 v #15345 > >     }
00:13:44 v #15346 > >
00:13:44 v #15347 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:44 v #15348 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:13:44 v #15349 > > │ ### write                                                                    │
00:13:44 v #15350 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:44 v #15351 > >
00:13:44 v #15352 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:44 v #15353 > > inl write forall t. (x : t) : () =
00:13:44 v #15354 > >     inl s = x |> sm'.format
00:13:44 v #15355 > >     backend_switch {
00:13:44 v #15356 > >         Python = fun () => $'print(!s, end="")' : ()
00:13:44 v #15357 > >         Fsharp = fun () => $'!s |> System.Console.Write' : ()
00:13:44 v #15358 > >     }
00:13:44 v #15359 > >
00:13:44 v #15360 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:44 v #15361 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:13:44 v #15362 > > │ ### write_ln                                                                 │
00:13:44 v #15363 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:44 v #15364 > >
00:13:44 v #15365 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:44 v #15366 > > inl write_ln l : () =
00:13:44 v #15367 > >     write l
00:13:44 v #15368 > >     backend_switch {
00:13:44 v #15369 > >         Cuda = fun () => $'printf("\\n")' : ()
00:13:44 v #15370 > >         Python = fun () => $"print()" : ()
00:13:44 v #15371 > >         Fsharp = fun () => write_line () : ()
00:13:44 v #15372 > >     }
00:13:44 v #15373 > 00:00:08 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 4503 }
00:13:44 v #15374 > 00:00:08 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/polyglot/lib/spiral/console.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/polyglot/lib/spiral/console.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:13:46 v #15375 > 00:00:09 v #5 ! [NbConvertApp] Converting notebook c:/home/git/polyglot/lib/spiral/console.dib.ipynb to html
00:13:46 v #15376 > 00:00:09 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:13:46 v #15377 > 00:00:09 v #7 !   validate(nb)
00:13:46 v #15378 > 00:00:10 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:13:46 v #15379 > 00:00:10 v #9 !   return _pygments_highlight(
00:13:46 v #15380 > 00:00:10 v #10 ! [NbConvertApp] Writing 283391 bytes to c:\home\git\polyglot\lib\spiral\console.dib.html
00:13:47 v #15381 > 00:00:10 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 856 }
00:13:47 v #15382 > 00:00:10 d #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 856 }
00:13:47 v #15383 > 00:00:10 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/console.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/console.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:13:47 v #15384 > 00:00:11 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:13:47 v #15385 > 00:00:11 d #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:13:47 v #15386 > 00:00:11 d #16 spiral_builder.run / dib / { exit_code = 0; result_length = 5418 }
00:13:47 d #15387 runtime.execute_with_options_async / { exit_code = 0; output_length = 8174 }
00:13:47 d #18 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder.exe dib --path console.dib --retries 3
00:13:47 d #15388 runtime.execute_with_options_async / { file_name = ../../workspace/target/release/spiral_builder.exe; arguments = US5_0 "dib --path base.dib --retries 3"; options = { command = ../../workspace/target/release/spiral_builder.exe dib --path base.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:13:47 v #15389 > 00:00:00 d #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "base.dib", "--retries", "3"])) }
00:13:47 v #15390 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/polyglot/lib/spiral/base.dib", "--output-path", "c:/home/git/polyglot/lib/spiral/base.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/polyglot/lib/spiral/base.dib" --output-path "c:/home/git/polyglot/lib/spiral/base.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:13:49 v #15391 > >
00:13:49 v #15392 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:49 v #15393 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:13:49 v #15394 > > │ # base                                                                       │
00:13:49 v #15395 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:52 v #15396 > >
00:13:52 v #15397 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:52 v #15398 > > //// test
00:13:52 v #15399 > >
00:13:52 v #15400 > > open testing
00:13:53 v #15401 > >
00:13:53 v #15402 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:53 v #15403 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:13:53 v #15404 > > │ ## execution                                                                 │
00:13:53 v #15405 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:53 v #15406 > >
00:13:53 v #15407 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:53 v #15408 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:13:53 v #15409 > > │ ### emit                                                                     │
00:13:53 v #15410 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:53 v #15411 > >
00:13:53 v #15412 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:53 v #15413 > > inl emit forall t. (x : t) : t =
00:13:53 v #15414 > >     $'!x '
00:13:54 v #15415 > >
00:13:54 v #15416 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:54 v #15417 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:13:54 v #15418 > > │ ### emit_unit                                                                │
00:13:54 v #15419 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:54 v #15420 > >
00:13:54 v #15421 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:54 v #15422 > > inl emit_unit forall t. (x : t) : () =
00:13:54 v #15423 > >     $'!x '
00:13:54 v #15424 > >
00:13:54 v #15425 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:54 v #15426 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:13:54 v #15427 > > │ ### use                                                                      │
00:13:54 v #15428 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:54 v #15429 > >
00:13:54 v #15430 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:54 v #15431 > > inl use forall t. (x : t) : t =
00:13:54 v #15432 > >     $'use !x = !x ' : ()
00:13:54 v #15433 > >     $'!x '
00:13:54 v #15434 > >
00:13:54 v #15435 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:54 v #15436 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:13:54 v #15437 > > │ ## type                                                                      │
00:13:54 v #15438 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:54 v #15439 > >
00:13:54 v #15440 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:54 v #15441 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:13:54 v #15442 > > │ ### unit                                                                     │
00:13:54 v #15443 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:54 v #15444 > >
00:13:54 v #15445 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:54 v #15446 > > nominal unit = $'unit'
00:13:55 v #15447 > >
00:13:55 v #15448 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:55 v #15449 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:13:55 v #15450 > > │ ## target                                                                    │
00:13:55 v #15451 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:55 v #15452 > >
00:13:55 v #15453 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:55 v #15454 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:13:55 v #15455 > > │ ### backend_switch                                                           │
00:13:55 v #15456 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:55 v #15457 > >
00:13:55 v #15458 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:55 v #15459 > > inl backend_switch forall t. x : t =
00:13:55 v #15460 > >     real
00:13:55 v #15461 > >         inl backend key : t =
00:13:55 v #15462 > >             inl s = real_core.string_lit_to_symbol key
00:13:55 v #15463 > >             real_core.record_type_try_find `(`x) s
00:13:55 v #15464 > >                 (forall v'. => (x s) ())
00:13:55 v #15465 > >                 (fun () => $'' : t)
00:13:55 v #15466 > >         !!!!BackendSwitch (
00:13:55 v #15467 > >             ("Fsharp", backend "Fsharp"),
00:13:55 v #15468 > >             ("Python", backend "Python"),
00:13:55 v #15469 > >             ("Cuda", backend "Cuda")
00:13:55 v #15470 > >         )
00:13:55 v #15471 > >
00:13:55 v #15472 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:55 v #15473 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:13:55 v #15474 > > │ ### target_runtime                                                           │
00:13:55 v #15475 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:55 v #15476 > >
00:13:55 v #15477 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:55 v #15478 > > union target_runtime =
00:13:55 v #15479 > >     | Native
00:13:55 v #15480 > >     | Wasm
00:13:55 v #15481 > >     | Contract
00:13:56 v #15482 > >
00:13:56 v #15483 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:56 v #15484 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:13:56 v #15485 > > │ ### target                                                                   │
00:13:56 v #15486 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:56 v #15487 > >
00:13:56 v #15488 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:56 v #15489 > > union target =
00:13:56 v #15490 > >     | Fsharp : target_runtime
00:13:56 v #15491 > >     | Cuda : target_runtime
00:13:56 v #15492 > >     | Rust : target_runtime
00:13:56 v #15493 > >     | TypeScript : target_runtime
00:13:56 v #15494 > >     | Python : target_runtime
00:13:56 v #15495 > >
00:13:56 v #15496 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:56 v #15497 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:13:56 v #15498 > > │ ### run_target_args'                                                         │
00:13:56 v #15499 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:56 v #15500 > >
00:13:56 v #15501 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:56 v #15502 > > inl run_target_args' forall t u. (args : u) (fn : target -> (u -> t)) : t =
00:13:56 v #15503 > >     backend_switch {
00:13:56 v #15504 > >         Fsharp = fun () =>
00:13:56 v #15505 > >             inl result = $'()' : unit
00:13:56 v #15506 > >             inl emit_result x : () =
00:13:56 v #15507 > >                 $'let _!result = !x '
00:13:56 v #15508 > >             $'\n#if FABLE_COMPILER || WASM || CONTRACT'
00:13:56 v #15509 > >             $'\n#if FABLE_COMPILER_RUST && \!WASM && \!CONTRACT'
00:13:56 v #15510 > >             inl target = Rust Native
00:13:56 v #15511 > >             fn target args |> emit_result
00:13:56 v #15512 > >             $'#endif\n#if FABLE_COMPILER_RUST && WASM'
00:13:56 v #15513 > >             inl target = Rust Wasm
00:13:56 v #15514 > >             fn target args |> emit_result
00:13:56 v #15515 > >             $'#endif\n#if FABLE_COMPILER_RUST && CONTRACT'
00:13:56 v #15516 > >             inl target = Rust Contract
00:13:56 v #15517 > >             fn target args |> emit_result
00:13:56 v #15518 > >             $'#endif\n#if FABLE_COMPILER_TYPESCRIPT'
00:13:56 v #15519 > >             inl target = TypeScript Native
00:13:56 v #15520 > >             fn target args |> emit_result
00:13:56 v #15521 > >             $'#endif\n#if FABLE_COMPILER_PYTHON'
00:13:56 v #15522 > >             inl target = Python Native
00:13:56 v #15523 > >             fn target args |> emit_result
00:13:56 v #15524 > >             $'#endif\n#if \!FABLE_COMPILER_RUST && \!FABLE_COMPILER_TYPESCRIPT
00:13:56 v #15525 > > && \!FABLE_COMPILER_PYTHON'
00:13:56 v #15526 > >             inl target = Fsharp Wasm
00:13:56 v #15527 > >             fn target args |> emit_result
00:13:56 v #15528 > >             $'#endif\n#else'
00:13:56 v #15529 > >             inl target = Fsharp Native
00:13:56 v #15530 > >             fn target args |> emit_result
00:13:56 v #15531 > >             $'#endif'
00:13:56 v #15532 > >             $'_!result ' : t
00:13:56 v #15533 > >         Python = fun () =>
00:13:56 v #15534 > >             inl target = Cuda Native
00:13:56 v #15535 > >             fn target args
00:13:56 v #15536 > >     }
00:13:56 v #15537 > >
00:13:56 v #15538 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:56 v #15539 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:13:56 v #15540 > > │ ### run_target_args                                                          │
00:13:56 v #15541 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:56 v #15542 > >
00:13:56 v #15543 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:56 v #15544 > > inl run_target_args forall t u. (args : () -> u) (fn : target -> (u -> t)) : t =
00:13:56 v #15545 > >     inl args = args () |> dyn
00:13:56 v #15546 > >     fn |> run_target_args' args
00:13:57 v #15547 > >
00:13:57 v #15548 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:57 v #15549 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:13:57 v #15550 > > │ ### run_target                                                               │
00:13:57 v #15551 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:57 v #15552 > >
00:13:57 v #15553 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:57 v #15554 > > inl run_target forall t. (fn : target -> (() -> t)) : t =
00:13:57 v #15555 > >     run_target_args id fn
00:13:57 v #15556 > >
00:13:57 v #15557 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:57 v #15558 > > //// test
00:13:57 v #15559 > > ///! fsharp
00:13:57 v #15560 > > ///! cuda
00:13:57 v #15561 > > ///! rust
00:13:57 v #15562 > > ///! typescript
00:13:57 v #15563 > > ///! python
00:13:57 v #15564 > >
00:13:57 v #15565 > > run_target function
00:13:57 v #15566 > >     | Fsharp (Native) => fun () => $'1uy'
00:13:57 v #15567 > >     | Cuda (Native) => fun () => $'1'
00:13:57 v #15568 > >     | Rust (Native) => fun () => $'1uy'
00:13:57 v #15569 > >     | TypeScript (Native) => fun () => $'1uy'
00:13:57 v #15570 > >     | Python (Native) => fun () => $'1uy'
00:13:57 v #15571 > >     | _ => fun () => $'2uy'
00:13:57 v #15572 > > |> _assert_eq 1u8
00:14:02 v #15573 > >
00:14:02 v #15574 > > ╭─[ 4.72s - return value ]─────────────────────────────────────────────────────╮
00:14:02 v #15575 > > │ .py output (Cuda):                                                           │
00:14:02 v #15576 > > │ __assert_eq / actual: 1 / expected: 1                                        │
00:14:02 v #15577 > > │                                                                              │
00:14:02 v #15578 > > │ .rs output:                                                                  │
00:14:02 v #15579 > > │ __assert_eq / actual: 1 / expected: 1                                        │
00:14:02 v #15580 > > │                                                                              │
00:14:02 v #15581 > > │ .ts output:                                                                  │
00:14:02 v #15582 > > │ __assert_eq / actual: 1 / expected: 1                                        │
00:14:02 v #15583 > > │                                                                              │
00:14:02 v #15584 > > │ .py output:                                                                  │
00:14:02 v #15585 > > │ __assert_eq / actual: 1 / expected: 1                                        │
00:14:02 v #15586 > > │                                                                              │
00:14:02 v #15587 > > │                                                                              │
00:14:02 v #15588 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:02 v #15589 > >
00:14:02 v #15590 > > ╭─[ 4.73s - stdout ]───────────────────────────────────────────────────────────╮
00:14:02 v #15591 > > │ .fsx output:                                                                 │
00:14:02 v #15592 > > │ __assert_eq / actual: 1uy / expected: 1uy                                    │
00:14:02 v #15593 > > │                                                                              │
00:14:02 v #15594 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:02 v #15595 > >
00:14:02 v #15596 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:02 v #15597 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:14:02 v #15598 > > │ ## function                                                                  │
00:14:02 v #15599 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:02 v #15600 > >
00:14:02 v #15601 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:02 v #15602 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:14:02 v #15603 > > │ ### eval                                                                     │
00:14:02 v #15604 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:02 v #15605 > >
00:14:02 v #15606 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:02 v #15607 > > inl eval fn =
00:14:02 v #15608 > >     fn ()
00:14:02 v #15609 > >
00:14:02 v #15610 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:02 v #15611 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:14:02 v #15612 > > │ ### flip                                                                     │
00:14:02 v #15613 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:02 v #15614 > >
00:14:02 v #15615 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:02 v #15616 > > inl flip fn a b =
00:14:02 v #15617 > >     fn b a
00:14:03 v #15618 > >
00:14:03 v #15619 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:03 v #15620 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:14:03 v #15621 > > │ ### do                                                                       │
00:14:03 v #15622 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:03 v #15623 > >
00:14:03 v #15624 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:03 v #15625 > > inl do (body : () -> ()) : () =
00:14:03 v #15626 > >     !!!!Do (body())
00:14:03 v #15627 > >
00:14:03 v #15628 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:03 v #15629 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:14:03 v #15630 > > │ ### indent                                                                   │
00:14:03 v #15631 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:03 v #15632 > >
00:14:03 v #15633 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:03 v #15634 > > inl indent (body : () -> ()) : () =
00:14:03 v #15635 > >     inl body =
00:14:03 v #15636 > >         fun () =>
00:14:03 v #15637 > >             body ()
00:14:03 v #15638 > >             $'(*' : ()
00:14:03 v #15639 > >     !!!!Indent (body())
00:14:03 v #15640 > >     $'*)'
00:14:04 v #15641 > >
00:14:04 v #15642 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:04 v #15643 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:14:04 v #15644 > > │ ### let'                                                                     │
00:14:04 v #15645 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:04 v #15646 > >
00:14:04 v #15647 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:04 v #15648 > > inl let' fn =
00:14:04 v #15649 > >     inl result : unit = $'()'
00:14:04 v #15650 > >     $'let _!result ='
00:14:04 v #15651 > >     fn |> indent
00:14:04 v #15652 > >     $'_!result '
00:14:04 v #15653 > >
00:14:04 v #15654 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:04 v #15655 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:14:04 v #15656 > > │ ### exec_unit                                                                │
00:14:04 v #15657 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:04 v #15658 > >
00:14:04 v #15659 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:04 v #15660 > > inl exec_unit (fn : () -> ()) : () =
00:14:04 v #15661 > >     backend_switch {
00:14:04 v #15662 > >         Fsharp = fun () =>
00:14:04 v #15663 > >             inl unit = $'()' : $'unit'
00:14:04 v #15664 > >             ($'(fun () -> !fn (); !unit) ()' : $'unit') |> ignore
00:14:04 v #15665 > >         Python = fun () => fn ()
00:14:04 v #15666 > >     }
00:14:04 v #15667 > >
00:14:04 v #15668 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:04 v #15669 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:14:04 v #15670 > > │ ### lazy                                                                     │
00:14:04 v #15671 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:04 v #15672 > >
00:14:04 v #15673 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:04 v #15674 > > nominal lazy t = $'Lazy<`t>'
00:14:05 v #15675 > >
00:14:05 v #15676 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:05 v #15677 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:14:05 v #15678 > > │ ### memoize                                                                  │
00:14:05 v #15679 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:05 v #15680 > >
00:14:05 v #15681 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:05 v #15682 > > nominal lazy t = $'Lazy<`t>'
00:14:05 v #15683 > >
00:14:05 v #15684 > > inl memoize forall t. (fn : () -> t) : () -> t =
00:14:05 v #15685 > >     inl fn = join fn
00:14:05 v #15686 > >     backend_switch {
00:14:05 v #15687 > >         Fsharp = fun () =>
00:14:05 v #15688 > >             inl result : lazy t = $'lazy !fn ()'
00:14:05 v #15689 > >             fun () => $'!result.Value' : t
00:14:05 v #15690 > >         Python = fun () =>
00:14:05 v #15691 > >             inl result = mut None
00:14:05 v #15692 > >             inl computed = mut false
00:14:05 v #15693 > >             fun () =>
00:14:05 v #15694 > >                 if *computed
00:14:05 v #15695 > >                 then *result
00:14:05 v #15696 > >                 else
00:14:05 v #15697 > >                     result <- fn () |> Some
00:14:05 v #15698 > >                     computed <- true
00:14:05 v #15699 > >                     *result
00:14:05 v #15700 > >                 |> optionm.value
00:14:05 v #15701 > >     }
00:14:05 v #15702 > >
00:14:05 v #15703 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:05 v #15704 > > //// test
00:14:05 v #15705 > > ///! fsharp
00:14:05 v #15706 > > ///! cuda
00:14:05 v #15707 > > ///! rust
00:14:05 v #15708 > > ///! typescript
00:14:05 v #15709 > > ///! python
00:14:05 v #15710 > >
00:14:05 v #15711 > > inl count = mut 0i32
00:14:05 v #15712 > > inl add =
00:14:05 v #15713 > >     fun () =>
00:14:05 v #15714 > >         count <- *count + 1
00:14:05 v #15715 > >         count
00:14:05 v #15716 > >     |> memoize
00:14:05 v #15717 > >
00:14:05 v #15718 > > add () |> ignore
00:14:05 v #15719 > > add () |> ignore
00:14:05 v #15720 > > add () |> ignore
00:14:05 v #15721 > >
00:14:05 v #15722 > > *count
00:14:05 v #15723 > > |> _assert_eq 1
00:14:09 v #15724 > >
00:14:09 v #15725 > > ╭─[ 4.10s - return value ]─────────────────────────────────────────────────────╮
00:14:09 v #15726 > > │ .py output (Cuda):                                                           │
00:14:09 v #15727 > > │ __assert_eq / actual: 1 / expected: 1                                        │
00:14:09 v #15728 > > │                                                                              │
00:14:09 v #15729 > > │ .rs output:                                                                  │
00:14:09 v #15730 > > │ __assert_eq / actual: 1 / expected: 1                                        │
00:14:09 v #15731 > > │                                                                              │
00:14:09 v #15732 > > │ .ts output:                                                                  │
00:14:09 v #15733 > > │ __assert_eq / actual: 1 / expected: 1                                        │
00:14:09 v #15734 > > │                                                                              │
00:14:09 v #15735 > > │ .py output:                                                                  │
00:14:09 v #15736 > > │ __assert_eq / actual: 1 / expected: 1                                        │
00:14:09 v #15737 > > │                                                                              │
00:14:09 v #15738 > > │                                                                              │
00:14:09 v #15739 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:09 v #15740 > >
00:14:09 v #15741 > > ╭─[ 4.10s - stdout ]───────────────────────────────────────────────────────────╮
00:14:09 v #15742 > > │ .fsx output:                                                                 │
00:14:09 v #15743 > > │ __assert_eq / actual: 1 / expected: 1                                        │
00:14:09 v #15744 > > │                                                                              │
00:14:09 v #15745 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:09 v #15746 > >
00:14:09 v #15747 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:09 v #15748 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:14:09 v #15749 > > │ ### capture                                                                  │
00:14:09 v #15750 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:09 v #15751 > >
00:14:09 v #15752 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:09 v #15753 > > inl capture forall t. (fn : () -> t) : t =
00:14:09 v #15754 > >     backend_switch {
00:14:09 v #15755 > >         Fsharp = fun () =>
00:14:09 v #15756 > >             inl result = dyn true
00:14:09 v #15757 > >             $'let mutable _!result : `t option = None '
00:14:09 v #15758 > >             $'('
00:14:09 v #15759 > >             $'(fun () ->'
00:14:09 v #15760 > >             $'(fun () ->'
00:14:09 v #15761 > >             fn () |> emit_unit
00:14:09 v #15762 > >             $')'
00:14:09 v #15763 > >             $'|> fun x -> x ()'
00:14:09 v #15764 > >             $') () )'
00:14:09 v #15765 > >             $'|> fun x -> _!result <- Some x'
00:14:09 v #15766 > >             $'match _!result with Some x -> x | None -> failwith "base.capture
00:14:09 v #15767 > > _!result=None"' : t
00:14:09 v #15768 > >         Python = fun () =>
00:14:09 v #15769 > >             fn ()
00:14:09 v #15770 > >     }
00:14:10 v #15771 > >
00:14:10 v #15772 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:10 v #15773 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:14:10 v #15774 > > │ ## arithmetic                                                                │
00:14:10 v #15775 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:10 v #15776 > >
00:14:10 v #15777 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:10 v #15778 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:14:10 v #15779 > > │ ### (+.)                                                                     │
00:14:10 v #15780 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:10 v #15781 > >
00:14:10 v #15782 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:10 v #15783 > > inl (+.) forall t. (a : t) (b : t) : t =
00:14:10 v #15784 > >     $'!a + !b '
00:14:10 v #15785 > >
00:14:10 v #15786 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:10 v #15787 > > //// test
00:14:10 v #15788 > > ///! fsharp
00:14:10 v #15789 > > ///! cuda
00:14:10 v #15790 > > ///! rust
00:14:10 v #15791 > > ///! typescript
00:14:10 v #15792 > > ///! python
00:14:10 v #15793 > >
00:14:10 v #15794 > > ($'3' : i32) +. ($'-6' : i32)
00:14:10 v #15795 > > |> _assert_eq -3i32
00:14:14 v #15796 > >
00:14:14 v #15797 > > ╭─[ 3.52s - return value ]─────────────────────────────────────────────────────╮
00:14:14 v #15798 > > │ .py output (Cuda):                                                           │
00:14:14 v #15799 > > │ __assert_eq / actual: -3 / expected: -3                                      │
00:14:14 v #15800 > > │                                                                              │
00:14:14 v #15801 > > │ .rs output:                                                                  │
00:14:14 v #15802 > > │ __assert_eq / actual: -3 / expected: -3                                      │
00:14:14 v #15803 > > │                                                                              │
00:14:14 v #15804 > > │ .ts output:                                                                  │
00:14:14 v #15805 > > │ __assert_eq / actual: -3 / expected: -3                                      │
00:14:14 v #15806 > > │                                                                              │
00:14:14 v #15807 > > │ .py output:                                                                  │
00:14:14 v #15808 > > │ __assert_eq / actual: -3 / expected: -3                                      │
00:14:14 v #15809 > > │                                                                              │
00:14:14 v #15810 > > │                                                                              │
00:14:14 v #15811 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:14 v #15812 > >
00:14:14 v #15813 > > ╭─[ 3.52s - stdout ]───────────────────────────────────────────────────────────╮
00:14:14 v #15814 > > │ .fsx output:                                                                 │
00:14:14 v #15815 > > │ __assert_eq / actual: -3 / expected: -3                                      │
00:14:14 v #15816 > > │                                                                              │
00:14:14 v #15817 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:14 v #15818 > >
00:14:14 v #15819 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:14 v #15820 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:14:14 v #15821 > > │ ### (-.)                                                                     │
00:14:14 v #15822 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:14 v #15823 > >
00:14:14 v #15824 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:14 v #15825 > > inl (-.) forall t. (a : t) (b : t) : t =
00:14:14 v #15826 > >     $'!a - !b '
00:14:14 v #15827 > >
00:14:14 v #15828 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:14 v #15829 > > //// test
00:14:14 v #15830 > > ///! fsharp
00:14:14 v #15831 > > ///! cuda
00:14:14 v #15832 > > ///! rust
00:14:14 v #15833 > > ///! typescript
00:14:14 v #15834 > > ///! python
00:14:14 v #15835 > >
00:14:14 v #15836 > > ($'3' : i32) -. ($'6' : i32)
00:14:14 v #15837 > > |> _assert_eq -3i32
00:14:17 v #15838 > >
00:14:17 v #15839 > > ╭─[ 3.50s - return value ]─────────────────────────────────────────────────────╮
00:14:17 v #15840 > > │ .py output (Cuda):                                                           │
00:14:17 v #15841 > > │ __assert_eq / actual: -3 / expected: -3                                      │
00:14:17 v #15842 > > │                                                                              │
00:14:17 v #15843 > > │ .rs output:                                                                  │
00:14:17 v #15844 > > │ __assert_eq / actual: -3 / expected: -3                                      │
00:14:17 v #15845 > > │                                                                              │
00:14:17 v #15846 > > │ .ts output:                                                                  │
00:14:17 v #15847 > > │ __assert_eq / actual: -3 / expected: -3                                      │
00:14:17 v #15848 > > │                                                                              │
00:14:17 v #15849 > > │ .py output:                                                                  │
00:14:17 v #15850 > > │ __assert_eq / actual: -3 / expected: -3                                      │
00:14:17 v #15851 > > │                                                                              │
00:14:17 v #15852 > > │                                                                              │
00:14:17 v #15853 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:17 v #15854 > >
00:14:17 v #15855 > > ╭─[ 3.50s - stdout ]───────────────────────────────────────────────────────────╮
00:14:17 v #15856 > > │ .fsx output:                                                                 │
00:14:17 v #15857 > > │ __assert_eq / actual: -3 / expected: -3                                      │
00:14:17 v #15858 > > │                                                                              │
00:14:17 v #15859 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:17 v #15860 > >
00:14:17 v #15861 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:17 v #15862 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:14:17 v #15863 > > │ ### (*.)                                                                     │
00:14:17 v #15864 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:17 v #15865 > >
00:14:17 v #15866 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:17 v #15867 > > inl (*.) forall t. (a : t) (b : t) : t =
00:14:17 v #15868 > >     $'!a * !b '
00:14:18 v #15869 > >
00:14:18 v #15870 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:18 v #15871 > > //// test
00:14:18 v #15872 > > ///! fsharp
00:14:18 v #15873 > > ///! cuda
00:14:18 v #15874 > > ///! rust
00:14:18 v #15875 > > ///! typescript
00:14:18 v #15876 > > ///! python
00:14:18 v #15877 > >
00:14:18 v #15878 > > ($'3' : i32) *. ($'-1' : i32)
00:14:18 v #15879 > > |> _assert_eq -3i32
00:14:21 v #15880 > >
00:14:21 v #15881 > > ╭─[ 3.61s - return value ]─────────────────────────────────────────────────────╮
00:14:21 v #15882 > > │ .py output (Cuda):                                                           │
00:14:21 v #15883 > > │ __assert_eq / actual: -3 / expected: -3                                      │
00:14:21 v #15884 > > │                                                                              │
00:14:21 v #15885 > > │ .rs output:                                                                  │
00:14:21 v #15886 > > │ __assert_eq / actual: -3 / expected: -3                                      │
00:14:21 v #15887 > > │                                                                              │
00:14:21 v #15888 > > │ .ts output:                                                                  │
00:14:21 v #15889 > > │ __assert_eq / actual: -3 / expected: -3                                      │
00:14:21 v #15890 > > │                                                                              │
00:14:21 v #15891 > > │ .py output:                                                                  │
00:14:21 v #15892 > > │ __assert_eq / actual: -3 / expected: -3                                      │
00:14:21 v #15893 > > │                                                                              │
00:14:21 v #15894 > > │                                                                              │
00:14:21 v #15895 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:21 v #15896 > >
00:14:21 v #15897 > > ╭─[ 3.61s - stdout ]───────────────────────────────────────────────────────────╮
00:14:21 v #15898 > > │ .fsx output:                                                                 │
00:14:21 v #15899 > > │ __assert_eq / actual: -3 / expected: -3                                      │
00:14:21 v #15900 > > │                                                                              │
00:14:21 v #15901 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:21 v #15902 > >
00:14:21 v #15903 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:21 v #15904 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:14:21 v #15905 > > │ ### (/.)                                                                     │
00:14:21 v #15906 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:21 v #15907 > >
00:14:21 v #15908 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:21 v #15909 > > inl (/.) forall t. (a : t) (b : t) : t =
00:14:21 v #15910 > >     $'!a / !b '
00:14:22 v #15911 > >
00:14:22 v #15912 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:22 v #15913 > > //// test
00:14:22 v #15914 > > ///! fsharp
00:14:22 v #15915 > > ///! cuda
00:14:22 v #15916 > > ///! rust
00:14:22 v #15917 > > ///! typescript
00:14:22 v #15918 > > ///! python
00:14:22 v #15919 > >
00:14:22 v #15920 > > ($'-3' : i32) /. ($'1' : i32)
00:14:22 v #15921 > > |> _assert_eq -3i32
00:14:25 v #15922 > >
00:14:25 v #15923 > > ╭─[ 3.48s - return value ]─────────────────────────────────────────────────────╮
00:14:25 v #15924 > > │ .py output (Cuda):                                                           │
00:14:25 v #15925 > > │ __assert_eq / actual: -3.0 / expected: -3                                    │
00:14:25 v #15926 > > │                                                                              │
00:14:25 v #15927 > > │ .rs output:                                                                  │
00:14:25 v #15928 > > │ __assert_eq / actual: -3 / expected: -3                                      │
00:14:25 v #15929 > > │                                                                              │
00:14:25 v #15930 > > │ .ts output:                                                                  │
00:14:25 v #15931 > > │ __assert_eq / actual: -3 / expected: -3                                      │
00:14:25 v #15932 > > │                                                                              │
00:14:25 v #15933 > > │ .py output:                                                                  │
00:14:25 v #15934 > > │ __assert_eq / actual: -3 / expected: -3                                      │
00:14:25 v #15935 > > │                                                                              │
00:14:25 v #15936 > > │                                                                              │
00:14:25 v #15937 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:25 v #15938 > >
00:14:25 v #15939 > > ╭─[ 3.48s - stdout ]───────────────────────────────────────────────────────────╮
00:14:25 v #15940 > > │ .fsx output:                                                                 │
00:14:25 v #15941 > > │ __assert_eq / actual: -3 / expected: -3                                      │
00:14:25 v #15942 > > │                                                                              │
00:14:25 v #15943 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:25 v #15944 > >
00:14:25 v #15945 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:25 v #15946 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:14:25 v #15947 > > │ ## comparison                                                                │
00:14:25 v #15948 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:25 v #15949 > >
00:14:25 v #15950 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:25 v #15951 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:14:25 v #15952 > > │ ### (=.)                                                                     │
00:14:25 v #15953 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:25 v #15954 > >
00:14:25 v #15955 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:25 v #15956 > > inl (=.) forall t. (a : t) (b : t) : bool =
00:14:25 v #15957 > >     backend_switch {
00:14:25 v #15958 > >         Fsharp = fun () => $'!a = !b ' : bool
00:14:25 v #15959 > >         Python = fun () => $'!a == !b ' : bool
00:14:25 v #15960 > >     }
00:14:26 v #15961 > >
00:14:26 v #15962 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:26 v #15963 > > //// test
00:14:26 v #15964 > > ///! fsharp
00:14:26 v #15965 > > ///! cuda
00:14:26 v #15966 > > ///! rust
00:14:26 v #15967 > > ///! typescript
00:14:26 v #15968 > > ///! python
00:14:26 v #15969 > >
00:14:26 v #15970 > > ($'-3' : i32) =. ($'-3' : i32)
00:14:26 v #15971 > > |> _assert_eq true
00:14:29 v #15972 > >
00:14:29 v #15973 > > ╭─[ 3.59s - return value ]─────────────────────────────────────────────────────╮
00:14:29 v #15974 > > │ .py output (Cuda):                                                           │
00:14:29 v #15975 > > │ __assert_eq / actual: True / expected: True                                  │
00:14:29 v #15976 > > │                                                                              │
00:14:29 v #15977 > > │ .rs output:                                                                  │
00:14:29 v #15978 > > │ __assert_eq / actual: true / expected: true                                  │
00:14:29 v #15979 > > │                                                                              │
00:14:29 v #15980 > > │ .ts output:                                                                  │
00:14:29 v #15981 > > │ __assert_eq / actual: true / expected: true                                  │
00:14:29 v #15982 > > │                                                                              │
00:14:29 v #15983 > > │ .py output:                                                                  │
00:14:29 v #15984 > > │ __assert_eq / actual: true / expected: true                                  │
00:14:29 v #15985 > > │                                                                              │
00:14:29 v #15986 > > │                                                                              │
00:14:29 v #15987 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:29 v #15988 > >
00:14:29 v #15989 > > ╭─[ 3.59s - stdout ]───────────────────────────────────────────────────────────╮
00:14:29 v #15990 > > │ .fsx output:                                                                 │
00:14:29 v #15991 > > │ __assert_eq / actual: true / expected: true                                  │
00:14:29 v #15992 > > │                                                                              │
00:14:29 v #15993 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:29 v #15994 > >
00:14:29 v #15995 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:29 v #15996 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:14:29 v #15997 > > │ ### (<>.)                                                                    │
00:14:29 v #15998 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:29 v #15999 > >
00:14:29 v #16000 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:29 v #16001 > > inl (<>.) forall t. (a : t) (b : t) : bool =
00:14:29 v #16002 > >     backend_switch {
00:14:29 v #16003 > >         Fsharp = fun () => $'!a <> !b ' : bool
00:14:29 v #16004 > >         Python = fun () => $'!a \!= !b ' : bool
00:14:29 v #16005 > >     }
00:14:30 v #16006 > >
00:14:30 v #16007 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:30 v #16008 > > //// test
00:14:30 v #16009 > > ///! fsharp
00:14:30 v #16010 > > ///! cuda
00:14:30 v #16011 > > ///! rust
00:14:30 v #16012 > > ///! typescript
00:14:30 v #16013 > > ///! python
00:14:30 v #16014 > >
00:14:30 v #16015 > > ($'-3' : i32) <>. ($'3' : i32)
00:14:30 v #16016 > > |> _assert_eq true
00:14:33 v #16017 > >
00:14:33 v #16018 > > ╭─[ 3.68s - return value ]─────────────────────────────────────────────────────╮
00:14:33 v #16019 > > │ .py output (Cuda):                                                           │
00:14:33 v #16020 > > │ __assert_eq / actual: True / expected: True                                  │
00:14:33 v #16021 > > │                                                                              │
00:14:33 v #16022 > > │ .rs output:                                                                  │
00:14:33 v #16023 > > │ __assert_eq / actual: true / expected: true                                  │
00:14:33 v #16024 > > │                                                                              │
00:14:33 v #16025 > > │ .ts output:                                                                  │
00:14:33 v #16026 > > │ __assert_eq / actual: true / expected: true                                  │
00:14:33 v #16027 > > │                                                                              │
00:14:33 v #16028 > > │ .py output:                                                                  │
00:14:33 v #16029 > > │ __assert_eq / actual: true / expected: true                                  │
00:14:33 v #16030 > > │                                                                              │
00:14:33 v #16031 > > │                                                                              │
00:14:33 v #16032 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:33 v #16033 > >
00:14:33 v #16034 > > ╭─[ 3.68s - stdout ]───────────────────────────────────────────────────────────╮
00:14:33 v #16035 > > │ .fsx output:                                                                 │
00:14:33 v #16036 > > │ __assert_eq / actual: true / expected: true                                  │
00:14:33 v #16037 > > │                                                                              │
00:14:33 v #16038 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:33 v #16039 > >
00:14:33 v #16040 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:33 v #16041 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:14:33 v #16042 > > │ ## (<>..)                                                                    │
00:14:33 v #16043 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:33 v #16044 > >
00:14:33 v #16045 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:33 v #16046 > > inl (<>..) a b =
00:14:33 v #16047 > >     fun () => a = b
00:14:33 v #16048 > >     |> dyn
00:14:33 v #16049 > >     |> eval
00:14:33 v #16050 > >     |> not
00:14:34 v #16051 > >
00:14:34 v #16052 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:34 v #16053 > > //// test
00:14:34 v #16054 > > ///! fsharp
00:14:34 v #16055 > > ///! cuda
00:14:34 v #16056 > > ///! rust
00:14:34 v #16057 > > ///! typescript
00:14:34 v #16058 > > ///! python
00:14:34 v #16059 > >
00:14:34 v #16060 > > ($'-3' : i32) <>.. ($'3' : i32)
00:14:34 v #16061 > > |> _assert_eq true
00:14:37 v #16062 > >
00:14:37 v #16063 > > ╭─[ 3.60s - return value ]─────────────────────────────────────────────────────╮
00:14:37 v #16064 > > │ .py output (Cuda):                                                           │
00:14:37 v #16065 > > │ __assert_eq / actual: True / expected: True                                  │
00:14:37 v #16066 > > │                                                                              │
00:14:37 v #16067 > > │ .rs output:                                                                  │
00:14:37 v #16068 > > │ __assert_eq / actual: true / expected: true                                  │
00:14:37 v #16069 > > │                                                                              │
00:14:37 v #16070 > > │ .ts output:                                                                  │
00:14:37 v #16071 > > │ __assert_eq / actual: true / expected: true                                  │
00:14:37 v #16072 > > │                                                                              │
00:14:37 v #16073 > > │ .py output:                                                                  │
00:14:37 v #16074 > > │ __assert_eq / actual: true / expected: true                                  │
00:14:37 v #16075 > > │                                                                              │
00:14:37 v #16076 > > │                                                                              │
00:14:37 v #16077 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:37 v #16078 > >
00:14:37 v #16079 > > ╭─[ 3.60s - stdout ]───────────────────────────────────────────────────────────╮
00:14:37 v #16080 > > │ .fsx output:                                                                 │
00:14:37 v #16081 > > │ __assert_eq / actual: true / expected: true                                  │
00:14:37 v #16082 > > │                                                                              │
00:14:37 v #16083 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:37 v #16084 > >
00:14:37 v #16085 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:37 v #16086 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:14:37 v #16087 > > │ ## composition                                                               │
00:14:37 v #16088 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:37 v #16089 > >
00:14:37 v #16090 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:37 v #16091 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:14:37 v #16092 > > │ ### append                                                                   │
00:14:37 v #16093 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:37 v #16094 > >
00:14:37 v #16095 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:37 v #16096 > > prototype append t : t -> t -> t
00:14:38 v #16097 > >
00:14:38 v #16098 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:38 v #16099 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:14:38 v #16100 > > │ ### (++)                                                                     │
00:14:38 v #16101 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:38 v #16102 > >
00:14:38 v #16103 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:38 v #16104 > > inl (++) a b =
00:14:38 v #16105 > >     b |> append a
00:14:38 v #16106 > >
00:14:38 v #16107 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:38 v #16108 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:14:38 v #16109 > > │ ## pair                                                                      │
00:14:38 v #16110 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:38 v #16111 > >
00:14:38 v #16112 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:38 v #16113 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:14:38 v #16114 > > │ ### pair                                                                     │
00:14:38 v #16115 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:38 v #16116 > >
00:14:38 v #16117 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:38 v #16118 > > nominal pair a b = $'(`a * `b)'
00:14:38 v #16119 > >
00:14:38 v #16120 > > inl pair x y =
00:14:38 v #16121 > >     x, y
00:14:39 v #16122 > >
00:14:39 v #16123 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:39 v #16124 > > //// test
00:14:39 v #16125 > > ///! fsharp
00:14:39 v #16126 > > ///! cuda
00:14:39 v #16127 > > ///! rust
00:14:39 v #16128 > > ///! typescript
00:14:39 v #16129 > > ///! python
00:14:39 v #16130 > >
00:14:39 v #16131 > > pair 1i32 2i32
00:14:39 v #16132 > > |> _assert_eq (1, 2)
00:14:42 v #16133 > >
00:14:42 v #16134 > > ╭─[ 3.47s - return value ]─────────────────────────────────────────────────────╮
00:14:42 v #16135 > > │ .py output (Cuda):                                                           │
00:14:42 v #16136 > > │ __assert_eq / actual: (1, 2) / expected: (1, 2)                              │
00:14:42 v #16137 > > │                                                                              │
00:14:42 v #16138 > > │ .rs output:                                                                  │
00:14:42 v #16139 > > │ __assert_eq / actual: (1, 2) / expected: (1, 2)                              │
00:14:42 v #16140 > > │                                                                              │
00:14:42 v #16141 > > │ .ts output:                                                                  │
00:14:42 v #16142 > > │ __assert_eq / actual: 1,2 / expected: 1,2                                    │
00:14:42 v #16143 > > │                                                                              │
00:14:42 v #16144 > > │ .py output:                                                                  │
00:14:42 v #16145 > > │ __assert_eq / actual: (1, 2) / expected: (1, 2)                              │
00:14:42 v #16146 > > │                                                                              │
00:14:42 v #16147 > > │                                                                              │
00:14:42 v #16148 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:42 v #16149 > >
00:14:42 v #16150 > > ╭─[ 3.47s - stdout ]───────────────────────────────────────────────────────────╮
00:14:42 v #16151 > > │ .fsx output:                                                                 │
00:14:42 v #16152 > > │ __assert_eq / actual: struct (1, 2) / expected: struct (1, 2)                │
00:14:42 v #16153 > > │                                                                              │
00:14:42 v #16154 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:42 v #16155 > >
00:14:42 v #16156 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:42 v #16157 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:14:42 v #16158 > > │ ### new_pair                                                                 │
00:14:42 v #16159 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:42 v #16160 > >
00:14:42 v #16161 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:42 v #16162 > > inl new_pair forall a b. (a : a) (b : b) : pair a b =
00:14:42 v #16163 > >     $'!a, !b '
00:14:42 v #16164 > >
00:14:42 v #16165 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:42 v #16166 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:14:42 v #16167 > > │ ### from_pair                                                                │
00:14:42 v #16168 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:42 v #16169 > >
00:14:42 v #16170 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:42 v #16171 > > inl from_pair forall a b. (pair : pair a b) : a * b =
00:14:42 v #16172 > >     backend_switch {
00:14:42 v #16173 > >         Fsharp = fun () =>
00:14:42 v #16174 > >             $'let (a, b) = !pair '
00:14:42 v #16175 > >             ($'a' : a), ($'b' : b)
00:14:42 v #16176 > >         Python = fun () =>
00:14:42 v #16177 > >             $'a, b = !pair '
00:14:42 v #16178 > >             ($'a' : a), ($'b' : b)
00:14:42 v #16179 > >     }
00:14:43 v #16180 > >
00:14:43 v #16181 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:43 v #16182 > > //// test
00:14:43 v #16183 > > ///! fsharp
00:14:43 v #16184 > > ///! cuda
00:14:43 v #16185 > > ///! rust
00:14:43 v #16186 > > ///! typescript
00:14:43 v #16187 > > ///! python
00:14:43 v #16188 > >
00:14:43 v #16189 > > new_pair "a" (new_pair 1i32 "b")
00:14:43 v #16190 > > |> from_pair
00:14:43 v #16191 > > |> _assert_eq' ("a", (new_pair 1i32 "b"))
00:14:46 v #16192 > >
00:14:46 v #16193 > > ╭─[ 3.46s - return value ]─────────────────────────────────────────────────────╮
00:14:46 v #16194 > > │ .py output (Cuda):                                                           │
00:14:46 v #16195 > > │ __assert_eq' / actual: ('a', (1, 'b')) / expected: ('a', (1, 'b'))           │
00:14:46 v #16196 > > │                                                                              │
00:14:46 v #16197 > > │ .rs output:                                                                  │
00:14:46 v #16198 > > │ __assert_eq' / actual: ("a", (1, "b")) / expected: ("a", (1, "b"))           │
00:14:46 v #16199 > > │                                                                              │
00:14:46 v #16200 > > │ .ts output:                                                                  │
00:14:46 v #16201 > > │ __assert_eq' / actual: a,1,b / expected: a,1,b                               │
00:14:46 v #16202 > > │                                                                              │
00:14:46 v #16203 > > │ .py output:                                                                  │
00:14:46 v #16204 > > │ __assert_eq' / actual: ('a', (1, 'b')) / expected: ('a', (1, 'b'))           │
00:14:46 v #16205 > > │                                                                              │
00:14:46 v #16206 > > │                                                                              │
00:14:46 v #16207 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:46 v #16208 > >
00:14:46 v #16209 > > ╭─[ 3.46s - stdout ]───────────────────────────────────────────────────────────╮
00:14:46 v #16210 > > │ .fsx output:                                                                 │
00:14:46 v #16211 > > │ __assert_eq' / actual: struct ("a", (1, "b")) / expected: struct ("a", (1,   │
00:14:46 v #16212 > > │ "b"))                                                                        │
00:14:46 v #16213 > > │                                                                              │
00:14:46 v #16214 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:46 v #16215 > >
00:14:46 v #16216 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:46 v #16217 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:14:46 v #16218 > > │ ## application                                                               │
00:14:46 v #16219 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:46 v #16220 > >
00:14:46 v #16221 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:46 v #16222 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:14:46 v #16223 > > │ ### (||>)                                                                    │
00:14:46 v #16224 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:46 v #16225 > >
00:14:46 v #16226 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:46 v #16227 > > inl (||>) (arg1, arg2) fn =
00:14:46 v #16228 > >     arg2 |> fn arg1
00:14:47 v #16229 > >
00:14:47 v #16230 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:47 v #16231 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:14:47 v #16232 > > │ ### (||>)                                                                    │
00:14:47 v #16233 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:47 v #16234 > >
00:14:47 v #16235 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:47 v #16236 > > //// test
00:14:47 v #16237 > > ///! fsharp
00:14:47 v #16238 > > ///! cuda
00:14:47 v #16239 > > ///! rust
00:14:47 v #16240 > > ///! typescript
00:14:47 v #16241 > > ///! python
00:14:47 v #16242 > >
00:14:47 v #16243 > > (3i32, 2i32)
00:14:47 v #16244 > > ||> fun a b => a - b
00:14:47 v #16245 > > |> _assert_eq 1
00:14:50 v #16246 > >
00:14:50 v #16247 > > ╭─[ 3.41s - return value ]─────────────────────────────────────────────────────╮
00:14:50 v #16248 > > │ .py output (Cuda):                                                           │
00:14:50 v #16249 > > │ __assert_eq / actual: 1 / expected: 1                                        │
00:14:50 v #16250 > > │                                                                              │
00:14:50 v #16251 > > │ .rs output:                                                                  │
00:14:50 v #16252 > > │ __assert_eq / actual: 1 / expected: 1                                        │
00:14:50 v #16253 > > │                                                                              │
00:14:50 v #16254 > > │ .ts output:                                                                  │
00:14:50 v #16255 > > │ __assert_eq / actual: 1 / expected: 1                                        │
00:14:50 v #16256 > > │                                                                              │
00:14:50 v #16257 > > │ .py output:                                                                  │
00:14:50 v #16258 > > │ __assert_eq / actual: 1 / expected: 1                                        │
00:14:50 v #16259 > > │                                                                              │
00:14:50 v #16260 > > │                                                                              │
00:14:50 v #16261 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:50 v #16262 > >
00:14:50 v #16263 > > ╭─[ 3.42s - stdout ]───────────────────────────────────────────────────────────╮
00:14:50 v #16264 > > │ .fsx output:                                                                 │
00:14:50 v #16265 > > │ __assert_eq / actual: 1 / expected: 1                                        │
00:14:50 v #16266 > > │                                                                              │
00:14:50 v #16267 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:50 v #16268 > >
00:14:50 v #16269 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:50 v #16270 > > //// test
00:14:50 v #16271 > > ///! fsharp
00:14:50 v #16272 > > ///! cuda
00:14:50 v #16273 > > ///! rust
00:14:50 v #16274 > > ///! typescript
00:14:50 v #16275 > > ///! python
00:14:50 v #16276 > >
00:14:50 v #16277 > > (1i32, 2i32)
00:14:50 v #16278 > > ||> flip pair
00:14:50 v #16279 > > |> _assert_eq (2, 1)
00:14:54 v #16280 > >
00:14:54 v #16281 > > ╭─[ 3.54s - return value ]─────────────────────────────────────────────────────╮
00:14:54 v #16282 > > │ .py output (Cuda):                                                           │
00:14:54 v #16283 > > │ __assert_eq / actual: (2, 1) / expected: (2, 1)                              │
00:14:54 v #16284 > > │                                                                              │
00:14:54 v #16285 > > │ .rs output:                                                                  │
00:14:54 v #16286 > > │ __assert_eq / actual: (2, 1) / expected: (2, 1)                              │
00:14:54 v #16287 > > │                                                                              │
00:14:54 v #16288 > > │ .ts output:                                                                  │
00:14:54 v #16289 > > │ __assert_eq / actual: 2,1 / expected: 2,1                                    │
00:14:54 v #16290 > > │                                                                              │
00:14:54 v #16291 > > │ .py output:                                                                  │
00:14:54 v #16292 > > │ __assert_eq / actual: (2, 1) / expected: (2, 1)                              │
00:14:54 v #16293 > > │                                                                              │
00:14:54 v #16294 > > │                                                                              │
00:14:54 v #16295 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:54 v #16296 > >
00:14:54 v #16297 > > ╭─[ 3.54s - stdout ]───────────────────────────────────────────────────────────╮
00:14:54 v #16298 > > │ .fsx output:                                                                 │
00:14:54 v #16299 > > │ __assert_eq / actual: struct (2, 1) / expected: struct (2, 1)                │
00:14:54 v #16300 > > │                                                                              │
00:14:54 v #16301 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:54 v #16302 > >
00:14:54 v #16303 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:54 v #16304 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:14:54 v #16305 > > │ ### fix_condition                                                            │
00:14:54 v #16306 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:54 v #16307 > >
00:14:54 v #16308 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:54 v #16309 > > inl fix_condition x a b =
00:14:54 v #16310 > >     if x ()
00:14:54 v #16311 > >     then a () |> fun x => $'(*' : ()
00:14:54 v #16312 > >     else
00:14:54 v #16313 > >         $'*) else' : ()
00:14:54 v #16314 > >         b () |> fun x => $'(*' : ()
00:14:54 v #16315 > >     |> fun x => $'*)' : ()
00:14:54 v #16316 > >
00:14:54 v #16317 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:54 v #16318 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:14:54 v #16319 > > │ ## type                                                                      │
00:14:54 v #16320 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:54 v #16321 > >
00:14:54 v #16322 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:54 v #16323 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:14:54 v #16324 > > │ ### infer                                                                    │
00:14:54 v #16325 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:54 v #16326 > >
00:14:54 v #16327 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:54 v #16328 > > nominal infer = $'_'
00:14:54 v #16329 > >
00:14:54 v #16330 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:54 v #16331 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:14:54 v #16332 > > │ ### infer'                                                                   │
00:14:54 v #16333 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:54 v #16334 > >
00:14:54 v #16335 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:54 v #16336 > > nominal infer' t = $'_'
00:14:55 v #16337 > >
00:14:55 v #16338 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:55 v #16339 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:14:55 v #16340 > > │ ### any                                                                      │
00:14:55 v #16341 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:55 v #16342 > >
00:14:55 v #16343 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:55 v #16344 > > nominal any = $'obj'
00:14:55 v #16345 > >
00:14:55 v #16346 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:55 v #16347 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:14:55 v #16348 > > │ ### null                                                                     │
00:14:55 v #16349 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:55 v #16350 > >
00:14:55 v #16351 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:55 v #16352 > > inl null forall t. () : t =
00:14:55 v #16353 > >     backend_switch {
00:14:55 v #16354 > >         Fsharp = fun () => $'null |> unbox<`t>' : t
00:14:55 v #16355 > >         Python = fun () => $'None' : t
00:14:55 v #16356 > >     }
00:14:56 v #16357 > >
00:14:56 v #16358 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:56 v #16359 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:14:56 v #16360 > > │ ### defaultof                                                                │
00:14:56 v #16361 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:56 v #16362 > >
00:14:56 v #16363 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:56 v #16364 > > inl defaultof forall t. () : t =
00:14:56 v #16365 > >     $'Unchecked.defaultof<`t>'
00:14:56 v #16366 > >
00:14:56 v #16367 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:56 v #16368 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:14:56 v #16369 > > │ ### choice2'                                                                 │
00:14:56 v #16370 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:56 v #16371 > >
00:14:56 v #16372 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:56 v #16373 > > nominal choice2' a b = $'Choice<`a, `b>'
00:14:57 v #16374 > >
00:14:57 v #16375 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:57 v #16376 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:14:57 v #16377 > > │ ### choice2_unbox                                                            │
00:14:57 v #16378 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:57 v #16379 > >
00:14:57 v #16380 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:57 v #16381 > > inl choice2_unbox forall t1 t2. (choice : choice2' t1 t2) : choice2 t1 t2 =
00:14:57 v #16382 > >     run_target_args (fun () => choice) function
00:14:57 v #16383 > >         | Fsharp _ => fun choice =>
00:14:57 v #16384 > >             inl c1of2 (x : t1) : _ _ t2 = C1of2 x
00:14:57 v #16385 > >             inl c2of2 (x : t2) : _ t1 _ = C2of2 x
00:14:57 v #16386 > >             inl c1of2 = join c1of2
00:14:57 v #16387 > >             inl c2of2 = join c2of2
00:14:57 v #16388 > >             $'match !choice with Choice1Of2 x -> !c1of2 x | Choice2Of2 x ->
00:14:57 v #16389 > > !c2of2 x'
00:14:57 v #16390 > >         | _ => fun _ => null ()
00:14:57 v #16391 > >
00:14:57 v #16392 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:57 v #16393 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:14:57 v #16394 > > │ ## ref                                                                       │
00:14:57 v #16395 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:57 v #16396 > >
00:14:57 v #16397 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:57 v #16398 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:14:57 v #16399 > > │ ### ref                                                                      │
00:14:57 v #16400 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:57 v #16401 > >
00:14:57 v #16402 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:57 v #16403 > > nominal ref t = $'`t ref'
00:14:57 v #16404 > >
00:14:57 v #16405 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:57 v #16406 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:14:57 v #16407 > > │ ### new_ref                                                                  │
00:14:57 v #16408 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:57 v #16409 > >
00:14:57 v #16410 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:57 v #16411 > > inl new_ref forall t. (x : t) : ref t =
00:14:57 v #16412 > >     $'ref !x '
00:14:58 v #16413 > >
00:14:58 v #16414 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:58 v #16415 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:14:58 v #16416 > > │ ### ref_value                                                                │
00:14:58 v #16417 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:58 v #16418 > >
00:14:58 v #16419 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:58 v #16420 > > inl ref_value forall t. (x : ref t) : t =
00:14:58 v #16421 > >     $'!x.Value'
00:14:58 v #16422 > >
00:14:58 v #16423 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:58 v #16424 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:14:58 v #16425 > > │ ### ref_set_value                                                            │
00:14:58 v #16426 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:58 v #16427 > >
00:14:58 v #16428 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:58 v #16429 > > inl ref_set_value forall t. (value : t) (ref : ref t) : ref t =
00:14:58 v #16430 > >     $'!ref.Value <- !value '
00:14:58 v #16431 > >     ref
00:14:59 v #16432 > >
00:14:59 v #16433 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:59 v #16434 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:14:59 v #16435 > > │ ## convert                                                                   │
00:14:59 v #16436 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:59 v #16437 > >
00:14:59 v #16438 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:59 v #16439 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:14:59 v #16440 > > │ ### to                                                                       │
00:14:59 v #16441 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:59 v #16442 > >
00:14:59 v #16443 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:59 v #16444 > > inl to forall t u. (x : t) : u =
00:14:59 v #16445 > >     $'!x ' : u
00:14:59 v #16446 > >
00:14:59 v #16447 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:59 v #16448 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:14:59 v #16449 > > │ ### convert                                                                  │
00:14:59 v #16450 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:59 v #16451 > >
00:14:59 v #16452 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:59 v #16453 > > inl convert forall t u. (x : t) : u =
00:14:59 v #16454 > >     backend_switch {
00:14:59 v #16455 > >         Fsharp = fun () => $'!x |> `u ' : u
00:14:59 v #16456 > >         Python = fun () => $'`u(!x)' : u
00:14:59 v #16457 > >     }
00:14:59 v #16458 > >
00:14:59 v #16459 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:59 v #16460 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:14:59 v #16461 > > │ ### unbox                                                                    │
00:14:59 v #16462 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:59 v #16463 > >
00:14:59 v #16464 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:59 v #16465 > > inl unbox forall t u. (x : t) : u =
00:14:59 v #16466 > >     backend_switch {
00:14:59 v #16467 > >         Fsharp = fun () => $'!x |> unbox<`u>' : u
00:14:59 v #16468 > >         Python = fun () => x |> to : u
00:14:59 v #16469 > >     }
00:15:00 v #16470 > >
00:15:00 v #16471 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:00 v #16472 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:15:00 v #16473 > > │ ### u8                                                                       │
00:15:00 v #16474 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:00 v #16475 > >
00:15:00 v #16476 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:00 v #16477 > > inl u8 forall t. (x : t) : u8 =
00:15:00 v #16478 > >     backend_switch {
00:15:00 v #16479 > >         Fsharp = fun () => x |> $'uint8' : u8
00:15:00 v #16480 > >         Python = fun () => x |> to : u8
00:15:00 v #16481 > >     }
00:15:00 v #16482 > >
00:15:00 v #16483 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:00 v #16484 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:15:00 v #16485 > > │ ### u16                                                                      │
00:15:00 v #16486 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:00 v #16487 > >
00:15:00 v #16488 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:00 v #16489 > > inl u16 forall t. (x : t) : u16 =
00:15:00 v #16490 > >     backend_switch {
00:15:00 v #16491 > >         Fsharp = fun () => x |> $'uint16' : u16
00:15:00 v #16492 > >         Python = fun () => $'!x & 0xFFFF' : u16
00:15:00 v #16493 > >     }
00:15:01 v #16494 > >
00:15:01 v #16495 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:01 v #16496 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:15:01 v #16497 > > │ ### u64                                                                      │
00:15:01 v #16498 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:01 v #16499 > >
00:15:01 v #16500 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:01 v #16501 > > inl u64 forall t. (x : t) : u64 =
00:15:01 v #16502 > >     backend_switch {
00:15:01 v #16503 > >         Fsharp = fun () => x |> $'uint64' : u64
00:15:01 v #16504 > >         Python = fun () => x |> to : u64
00:15:01 v #16505 > >     }
00:15:01 v #16506 > >
00:15:01 v #16507 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:01 v #16508 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:15:01 v #16509 > > │ ### i32                                                                      │
00:15:01 v #16510 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:01 v #16511 > >
00:15:01 v #16512 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:01 v #16513 > > inl i32 forall t. (x : t) : i32 =
00:15:01 v #16514 > >     backend_switch {
00:15:01 v #16515 > >         Fsharp = fun () => x |> convert : i32
00:15:01 v #16516 > >         Python = fun () => x |> convert : i32
00:15:01 v #16517 > >     }
00:15:01 v #16518 > >
00:15:01 v #16519 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:01 v #16520 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:15:01 v #16521 > > │ ### i64                                                                      │
00:15:01 v #16522 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:01 v #16523 > >
00:15:01 v #16524 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:01 v #16525 > > inl i64 forall t. (x : t) : i64 =
00:15:01 v #16526 > >     backend_switch {
00:15:01 v #16527 > >         Fsharp = fun () => x |> $'int64' : i64
00:15:01 v #16528 > >         Python = fun () => x |> to : i64
00:15:01 v #16529 > >     }
00:15:02 v #16530 > >
00:15:02 v #16531 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:02 v #16532 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:15:02 v #16533 > > │ ### f32                                                                      │
00:15:02 v #16534 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:02 v #16535 > >
00:15:02 v #16536 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:02 v #16537 > > inl f32 forall t. (x : t) : f32 =
00:15:02 v #16538 > >     backend_switch {
00:15:02 v #16539 > >         Fsharp = fun () => x |> $'float32' : f32
00:15:02 v #16540 > >         Python = fun () => x |> to : f32
00:15:02 v #16541 > >     }
00:15:02 v #16542 > >
00:15:02 v #16543 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:02 v #16544 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:15:02 v #16545 > > │ ### f64                                                                      │
00:15:02 v #16546 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:02 v #16547 > >
00:15:02 v #16548 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:02 v #16549 > > inl f64 forall t. (x : t) : f64 =
00:15:02 v #16550 > >     backend_switch {
00:15:02 v #16551 > >         Fsharp = fun () => x |> $'float' : f64
00:15:02 v #16552 > >         Python = fun () => x |> to : f64
00:15:02 v #16553 > >     }
00:15:03 v #16554 > >
00:15:03 v #16555 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:03 v #16556 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:15:03 v #16557 > > │ ### unativeint                                                               │
00:15:03 v #16558 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:03 v #16559 > >
00:15:03 v #16560 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:03 v #16561 > > nominal unativeint = $'unativeint'
00:15:03 v #16562 > >
00:15:03 v #16563 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:03 v #16564 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:15:03 v #16565 > > │ ### convert_i32                                                              │
00:15:03 v #16566 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:03 v #16567 > >
00:15:03 v #16568 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:03 v #16569 > > inl convert_i32 forall t. (x : t) : i32 =
00:15:03 v #16570 > >     backend_switch {
00:15:03 v #16571 > >         Fsharp = fun () => x |> $'System.Convert.ToInt32' : i32
00:15:03 v #16572 > >         Python = fun () => x |> to : i32
00:15:03 v #16573 > >     }
00:15:03 v #16574 > >
00:15:03 v #16575 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:03 v #16576 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:15:03 v #16577 > > │ ### convert_i32_base                                                         │
00:15:03 v #16578 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:03 v #16579 > >
00:15:03 v #16580 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:03 v #16581 > > inl convert_i32_base forall t. (base : i32) (x : t) : i32 =
00:15:03 v #16582 > >     backend_switch {
00:15:03 v #16583 > >         Fsharp = fun () => $'System.Convert.ToInt32 (!x, !base)' : i32
00:15:03 v #16584 > >         Python = fun () => $'int (!x, !base)' : i32
00:15:03 v #16585 > >     }
00:15:04 v #16586 > >
00:15:04 v #16587 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:04 v #16588 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:15:04 v #16589 > > │ ### (:>)                                                                     │
00:15:04 v #16590 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:04 v #16591 > >
00:15:04 v #16592 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:04 v #16593 > > prototype (~:>) r : forall t. t -> r
00:15:04 v #16594 > >
00:15:04 v #16595 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:04 v #16596 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:15:04 v #16597 > > │ ### to_any                                                                   │
00:15:04 v #16598 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:04 v #16599 > >
00:15:04 v #16600 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:04 v #16601 > > inl to_any forall t. (obj : t) : any =
00:15:04 v #16602 > >     obj |> to
00:15:05 v #16603 > >
00:15:05 v #16604 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:05 v #16605 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:15:05 v #16606 > > │ ### (~:>) any                                                                │
00:15:05 v #16607 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:05 v #16608 > >
00:15:05 v #16609 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:05 v #16610 > > instance (~:>) any = to_any
00:15:05 v #16611 > >
00:15:05 v #16612 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:05 v #16613 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:15:05 v #16614 > > │ ## error                                                                     │
00:15:05 v #16615 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:05 v #16616 > >
00:15:05 v #16617 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:05 v #16618 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:15:05 v #16619 > > │ ### exn                                                                      │
00:15:05 v #16620 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:05 v #16621 > >
00:15:05 v #16622 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:05 v #16623 > > nominal exn = $"backend_switch `({ Fsharp : $'exn'; Python : $'BaseException'
00:15:05 v #16624 > > })"
00:15:05 v #16625 > >
00:15:05 v #16626 > > inl exn x =
00:15:05 v #16627 > >     x |> $'`exn '
00:15:05 v #16628 > >
00:15:05 v #16629 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:05 v #16630 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:15:05 v #16631 > > │ ### try                                                                      │
00:15:05 v #16632 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:05 v #16633 > >
00:15:05 v #16634 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:05 v #16635 > > inl try forall t. (fn : () -> t) (ex_fn : exn -> option t) : option t =
00:15:05 v #16636 > >     inl some x : option t = Some x
00:15:05 v #16637 > >     inl some = dyn some
00:15:05 v #16638 > >     inl fn = dyn fn
00:15:05 v #16639 > >     inl ex_fn = dyn ex_fn
00:15:05 v #16640 > >     backend_switch {
00:15:05 v #16641 > >         Fsharp = fun () =>
00:15:05 v #16642 > >             $'let result = ref !(None : option t)'
00:15:05 v #16643 > >             $'try'
00:15:05 v #16644 > >             $'    result.Value <- !fn () |> !some '
00:15:05 v #16645 > >             $'with ex ->'
00:15:05 v #16646 > >             $'    result.Value <- !ex_fn ex '
00:15:05 v #16647 > >             $'result.Value' : option t
00:15:05 v #16648 > >         Python = fun () =>
00:15:05 v #16649 > >             $'result = !(None : option t)'
00:15:05 v #16650 > >             inl fn = dyn fn
00:15:05 v #16651 > >             inl ex_fn = dyn ex_fn
00:15:05 v #16652 > >             $'try:'
00:15:05 v #16653 > >             $'    result = !some(!fn())\n        \'\'\''
00:15:05 v #16654 > >             $'\'\'\''
00:15:05 v #16655 > >             $'except Exception as e:'
00:15:05 v #16656 > >             $'    result = !ex_fn(e)'
00:15:05 v #16657 > >             $'result' : option t
00:15:05 v #16658 > >     }
00:15:06 v #16659 > >
00:15:06 v #16660 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:06 v #16661 > > //// test
00:15:06 v #16662 > > ///! fsharp
00:15:06 v #16663 > > ///! cuda
00:15:06 v #16664 > > ///! rust
00:15:06 v #16665 > > ///! typescript
00:15:06 v #16666 > > ///! python
00:15:06 v #16667 > >
00:15:06 v #16668 > > try
00:15:06 v #16669 > >     fun () => a ;[[ 0i32 ]] |> am'.index 1i32 |> sm'.format
00:15:06 v #16670 > >     (fun ex => $'!ex ' |> sm'.format_exception |> Some)
00:15:06 v #16671 > > |> optionm.value
00:15:06 v #16672 > > |> _assert_eq (run_target function
00:15:06 v #16673 > >     | Fsharp => fun () => join "System.IndexOutOfRangeException: Index was
00:15:06 v #16674 > > outside the bounds of the array."
00:15:06 v #16675 > >     | Cuda => fun () => "index 1 is out of bounds for axis 0 with size 1"
00:15:06 v #16676 > >     | Rust => fun () => "Exception { message: \"index out of bounds: the len is
00:15:06 v #16677 > > 1 but the index is 1\" }"
00:15:06 v #16678 > >     | TypeScript => fun () => "Error: Index was outside the bounds of the
00:15:06 v #16679 > > array.\\nParameter name: index"
00:15:06 v #16680 > >     | Python => fun () => "array index out of range"
00:15:06 v #16681 > > )
00:15:10 v #16682 > >
00:15:10 v #16683 > > ╭─[ 4.17s - return value ]─────────────────────────────────────────────────────╮
00:15:10 v #16684 > > │ .py output (Cuda):                                                           │
00:15:10 v #16685 > > │ __assert_eq / actual: index 1 is out of bounds for axis 0 with size 1 /      │
00:15:10 v #16686 > > │ expected: index 1 is out of bounds for axis 0 with size 1                    │
00:15:10 v #16687 > > │                                                                              │
00:15:10 v #16688 > > │ .rs output:                                                                  │
00:15:10 v #16689 > > │ __assert_eq / actual: "Exception { message: "index out of bounds: the len is │
00:15:10 v #16690 > > │ 1 but the index is 1" }" / expected: "Exception { message: "index out of     │
00:15:10 v #16691 > > │ bounds: the len is 1 but the index is 1" }"                                  │
00:15:10 v #16692 > > │                                                                              │
00:15:10 v #16693 > > │ .ts output:                                                                  │
00:15:10 v #16694 > > │ __assert_eq / actual: Error: Index was outside the bounds of the             │
00:15:10 v #16695 > > │ array.\nParameter name: index / expected: Error: Index was outside the       │
00:15:10 v #16696 > > │ bounds of the array.\nParameter name: index                                  │
00:15:10 v #16697 > > │                                                                              │
00:15:10 v #16698 > > │ .py output:                                                                  │
00:15:10 v #16699 > > │ __assert_eq / actual: array index out of range / expected: array index out   │
00:15:10 v #16700 > > │ of range                                                                     │
00:15:10 v #16701 > > │                                                                              │
00:15:10 v #16702 > > │                                                                              │
00:15:10 v #16703 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:10 v #16704 > >
00:15:10 v #16705 > > ╭─[ 4.17s - stdout ]───────────────────────────────────────────────────────────╮
00:15:10 v #16706 > > │ .fsx output:                                                                 │
00:15:10 v #16707 > > │ __assert_eq / actual: "System.IndexOutOfRangeException: Index was outside    │
00:15:10 v #16708 > > │ the bounds of the array." / expected: "System.IndexOutOfRangeException:      │
00:15:10 v #16709 > > │ Index was outside the bounds of the array."                                  │
00:15:10 v #16710 > > │                                                                              │
00:15:10 v #16711 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:10 v #16712 > >
00:15:10 v #16713 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:10 v #16714 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:15:10 v #16715 > > │ ### try_unit                                                                 │
00:15:10 v #16716 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:10 v #16717 > >
00:15:10 v #16718 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:10 v #16719 > > inl try_unit forall t. (fn : () -> ()) (ex_fn : exn -> ()) : t =
00:15:10 v #16720 > >     $'try'
00:15:10 v #16721 > >     fn ()
00:15:10 v #16722 > >     |> ignore
00:15:10 v #16723 > >     $'with ex ->'
00:15:10 v #16724 > >     fun () =>
00:15:10 v #16725 > >         ex_fn $'ex'
00:15:10 v #16726 > >         |> ignore
00:15:10 v #16727 > >     |> indent
00:15:10 v #16728 > >     $'(*'
00:15:10 v #16729 > >     $'*)'
00:15:10 v #16730 > >
00:15:10 v #16731 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:10 v #16732 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:15:10 v #16733 > > │ ### try_unit'                                                                │
00:15:10 v #16734 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:10 v #16735 > >
00:15:10 v #16736 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:10 v #16737 > > inl try_unit' forall t. (ex_fn : exn -> ()) (fn : () -> ()) : t =
00:15:10 v #16738 > >     $'try'
00:15:10 v #16739 > >     fn ()
00:15:10 v #16740 > >     |> ignore
00:15:10 v #16741 > >     $'with ex ->'
00:15:10 v #16742 > >     fun () =>
00:15:10 v #16743 > >         ex_fn $'ex'
00:15:10 v #16744 > >         |> ignore
00:15:10 v #16745 > >     |> indent
00:15:10 v #16746 > >     $'(*'
00:15:10 v #16747 > >     $'*)'
00:15:11 v #16748 > >
00:15:11 v #16749 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:11 v #16750 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:15:11 v #16751 > > │ ### try_finally                                                              │
00:15:11 v #16752 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:11 v #16753 > >
00:15:11 v #16754 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:11 v #16755 > > inl try_finally forall t. (fn : () -> ()) (finally : () -> ()) : t =
00:15:11 v #16756 > >     $'try'
00:15:11 v #16757 > >     fn ()
00:15:11 v #16758 > >     |> ignore
00:15:11 v #16759 > >     $'finally'
00:15:11 v #16760 > >     finally ()
00:15:11 v #16761 > >     |> ignore
00:15:11 v #16762 > >     $'(*'
00:15:11 v #16763 > >     $'*)'
00:15:11 v #16764 > 00:01:24 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 68640 }
00:15:11 v #16765 > 00:01:24 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/polyglot/lib/spiral/base.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/polyglot/lib/spiral/base.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:15:13 v #16766 > 00:01:25 v #5 ! [NbConvertApp] Converting notebook c:/home/git/polyglot/lib/spiral/base.dib.ipynb to html
00:15:13 v #16767 > 00:01:25 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:15:13 v #16768 > 00:01:25 v #7 !   validate(nb)
00:15:13 v #16769 > 00:01:26 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:15:13 v #16770 > 00:01:26 v #9 !   return _pygments_highlight(
00:15:14 v #16771 > 00:01:27 v #10 ! [NbConvertApp] Writing 437740 bytes to c:\home\git\polyglot\lib\spiral\base.dib.html
00:15:14 v #16772 > 00:01:27 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 850 }
00:15:14 v #16773 > 00:01:27 d #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 850 }
00:15:14 v #16774 > 00:01:27 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/base.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/base.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:15:15 v #16775 > 00:01:27 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:15:15 v #16776 > 00:01:27 d #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:15:15 v #16777 > 00:01:27 d #16 spiral_builder.run / dib / { exit_code = 0; result_length = 69549 }
00:15:15 d #16778 runtime.execute_with_options_async / { exit_code = 0; output_length = 74844 }
00:15:15 d #19 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder.exe dib --path base.dib --retries 3
00:15:15 d #16779 runtime.execute_with_options_async / { file_name = ../../workspace/target/release/spiral_builder.exe; arguments = US5_0 "dib --path date_time.dib --retries 3"; options = { command = ../../workspace/target/release/spiral_builder.exe dib --path date_time.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:15:15 v #16780 > 00:00:00 d #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "date_time.dib", "--retries", "3"])) }
00:15:15 v #16781 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/polyglot/lib/spiral/date_time.dib", "--output-path", "c:/home/git/polyglot/lib/spiral/date_time.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/polyglot/lib/spiral/date_time.dib" --output-path "c:/home/git/polyglot/lib/spiral/date_time.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:15:17 v #16782 > >
00:15:17 v #16783 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:17 v #16784 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:15:17 v #16785 > > │ # date_time                                                                  │
00:15:17 v #16786 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:20 v #16787 > >
00:15:20 v #16788 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:20 v #16789 > > open rust.rust_operators
00:15:20 v #16790 > > open sm'_operators
00:15:21 v #16791 > >
00:15:21 v #16792 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:21 v #16793 > > //// test
00:15:21 v #16794 > >
00:15:21 v #16795 > > open testing
00:15:21 v #16796 > >
00:15:21 v #16797 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:21 v #16798 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:15:21 v #16799 > > │ ## date_time                                                                 │
00:15:21 v #16800 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:21 v #16801 > >
00:15:21 v #16802 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:21 v #16803 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:15:21 v #16804 > > │ ### timestamp                                                                │
00:15:21 v #16805 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:21 v #16806 > >
00:15:21 v #16807 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:21 v #16808 > > nominal timestamp_python =
00:15:21 v #16809 > >     `(
00:15:21 v #16810 > >         backend_switch `(()) `({}) {
00:15:21 v #16811 > >             Python = (fun () => global "import datetime") : () -> ()
00:15:21 v #16812 > >         }
00:15:21 v #16813 > >         $'' : i64
00:15:21 v #16814 > >     )
00:15:21 v #16815 > > type timestamp_switch =
00:15:21 v #16816 > >     {
00:15:21 v #16817 > >         Fsharp : i64
00:15:21 v #16818 > >         Python : timestamp_python
00:15:21 v #16819 > >     }
00:15:21 v #16820 > > nominal timestamp = $'backend_switch `(timestamp_switch)'
00:15:21 v #16821 > >
00:15:21 v #16822 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:21 v #16823 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:15:21 v #16824 > > │ ### timestamp_guid                                                           │
00:15:21 v #16825 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:21 v #16826 > >
00:15:21 v #16827 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:21 v #16828 > > type timestamp_guid = guid.guid
00:15:22 v #16829 > >
00:15:22 v #16830 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:22 v #16831 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:15:22 v #16832 > > │ ### date_time_guid                                                           │
00:15:22 v #16833 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:22 v #16834 > >
00:15:22 v #16835 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:22 v #16836 > > type date_time_guid = guid.guid
00:15:22 v #16837 > >
00:15:22 v #16838 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:22 v #16839 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:15:22 v #16840 > > │ ### test_guid                                                                │
00:15:22 v #16841 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:22 v #16842 > >
00:15:22 v #16843 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:22 v #16844 > > //// test
00:15:22 v #16845 > >
00:15:22 v #16846 > > inl test_guid () =
00:15:22 v #16847 > >     guid.new_guid "FEDCBA98-7654-3210-FEDC-BA9876543210"
00:15:23 v #16848 > >
00:15:23 v #16849 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:23 v #16850 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:15:23 v #16851 > > │ ## fsharp                                                                    │
00:15:23 v #16852 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:23 v #16853 > >
00:15:23 v #16854 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:23 v #16855 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:15:23 v #16856 > > │ ### date_time                                                                │
00:15:23 v #16857 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:23 v #16858 > >
00:15:23 v #16859 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:23 v #16860 > > nominal date_time_python =
00:15:23 v #16861 > >     `(
00:15:23 v #16862 > >         backend_switch `(()) `({}) {
00:15:23 v #16863 > >             Python = (fun () => global "import datetime") : () -> ()
00:15:23 v #16864 > >         }
00:15:23 v #16865 > >         $'' : $'datetime.datetime'
00:15:23 v #16866 > >     )
00:15:23 v #16867 > > type date_time_switch =
00:15:23 v #16868 > >     {
00:15:23 v #16869 > >         Fsharp : $'System.DateTime'
00:15:23 v #16870 > >         Python : date_time_python
00:15:23 v #16871 > >     }
00:15:23 v #16872 > > nominal date_time = $'backend_switch `(date_time_switch)'
00:15:23 v #16873 > >
00:15:23 v #16874 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:23 v #16875 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:15:23 v #16876 > > │ ### date_time_milliseconds                                                   │
00:15:23 v #16877 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:23 v #16878 > >
00:15:23 v #16879 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:23 v #16880 > > inl date_time_milliseconds
00:15:23 v #16881 > >     (year : int) (month : int) (day : int) (hour : int) (minute : int) (second :
00:15:23 v #16882 > > int) (millisecond : int)
00:15:23 v #16883 > >     : date_time
00:15:23 v #16884 > >     =
00:15:23 v #16885 > >     backend_switch {
00:15:23 v #16886 > >         Fsharp = fun () =>
00:15:23 v #16887 > >             $'System.DateTime (!year, !month, !day, !hour, !minute, !second,
00:15:23 v #16888 > > !millisecond)' : date_time
00:15:23 v #16889 > >         Python = fun () =>
00:15:23 v #16890 > >             $'datetime.datetime(!year, !month, !day, !hour, !minute, !second,
00:15:23 v #16891 > > !millisecond)' : date_time
00:15:23 v #16892 > >     }
00:15:23 v #16893 > >
00:15:23 v #16894 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:23 v #16895 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:15:23 v #16896 > > │ ### date_time_utc                                                            │
00:15:23 v #16897 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:23 v #16898 > >
00:15:23 v #16899 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:23 v #16900 > > inl date_time_utc
00:15:23 v #16901 > >     (year : int) (month : int) (day : int) (hour : int) (minute : int) (second :
00:15:23 v #16902 > > int)
00:15:23 v #16903 > >     : date_time
00:15:23 v #16904 > >     =
00:15:23 v #16905 > >     backend_switch {
00:15:23 v #16906 > >         Fsharp = fun () =>
00:15:23 v #16907 > >             $'System.DateTime (!year, !month, !day, !hour, !minute, !second,
00:15:23 v #16908 > > System.DateTimeKind.Utc)' : date_time
00:15:23 v #16909 > >         Python = fun () =>
00:15:23 v #16910 > >             $'datetime.datetime(!year, !month, !day, !hour, !minute, !second,
00:15:23 v #16911 > > tzinfo=datetime.timezone.utc)' : date_time
00:15:23 v #16912 > >     }
00:15:24 v #16913 > >
00:15:24 v #16914 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:24 v #16915 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:15:24 v #16916 > > │ ### format                                                                   │
00:15:24 v #16917 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:24 v #16918 > >
00:15:24 v #16919 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:24 v #16920 > > inl format (format : string) (date_time : date_time) : string =
00:15:24 v #16921 > >     backend_switch {
00:15:24 v #16922 > >         Fsharp = fun () => $'!date_time.ToString' format : string
00:15:24 v #16923 > >         Python = fun () => $'!date_time.strftime(!format)' : string
00:15:24 v #16924 > >     }
00:15:24 v #16925 > >
00:15:24 v #16926 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:24 v #16927 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:15:24 v #16928 > > │ ### format_iso8601                                                           │
00:15:24 v #16929 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:24 v #16930 > >
00:15:24 v #16931 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:24 v #16932 > > inl format_iso8601 (date_time : date_time) : string =
00:15:24 v #16933 > >     backend_switch {
00:15:24 v #16934 > >         Fsharp = fun () => date_time |> format "yyyy-MM-ddTHH-mm-ss.fff" :
00:15:24 v #16935 > > string
00:15:24 v #16936 > >         Python = fun () => date_time |> format "%Y-%m-%dT%H-%M-%S.%f" : string
00:15:24 v #16937 > >     }
00:15:25 v #16938 > >
00:15:25 v #16939 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:25 v #16940 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:15:25 v #16941 > > │ ### min_value                                                                │
00:15:25 v #16942 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:25 v #16943 > >
00:15:25 v #16944 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:25 v #16945 > > inl min_value () : date_time =
00:15:25 v #16946 > >     backend_switch {
00:15:25 v #16947 > >         Fsharp = fun () => $'System.DateTime.MinValue' : date_time
00:15:25 v #16948 > >         Python = fun () => $'datetime.datetime.min' : date_time
00:15:25 v #16949 > >     }
00:15:25 v #16950 > >
00:15:25 v #16951 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:25 v #16952 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:15:25 v #16953 > > │ ### max_value                                                                │
00:15:25 v #16954 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:25 v #16955 > >
00:15:25 v #16956 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:25 v #16957 > > inl max_value () : date_time =
00:15:25 v #16958 > >     backend_switch {
00:15:25 v #16959 > >         Fsharp = fun () => $'System.DateTime.MaxValue' : date_time
00:15:25 v #16960 > >         Python = fun () => $'datetime.datetime.max' : date_time
00:15:25 v #16961 > >     }
00:15:25 v #16962 > >
00:15:25 v #16963 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:25 v #16964 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:15:25 v #16965 > > │ ### unix_epoch                                                               │
00:15:25 v #16966 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:25 v #16967 > >
00:15:25 v #16968 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:25 v #16969 > > inl unix_epoch () : date_time =
00:15:25 v #16970 > >     backend_switch {
00:15:25 v #16971 > >         Fsharp = fun () => $'System.DateTime.UnixEpoch' : date_time
00:15:25 v #16972 > >         Python = fun () => $'datetime.datetime(1970, 1, 1)' : date_time
00:15:25 v #16973 > >     }
00:15:26 v #16974 > >
00:15:26 v #16975 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:26 v #16976 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:15:26 v #16977 > > │ ### to_universal_time                                                        │
00:15:26 v #16978 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:26 v #16979 > >
00:15:26 v #16980 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:26 v #16981 > > inl to_universal_time (date_time : date_time) : date_time =
00:15:26 v #16982 > >     backend_switch {
00:15:26 v #16983 > >         Fsharp = fun () => date_time |> $'_.ToUniversalTime()' : date_time
00:15:26 v #16984 > >         Python = fun () => $'!date_time.astimezone(datetime.timezone.utc)' :
00:15:26 v #16985 > > date_time
00:15:26 v #16986 > >     }
00:15:26 v #16987 > >
00:15:26 v #16988 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:26 v #16989 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:15:26 v #16990 > > │ ### date_time_kind                                                           │
00:15:26 v #16991 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:26 v #16992 > >
00:15:26 v #16993 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:26 v #16994 > > union date_time_kind =
00:15:26 v #16995 > >     | Unspecified
00:15:26 v #16996 > >     | Utc
00:15:26 v #16997 > >     | Local
00:15:27 v #16998 > >
00:15:27 v #16999 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:27 v #17000 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:15:27 v #17001 > > │ ### specify_date_kind                                                        │
00:15:27 v #17002 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:27 v #17003 > >
00:15:27 v #17004 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:27 v #17005 > > inl specify_date_kind (kind : date_time_kind) (date_time : date_time) :
00:15:27 v #17006 > > date_time =
00:15:27 v #17007 > >     inl kind : $'System.DateTimeKind' =
00:15:27 v #17008 > >         match kind with
00:15:27 v #17009 > >         | Unspecified => $'System.DateTimeKind.Unspecified'
00:15:27 v #17010 > >         | Utc => $'System.DateTimeKind.Utc'
00:15:27 v #17011 > >         | Local => $'System.DateTimeKind.Local'
00:15:27 v #17012 > >     $'System.DateTime.SpecifyKind (!date_time, !kind)'
00:15:27 v #17013 > >
00:15:27 v #17014 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:27 v #17015 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:15:27 v #17016 > > │ ### time_span                                                                │
00:15:27 v #17017 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:27 v #17018 > >
00:15:27 v #17019 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:27 v #17020 > > nominal time_span_python =
00:15:27 v #17021 > >     `(
00:15:27 v #17022 > >         backend_switch `(()) `({}) {
00:15:27 v #17023 > >             Python = (fun () => global "import datetime") : () -> ()
00:15:27 v #17024 > >         }
00:15:27 v #17025 > >         $'' : $'datetime.timedelta'
00:15:27 v #17026 > >     )
00:15:27 v #17027 > > type time_span_switch =
00:15:27 v #17028 > >     {
00:15:27 v #17029 > >         Fsharp : $'System.TimeSpan'
00:15:27 v #17030 > >         Python : time_span_python
00:15:27 v #17031 > >     }
00:15:27 v #17032 > > nominal time_span = $'backend_switch `(time_span_switch)'
00:15:27 v #17033 > >
00:15:27 v #17034 > > inl time_span x : time_span =
00:15:27 v #17035 > >     backend_switch {
00:15:27 v #17036 > >         Fsharp = fun () => x |> $'`time_span ' : time_span
00:15:27 v #17037 > >         Python = fun () => $'datetime.timedelta(!x)' : time_span
00:15:27 v #17038 > >     }
00:15:28 v #17039 > >
00:15:28 v #17040 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:28 v #17041 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:15:28 v #17042 > > │ ### new_time_span                                                            │
00:15:28 v #17043 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:28 v #17044 > >
00:15:28 v #17045 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:28 v #17046 > > inl new_time_span (a : date_time) (b : date_time) : time_span =
00:15:28 v #17047 > >     $'!b - !a '
00:15:28 v #17048 > >
00:15:28 v #17049 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:28 v #17050 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:15:28 v #17051 > > │ ### total_seconds                                                            │
00:15:28 v #17052 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:28 v #17053 > >
00:15:28 v #17054 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:28 v #17055 > > inl total_seconds (time_span : time_span) : f64 =
00:15:28 v #17056 > >     backend_switch {
00:15:28 v #17057 > >         Fsharp = fun () => time_span |> $'_.TotalSeconds' : f64
00:15:28 v #17058 > >         Python = fun () => $'!time_span.total_seconds()' : f64
00:15:28 v #17059 > >     }
00:15:28 v #17060 > >
00:15:28 v #17061 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:28 v #17062 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:15:28 v #17063 > > │ ### ticks                                                                    │
00:15:28 v #17064 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:28 v #17065 > >
00:15:28 v #17066 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:28 v #17067 > > inl ticks (date_time : date_time) : timestamp =
00:15:28 v #17068 > >     backend_switch {
00:15:28 v #17069 > >         Fsharp = fun () =>
00:15:28 v #17070 > >             run_target function
00:15:28 v #17071 > >                 | Rust (Contract) => fun () => null ()
00:15:28 v #17072 > >                 | _ => fun () => date_time |> $'_.Ticks'
00:15:28 v #17073 > >             : timestamp
00:15:28 v #17074 > >         Python = fun () =>
00:15:28 v #17075 > >             date_time |> new_time_span (min_value ()) |> total_seconds |> ((*)
00:15:28 v #17076 > > 10000000) |> convert : timestamp
00:15:28 v #17077 > >     }
00:15:29 v #17078 > >
00:15:29 v #17079 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:29 v #17080 > > //// test
00:15:29 v #17081 > > ///! fsharp
00:15:29 v #17082 > > ///! cuda
00:15:29 v #17083 > > ///! rust
00:15:29 v #17084 > >
00:15:29 v #17085 > > unix_epoch ()
00:15:29 v #17086 > > |> ticks
00:15:29 v #17087 > > |> _assert_eq' (621355968000000000i64 |> convert)
00:15:33 v #17088 > >
00:15:33 v #17089 > > ╭─[ 4.49s - return value ]─────────────────────────────────────────────────────╮
00:15:33 v #17090 > > │ .py output (Cuda):                                                           │
00:15:33 v #17091 > > │ __assert_eq' / actual: 621355968000000000 / expected: 621355968000000000     │
00:15:33 v #17092 > > │                                                                              │
00:15:33 v #17093 > > │ .rs output:                                                                  │
00:15:33 v #17094 > > │ __assert_eq' / actual: 621355968000000000 / expected: 621355968000000000     │
00:15:33 v #17095 > > │                                                                              │
00:15:33 v #17096 > > │                                                                              │
00:15:33 v #17097 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:33 v #17098 > >
00:15:33 v #17099 > > ╭─[ 4.50s - stdout ]───────────────────────────────────────────────────────────╮
00:15:33 v #17100 > > │ .fsx output:                                                                 │
00:15:33 v #17101 > > │ __assert_eq' / actual: 621355968000000000L / expected: 621355968000000000L   │
00:15:33 v #17102 > > │                                                                              │
00:15:33 v #17103 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:33 v #17104 > >
00:15:33 v #17105 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:33 v #17106 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:15:33 v #17107 > > │ ### time_span_format                                                         │
00:15:33 v #17108 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:33 v #17109 > >
00:15:33 v #17110 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:33 v #17111 > > inl time_span_format (format : string) (time_span : time_span) : string =
00:15:33 v #17112 > >     run_target function
00:15:33 v #17113 > >         | TypeScript _
00:15:33 v #17114 > >         | Python _ => fun () =>
00:15:33 v #17115 > >             $'!time_span.ToString ("c",
00:15:33 v #17116 > > System.Globalization.CultureInfo.InvariantCulture)'
00:15:33 v #17117 > >         | _ => fun () =>
00:15:33 v #17118 > >             $'!time_span.ToString !format '
00:15:34 v #17119 > >
00:15:34 v #17120 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:34 v #17121 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:15:34 v #17122 > > │ ### hours                                                                    │
00:15:34 v #17123 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:34 v #17124 > >
00:15:34 v #17125 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:34 v #17126 > > inl hours (time_span : time_span) : i32 =
00:15:34 v #17127 > >     backend_switch {
00:15:34 v #17128 > >         Fsharp = fun () => time_span |> $'_.Hours' : i32
00:15:34 v #17129 > >         Python = fun () => $'!time_span.seconds // 3600' : i32
00:15:34 v #17130 > >     }
00:15:34 v #17131 > >
00:15:34 v #17132 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:34 v #17133 > > //// test
00:15:34 v #17134 > > ///! fsharp
00:15:34 v #17135 > > ///! cuda
00:15:34 v #17136 > > ///! rust
00:15:34 v #17137 > > ///! typescript
00:15:34 v #17138 > > ///! python
00:15:34 v #17139 > >
00:15:34 v #17140 > > (join date_time_milliseconds 2002 2 2 20 22 24 26)
00:15:34 v #17141 > > |> new_time_span (date_time_milliseconds 2001 1 1 10 11 12 13)
00:15:34 v #17142 > > |> hours
00:15:34 v #17143 > > |> _assert_eq 10
00:15:38 v #17144 > >
00:15:38 v #17145 > > ╭─[ 3.63s - return value ]─────────────────────────────────────────────────────╮
00:15:38 v #17146 > > │ .py output (Cuda):                                                           │
00:15:38 v #17147 > > │ __assert_eq / actual: 10 / expected: 10                                      │
00:15:38 v #17148 > > │                                                                              │
00:15:38 v #17149 > > │ .rs output:                                                                  │
00:15:38 v #17150 > > │ __assert_eq / actual: 10 / expected: 10                                      │
00:15:38 v #17151 > > │                                                                              │
00:15:38 v #17152 > > │ .ts output:                                                                  │
00:15:38 v #17153 > > │ __assert_eq / actual: 10 / expected: 10                                      │
00:15:38 v #17154 > > │                                                                              │
00:15:38 v #17155 > > │ .py output:                                                                  │
00:15:38 v #17156 > > │ __assert_eq / actual: 10 / expected: 10                                      │
00:15:38 v #17157 > > │                                                                              │
00:15:38 v #17158 > > │                                                                              │
00:15:38 v #17159 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:38 v #17160 > >
00:15:38 v #17161 > > ╭─[ 3.63s - stdout ]───────────────────────────────────────────────────────────╮
00:15:38 v #17162 > > │ .fsx output:                                                                 │
00:15:38 v #17163 > > │ __assert_eq / actual: 10 / expected: 10                                      │
00:15:38 v #17164 > > │                                                                              │
00:15:38 v #17165 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:38 v #17166 > >
00:15:38 v #17167 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:38 v #17168 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:15:38 v #17169 > > │ ### minutes                                                                  │
00:15:38 v #17170 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:38 v #17171 > >
00:15:38 v #17172 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:38 v #17173 > > inl minutes (time_span : time_span) : i32 =
00:15:38 v #17174 > >     backend_switch {
00:15:38 v #17175 > >         Fsharp = fun () => time_span |> $'_.Minutes' : i32
00:15:38 v #17176 > >         Python = fun () => $'(!time_span.seconds // 60) % 60' : i32
00:15:38 v #17177 > >     }
00:15:38 v #17178 > >
00:15:38 v #17179 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:38 v #17180 > > //// test
00:15:38 v #17181 > > ///! fsharp
00:15:38 v #17182 > > ///! cuda
00:15:38 v #17183 > > ///! rust
00:15:38 v #17184 > > ///! typescript
00:15:38 v #17185 > > ///! python
00:15:38 v #17186 > >
00:15:38 v #17187 > > (join date_time_milliseconds 2002 2 2 20 22 24 26)
00:15:38 v #17188 > > |> new_time_span (date_time_milliseconds 2001 1 1 10 11 12 13)
00:15:38 v #17189 > > |> minutes
00:15:38 v #17190 > > |> _assert_eq 11
00:15:42 v #17191 > >
00:15:42 v #17192 > > ╭─[ 3.56s - return value ]─────────────────────────────────────────────────────╮
00:15:42 v #17193 > > │ .py output (Cuda):                                                           │
00:15:42 v #17194 > > │ __assert_eq / actual: 11 / expected: 11                                      │
00:15:42 v #17195 > > │                                                                              │
00:15:42 v #17196 > > │ .rs output:                                                                  │
00:15:42 v #17197 > > │ __assert_eq / actual: 11 / expected: 11                                      │
00:15:42 v #17198 > > │                                                                              │
00:15:42 v #17199 > > │ .ts output:                                                                  │
00:15:42 v #17200 > > │ __assert_eq / actual: 11 / expected: 11                                      │
00:15:42 v #17201 > > │                                                                              │
00:15:42 v #17202 > > │ .py output:                                                                  │
00:15:42 v #17203 > > │ __assert_eq / actual: 11 / expected: 11                                      │
00:15:42 v #17204 > > │                                                                              │
00:15:42 v #17205 > > │                                                                              │
00:15:42 v #17206 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:42 v #17207 > >
00:15:42 v #17208 > > ╭─[ 3.56s - stdout ]───────────────────────────────────────────────────────────╮
00:15:42 v #17209 > > │ .fsx output:                                                                 │
00:15:42 v #17210 > > │ __assert_eq / actual: 11 / expected: 11                                      │
00:15:42 v #17211 > > │                                                                              │
00:15:42 v #17212 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:42 v #17213 > >
00:15:42 v #17214 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:42 v #17215 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:15:42 v #17216 > > │ ### seconds                                                                  │
00:15:42 v #17217 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:42 v #17218 > >
00:15:42 v #17219 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:42 v #17220 > > inl seconds (time_span : time_span) : i32 =
00:15:42 v #17221 > >     backend_switch {
00:15:42 v #17222 > >         Fsharp = fun () => time_span |> $'_.Seconds' : i32
00:15:42 v #17223 > >         Python = fun () => $'!time_span.seconds % 60' : i32
00:15:42 v #17224 > >     }
00:15:42 v #17225 > >
00:15:42 v #17226 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:42 v #17227 > > //// test
00:15:42 v #17228 > > ///! fsharp
00:15:42 v #17229 > > ///! cuda
00:15:42 v #17230 > > ///! rust
00:15:42 v #17231 > > ///! typescript
00:15:42 v #17232 > > ///! python
00:15:42 v #17233 > >
00:15:42 v #17234 > > (join date_time_milliseconds 2002 2 2 20 22 24 26)
00:15:42 v #17235 > > |> new_time_span (date_time_milliseconds 2001 1 1 10 11 12 13)
00:15:42 v #17236 > > |> seconds
00:15:42 v #17237 > > |> _assert_eq 12
00:15:46 v #17238 > >
00:15:46 v #17239 > > ╭─[ 3.59s - return value ]─────────────────────────────────────────────────────╮
00:15:46 v #17240 > > │ .py output (Cuda):                                                           │
00:15:46 v #17241 > > │ __assert_eq / actual: 12 / expected: 12                                      │
00:15:46 v #17242 > > │                                                                              │
00:15:46 v #17243 > > │ .rs output:                                                                  │
00:15:46 v #17244 > > │ __assert_eq / actual: 12 / expected: 12                                      │
00:15:46 v #17245 > > │                                                                              │
00:15:46 v #17246 > > │ .ts output:                                                                  │
00:15:46 v #17247 > > │ __assert_eq / actual: 12 / expected: 12                                      │
00:15:46 v #17248 > > │                                                                              │
00:15:46 v #17249 > > │ .py output:                                                                  │
00:15:46 v #17250 > > │ __assert_eq / actual: 12 / expected: 12                                      │
00:15:46 v #17251 > > │                                                                              │
00:15:46 v #17252 > > │                                                                              │
00:15:46 v #17253 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:46 v #17254 > >
00:15:46 v #17255 > > ╭─[ 3.59s - stdout ]───────────────────────────────────────────────────────────╮
00:15:46 v #17256 > > │ .fsx output:                                                                 │
00:15:46 v #17257 > > │ __assert_eq / actual: 12 / expected: 12                                      │
00:15:46 v #17258 > > │                                                                              │
00:15:46 v #17259 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:46 v #17260 > >
00:15:46 v #17261 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:46 v #17262 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:15:46 v #17263 > > │ ### milliseconds                                                             │
00:15:46 v #17264 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:46 v #17265 > >
00:15:46 v #17266 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:46 v #17267 > > inl milliseconds (time_span : time_span) : i32 =
00:15:46 v #17268 > >     backend_switch {
00:15:46 v #17269 > >         Fsharp = fun () => time_span |> $'_.Milliseconds' : i32
00:15:46 v #17270 > >         Python = fun () => $'!time_span.microseconds' : i32
00:15:46 v #17271 > >     }
00:15:46 v #17272 > >
00:15:46 v #17273 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:46 v #17274 > > //// test
00:15:46 v #17275 > > ///! fsharp
00:15:46 v #17276 > > ///! cuda
00:15:46 v #17277 > > ///! rust
00:15:46 v #17278 > > ///! typescript
00:15:46 v #17279 > > ///! python
00:15:46 v #17280 > >
00:15:46 v #17281 > > (join date_time_milliseconds 2002 2 2 20 22 24 26)
00:15:46 v #17282 > > |> new_time_span (date_time_milliseconds 2001 1 1 10 11 12 13)
00:15:46 v #17283 > > |> milliseconds
00:15:46 v #17284 > > |> _assert_eq 13
00:15:50 v #17285 > >
00:15:50 v #17286 > > ╭─[ 3.60s - return value ]─────────────────────────────────────────────────────╮
00:15:50 v #17287 > > │ .py output (Cuda):                                                           │
00:15:50 v #17288 > > │ __assert_eq / actual: 13 / expected: 13                                      │
00:15:50 v #17289 > > │                                                                              │
00:15:50 v #17290 > > │ .rs output:                                                                  │
00:15:50 v #17291 > > │ __assert_eq / actual: 13 / expected: 13                                      │
00:15:50 v #17292 > > │                                                                              │
00:15:50 v #17293 > > │ .ts output:                                                                  │
00:15:50 v #17294 > > │ __assert_eq / actual: 13 / expected: 13                                      │
00:15:50 v #17295 > > │                                                                              │
00:15:50 v #17296 > > │ .py output:                                                                  │
00:15:50 v #17297 > > │ __assert_eq / actual: 13 / expected: 13                                      │
00:15:50 v #17298 > > │                                                                              │
00:15:50 v #17299 > > │                                                                              │
00:15:50 v #17300 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:50 v #17301 > >
00:15:50 v #17302 > > ╭─[ 3.60s - stdout ]───────────────────────────────────────────────────────────╮
00:15:50 v #17303 > > │ .fsx output:                                                                 │
00:15:50 v #17304 > > │ __assert_eq / actual: 13 / expected: 13                                      │
00:15:50 v #17305 > > │                                                                              │
00:15:50 v #17306 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:50 v #17307 > >
00:15:50 v #17308 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:50 v #17309 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:15:50 v #17310 > > │ ### time_zone_info                                                           │
00:15:50 v #17311 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:50 v #17312 > >
00:15:50 v #17313 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:50 v #17314 > > nominal time_zone_info = $'System.TimeZoneInfo'
00:15:50 v #17315 > >
00:15:50 v #17316 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:50 v #17317 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:15:50 v #17318 > > │ ### add_days                                                                 │
00:15:50 v #17319 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:50 v #17320 > >
00:15:50 v #17321 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:50 v #17322 > > inl add_days (days : i32) (date_time : date_time) : date_time =
00:15:50 v #17323 > >     $'!date_time.AddDays' days
00:15:50 v #17324 > >
00:15:50 v #17325 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:50 v #17326 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:15:50 v #17327 > > │ ### now                                                                      │
00:15:50 v #17328 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:50 v #17329 > >
00:15:50 v #17330 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:50 v #17331 > > inl now () : date_time =
00:15:50 v #17332 > >     backend_switch {
00:15:50 v #17333 > >         Fsharp = fun () =>
00:15:50 v #17334 > >             run_target function
00:15:50 v #17335 > >                 | Rust (Contract) => fun () => null ()
00:15:50 v #17336 > >                 | _ => fun () => $'System.DateTime.Now'
00:15:50 v #17337 > >             : date_time
00:15:50 v #17338 > >         Python = fun () => $'datetime.datetime.now()' : date_time
00:15:50 v #17339 > >     }
00:15:51 v #17340 > >
00:15:51 v #17341 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:51 v #17342 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:15:51 v #17343 > > │ ### utc_now                                                                  │
00:15:51 v #17344 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:51 v #17345 > >
00:15:51 v #17346 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:51 v #17347 > > inl utc_now () : date_time =
00:15:51 v #17348 > >     backend_switch {
00:15:51 v #17349 > >         Fsharp = fun () => $'System.DateTime.UtcNow' : date_time
00:15:51 v #17350 > >         Python = fun () => $'datetime.datetime.utcnow()' : date_time
00:15:51 v #17351 > >     }
00:15:51 v #17352 > >
00:15:51 v #17353 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:51 v #17354 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:15:51 v #17355 > > │ ### stopwatch                                                                │
00:15:51 v #17356 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:51 v #17357 > >
00:15:51 v #17358 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:51 v #17359 > > nominal stopwatch_python =
00:15:51 v #17360 > >     `(
00:15:51 v #17361 > >         global "import timeit"
00:15:51 v #17362 > >         $'' : $'timeit.default_timer'
00:15:51 v #17363 > >     )
00:15:51 v #17364 > > type stopwatch_switch =
00:15:51 v #17365 > >     {
00:15:51 v #17366 > >         Fsharp : $'System.Diagnostics.Stopwatch'
00:15:51 v #17367 > >         Python : stopwatch_python
00:15:51 v #17368 > >     }
00:15:51 v #17369 > > nominal stopwatch = $'backend_switch `(stopwatch_switch)'
00:15:51 v #17370 > >
00:15:51 v #17371 > > inl stopwatch () : stopwatch =
00:15:51 v #17372 > >     backend_switch {
00:15:51 v #17373 > >         Fsharp = fun () => $'`stopwatch ' () : stopwatch
00:15:51 v #17374 > >         Python = fun () => $'`stopwatch ' : stopwatch
00:15:51 v #17375 > >     }
00:15:52 v #17376 > >
00:15:52 v #17377 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:52 v #17378 > > inl stopwatch_elapsed_milliseconds (stopwatch : stopwatch) : i64 =
00:15:52 v #17379 > >     $'!stopwatch.ElapsedMilliseconds'
00:15:52 v #17380 > >
00:15:52 v #17381 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:52 v #17382 > > inl stopwatch_start (stopwatch : stopwatch) : () =
00:15:52 v #17383 > >     $'!stopwatch.Start' ()
00:15:52 v #17384 > >
00:15:52 v #17385 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:52 v #17386 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:15:52 v #17387 > > │ ## rust                                                                      │
00:15:52 v #17388 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:52 v #17389 > >
00:15:52 v #17390 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:52 v #17391 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:15:52 v #17392 > > │ ### duration                                                                 │
00:15:52 v #17393 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:52 v #17394 > >
00:15:52 v #17395 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:52 v #17396 > > nominal duration =
00:15:52 v #17397 > >     `(
00:15:52 v #17398 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:15:52 v #17399 > > Fable.Core.Emit(\"std::time::Duration\")>]]\n#endif\ntype std_time_Duration =
00:15:52 v #17400 > > class end"
00:15:52 v #17401 > >         $'' : $'std_time_Duration'
00:15:52 v #17402 > >     )
00:15:53 v #17403 > >
00:15:53 v #17404 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:53 v #17405 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:15:53 v #17406 > > │ ### date_time'                                                               │
00:15:53 v #17407 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:53 v #17408 > >
00:15:53 v #17409 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:53 v #17410 > > nominal date_time' t =
00:15:53 v #17411 > >     `(
00:15:53 v #17412 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:15:53 v #17413 > > Fable.Core.Emit(\"chrono::DateTime<$0>\")>]]\n#endif\ntype chrono_DateTime<'T> =
00:15:53 v #17414 > > class end"
00:15:53 v #17415 > >         $'' : $'chrono_DateTime<`t>'
00:15:53 v #17416 > >     )
00:15:53 v #17417 > >
00:15:53 v #17418 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:53 v #17419 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:15:53 v #17420 > > │ ### local                                                                    │
00:15:53 v #17421 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:53 v #17422 > >
00:15:53 v #17423 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:53 v #17424 > > nominal local =
00:15:53 v #17425 > >     `(
00:15:53 v #17426 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:15:53 v #17427 > > Fable.Core.Emit(\"chrono::Local\")>]]\n#endif\ntype chrono_Local = class end"
00:15:53 v #17428 > >         $'' : $'chrono_Local'
00:15:53 v #17429 > >     )
00:15:54 v #17430 > >
00:15:54 v #17431 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:54 v #17432 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:15:54 v #17433 > > │ ### naive_date_time                                                          │
00:15:54 v #17434 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:54 v #17435 > >
00:15:54 v #17436 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:54 v #17437 > > nominal naive_date_time =
00:15:54 v #17438 > >     `(
00:15:54 v #17439 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:15:54 v #17440 > > Fable.Core.Emit(\"chrono::NaiveDateTime\")>]]\n#endif\ntype chrono_NaiveDateTime
00:15:54 v #17441 > > = class end"
00:15:54 v #17442 > >         $'' : $'chrono_NaiveDateTime'
00:15:54 v #17443 > >     )
00:15:54 v #17444 > >
00:15:54 v #17445 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:54 v #17446 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:15:54 v #17447 > > │ ## utc                                                                       │
00:15:54 v #17448 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:54 v #17449 > >
00:15:54 v #17450 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:54 v #17451 > > nominal utc =
00:15:54 v #17452 > >     `(
00:15:54 v #17453 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:15:54 v #17454 > > Fable.Core.Emit(\"chrono::Utc\")>]]\n#endif\ntype chrono_Utc = class end"
00:15:54 v #17455 > >         $'' : $'chrono_Utc'
00:15:54 v #17456 > >     )
00:15:54 v #17457 > >
00:15:54 v #17458 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:54 v #17459 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:15:54 v #17460 > > │ ### naive_utc                                                                │
00:15:54 v #17461 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:54 v #17462 > >
00:15:54 v #17463 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:54 v #17464 > > inl naive_utc (date_time : date_time' utc) : naive_date_time =
00:15:54 v #17465 > >     !\\(date_time, $'"$0.naive_utc()"')
00:15:55 v #17466 > >
00:15:55 v #17467 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:55 v #17468 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:15:55 v #17469 > > │ ### to_local                                                                 │
00:15:55 v #17470 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:55 v #17471 > >
00:15:55 v #17472 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:55 v #17473 > > inl to_local (date_time : date_time' utc) : date_time' local =
00:15:55 v #17474 > >     inl naive_date_time = date_time |> naive_utc
00:15:55 v #17475 > >     !\\(naive_date_time,
00:15:55 v #17476 > > $'"chrono::offset::TimeZone::from_utc_datetime(&chrono::Local, &$0)"')
00:15:55 v #17477 > >
00:15:55 v #17478 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:55 v #17479 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:15:55 v #17480 > > │ ### from_timestamp_micros                                                    │
00:15:55 v #17481 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:55 v #17482 > >
00:15:55 v #17483 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:55 v #17484 > > inl from_timestamp_micros forall t {number; int}. (timestamp : t) : option
00:15:55 v #17485 > > (date_time' utc) =
00:15:55 v #17486 > >     inl result : optionm'.option' (date_time' utc) =
00:15:55 v #17487 > >         !\\(timestamp, $'"chrono::DateTime::from_timestamp_micros($0)"')
00:15:55 v #17488 > >     result |> optionm'.unbox
00:15:55 v #17489 > >
00:15:55 v #17490 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:55 v #17491 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:15:55 v #17492 > > │ ### format'                                                                  │
00:15:55 v #17493 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:55 v #17494 > >
00:15:55 v #17495 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:55 v #17496 > > inl format' (format : string) (date_time : date_time' utc) : sm'.std_string =
00:15:55 v #17497 > >     !\\((date_time, #format), $'"$0.format($1).to_string()"')
00:15:56 v #17498 > >
00:15:56 v #17499 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:56 v #17500 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:15:56 v #17501 > > │ ### format''                                                                 │
00:15:56 v #17502 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:56 v #17503 > >
00:15:56 v #17504 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:56 v #17505 > > inl format'' (format : string) (date_time : date_time' _) : sm'.std_string =
00:15:56 v #17506 > >     !\\((date_time, #format), $'"$0.format($1).to_string()"')
00:15:56 v #17507 > >
00:15:56 v #17508 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:56 v #17509 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:15:56 v #17510 > > │ ### format_timestamp                                                         │
00:15:56 v #17511 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:56 v #17512 > >
00:15:56 v #17513 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:56 v #17514 > > inl format_timestamp forall t {number; int}. (timestamp : t) =
00:15:56 v #17515 > >     inl timestamp = join timestamp
00:15:56 v #17516 > >     (timestamp / 1000)
00:15:56 v #17517 > >     |> from_timestamp_micros
00:15:56 v #17518 > >     |> optionm.map fun x =>
00:15:56 v #17519 > >         x
00:15:56 v #17520 > >         |> to_local
00:15:56 v #17521 > >         |> format'' "%Y-%m-%d %H:%M:%S"
00:15:56 v #17522 > >         |> sm'.from_std_string
00:15:56 v #17523 > >     |> resultm.from_option
00:15:57 v #17524 > >
00:15:57 v #17525 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:57 v #17526 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:15:57 v #17527 > > │ ### duration_from_millis                                                     │
00:15:57 v #17528 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:57 v #17529 > >
00:15:57 v #17530 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:57 v #17531 > > inl duration_from_millis (ms : u64) : duration =
00:15:57 v #17532 > >     inl ms = join ms
00:15:57 v #17533 > >     !\($'"std::time::Duration::from_millis(!ms)"')
00:15:57 v #17534 > >
00:15:57 v #17535 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:57 v #17536 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:15:57 v #17537 > > │ ## date_time                                                                 │
00:15:57 v #17538 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:57 v #17539 > >
00:15:57 v #17540 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:57 v #17541 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:15:57 v #17542 > > │ ### time_zone_local                                                          │
00:15:57 v #17543 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:57 v #17544 > >
00:15:57 v #17545 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:57 v #17546 > > inl time_zone_local () : time_zone_info =
00:15:57 v #17547 > >     run_target function
00:15:57 v #17548 > >         | Rust (Native) => fun () =>
00:15:57 v #17549 > >             open rust.rust_operators
00:15:57 v #17550 > >             !\($'"0i64.into()"')
00:15:57 v #17551 > >         | Fsharp _ => fun () =>
00:15:57 v #17552 > >             $'System.TimeZoneInfo.Local'
00:15:57 v #17553 > >         | _ => fun () => null ()
00:15:57 v #17554 > >
00:15:57 v #17555 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:57 v #17556 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:15:57 v #17557 > > │ ### get_utc_offset                                                           │
00:15:57 v #17558 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:57 v #17559 > >
00:15:57 v #17560 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:57 v #17561 > > inl get_utc_offset (time_zone_info : time_zone_info) (date_time : date_time) :
00:15:57 v #17562 > > time_span =
00:15:57 v #17563 > >     run_target function
00:15:57 v #17564 > >         | Rust _ => fun () => time_span ()
00:15:57 v #17565 > >         | Fsharp _ => fun () => date_time |> $'_.GetUtcOffset' (time_zone_local
00:15:57 v #17566 > > ())
00:15:57 v #17567 > >         | target => fun () => failwith $'$"date_time.get_utc_offset / target:
00:15:57 v #17568 > > {!target}"'
00:15:58 v #17569 > >
00:15:58 v #17570 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:58 v #17571 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:15:58 v #17572 > > │ ### date_time_guid_from_date_time                                            │
00:15:58 v #17573 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:58 v #17574 > >
00:15:58 v #17575 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:58 v #17576 > > let date_time_guid_from_date_time (guid : guid.guid) (date_time : date_time) =
00:15:58 v #17577 > >     inl create prefix time_zone : date_time_guid =
00:15:58 v #17578 > >         inl guid = guid |> sm'.obj_to_string
00:15:58 v #17579 > >         $'`date_time_guid $"{!prefix}{!time_zone}{!guid.[[!prefix.Length +
00:15:58 v #17580 > > !time_zone.Length..]]}"'
00:15:58 v #17581 > >     run_target function
00:15:58 v #17582 > >         | Rust (Contract) => fun () => null ()
00:15:58 v #17583 > >         | Rust (Native | Wasm) => fun () =>
00:15:58 v #17584 > >             inl epoch =
00:15:58 v #17585 > >                 date_time_utc 1970 1 1 0 0 0
00:15:58 v #17586 > >                 |> to_universal_time
00:15:58 v #17587 > >             inl date_time =
00:15:58 v #17588 > >                 date_time
00:15:58 v #17589 > >                 |> specify_date_kind Local
00:15:58 v #17590 > >                 |> to_universal_time
00:15:58 v #17591 > >             inl unixticks =
00:15:58 v #17592 > >                 match date_time |> ticks, epoch |> ticks with
00:15:58 v #17593 > >                 | timestamp date_time, timestamp epoch => convert date_time -
00:15:58 v #17594 > > convert epoch : i64
00:15:58 v #17595 > >             inl prefix =
00:15:58 v #17596 > >                 unixticks / 10
00:15:58 v #17597 > >                 |> from_timestamp_micros
00:15:58 v #17598 > >                 |> optionm.map (
00:15:58 v #17599 > >                     to_local
00:15:58 v #17600 > >                     >> format'' "%Y%m%d-%H%M-%S%f"
00:15:58 v #17601 > >                     >> sm'.from_std_string
00:15:58 v #17602 > >                     >> fun s => $'$"{!s.[[0..17]]}-{!s.[[18..21]]}-{!s.[[22]]}"'
00:15:58 v #17603 > >                 )
00:15:58 v #17604 > >                 |> optionm'.default_value ""
00:15:58 v #17605 > >             inl time_zone = date_time |> get_utc_offset (time_zone_local ())
00:15:58 v #17606 > >             inl time_zone_signal = if hours time_zone > 0 then 1u8 else 0
00:15:58 v #17607 > >             inl time_zone_value = time_zone |> time_span_format (join "hh:mm")
00:15:58 v #17608 > >             inl time_zone =
00:15:58 v #17609 > > $'$"{!time_zone_signal}{!time_zone_value.[[0..1]]}{!time_zone_value.[[3..4]]}"'
00:15:58 v #17610 > > : string
00:15:58 v #17611 > >             create prefix time_zone
00:15:58 v #17612 > >         | target => fun () =>
00:15:58 v #17613 > >             inl prefix = date_time |> format (join "yyyyMMdd-HHmm-ssff-ffff-f")
00:15:58 v #17614 > >             inl time_zone = date_time |> get_utc_offset (time_zone_local ())
00:15:58 v #17615 > >             inl time_zone_signal = if hours time_zone > 0 then 1u8 else 0
00:15:58 v #17616 > >             inl time_zone_value = time_zone |> time_span_format (join "hhmm")
00:15:58 v #17617 > >             inl time_zone = $'$"{!time_zone_signal}{!time_zone_value}"' : string
00:15:58 v #17618 > >             create prefix time_zone
00:15:58 v #17619 > >
00:15:58 v #17620 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:58 v #17621 > > //// test
00:15:58 v #17622 > > ///! fsharp
00:15:58 v #17623 > >
00:15:58 v #17624 > > unix_epoch ()
00:15:58 v #17625 > > |> to_universal_time
00:15:58 v #17626 > > |> date_time_guid_from_date_time (test_guid ())
00:15:58 v #17627 > > |> sm'.obj_to_string
00:15:58 v #17628 > > |> _assert_eq "19700101-0000-0000-0000-000200543210"
00:15:59 v #17629 > >
00:15:59 v #17630 > > ╭─[ 1.11s - stdout ]───────────────────────────────────────────────────────────╮
00:15:59 v #17631 > > │ __assert_eq / actual: "19700101-0000-0000-0000-000200543210" / expected:     │
00:15:59 v #17632 > > │ "19700101-0000-0000-0000-000200543210"                                       │
00:15:59 v #17633 > > │                                                                              │
00:15:59 v #17634 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:59 v #17635 > >
00:15:59 v #17636 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:59 v #17637 > > //// test
00:15:59 v #17638 > > ///! rust -d chrono
00:15:59 v #17639 > >
00:15:59 v #17640 > > inl suffix = test_guid () |> sm'.obj_to_string |> sm'.range (am'.End fun x => x
00:15:59 v #17641 > > - 6i32) (am'.End id)
00:15:59 v #17642 > > unix_epoch ()
00:15:59 v #17643 > > |> to_universal_time
00:15:59 v #17644 > > |> date_time_guid_from_date_time (test_guid ())
00:15:59 v #17645 > > |> sm'.obj_to_string
00:15:59 v #17646 > > |> fun s => s |> _assert_eq' $'$"{!s.[[0..29]]}{!suffix}"'
00:16:14 v #17647 > >
00:16:14 v #17648 > > ╭─[ 14.42s - return value ]────────────────────────────────────────────────────╮
00:16:14 v #17649 > > │ __assert_eq' / actual: "19700101-0000-0000-0000-000000543210" / expected:    │
00:16:14 v #17650 > > │ "19700101-0000-0000-0000-000000543210"                                       │
00:16:14 v #17651 > > │                                                                              │
00:16:14 v #17652 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:14 v #17653 > >
00:16:14 v #17654 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:14 v #17655 > > //// test
00:16:14 v #17656 > > ///! fsharp
00:16:14 v #17657 > > ///! rust -d chrono
00:16:14 v #17658 > >
00:16:14 v #17659 > > inl suffix = test_guid () |> sm'.obj_to_string |> sm'.range (am'.End fun x => x
00:16:14 v #17660 > > - 6i32) (am'.End id)
00:16:14 v #17661 > > min_value ()
00:16:14 v #17662 > > |> specify_date_kind Local
00:16:14 v #17663 > > |> date_time_guid_from_date_time (test_guid ())
00:16:14 v #17664 > > |> sm'.obj_to_string
00:16:14 v #17665 > > |> fun s => s |> _assert_eq'
00:16:14 v #17666 > > $'$"00010101-0000-0000-0000-0{!s.[[25..29]]}{!suffix}"'
00:16:28 v #17667 > >
00:16:28 v #17668 > > ╭─[ 13.90s - return value ]────────────────────────────────────────────────────╮
00:16:28 v #17669 > > │ .rs output (rust -d chrono):                                                 │
00:16:28 v #17670 > > │ __assert_eq' / actual: "00010101-0000-0000-0000-000000543210" / expected:    │
00:16:28 v #17671 > > │ "00010101-0000-0000-0000-000000543210"                                       │
00:16:28 v #17672 > > │                                                                              │
00:16:28 v #17673 > > │                                                                              │
00:16:28 v #17674 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:28 v #17675 > >
00:16:28 v #17676 > > ╭─[ 13.90s - stdout ]──────────────────────────────────────────────────────────╮
00:16:28 v #17677 > > │ .fsx output:                                                                 │
00:16:28 v #17678 > > │ __assert_eq' / actual: "00010101-0000-0000-0000-000200543210" / expected:    │
00:16:28 v #17679 > > │ "00010101-0000-0000-0000-000200543210"                                       │
00:16:28 v #17680 > > │                                                                              │
00:16:28 v #17681 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:28 v #17682 > >
00:16:28 v #17683 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:28 v #17684 > > //// test
00:16:28 v #17685 > > ///! fsharp
00:16:28 v #17686 > >
00:16:28 v #17687 > > inl suffix = test_guid () |> sm'.obj_to_string |> sm'.range (am'.End fun x => x
00:16:28 v #17688 > > - 6i32) (am'.End id)
00:16:28 v #17689 > > max_value ()
00:16:28 v #17690 > > |> specify_date_kind Utc
00:16:28 v #17691 > > |> add_days -1
00:16:28 v #17692 > > |> date_time_guid_from_date_time (test_guid ())
00:16:28 v #17693 > > |> sm'.obj_to_string
00:16:28 v #17694 > > |> fun s => s |> _assert_eq
00:16:28 v #17695 > > $'$"99991230-2359-5999-9999-9{!s.[[25..29]]}{!suffix}"'
00:16:28 v #17696 > >
00:16:28 v #17697 > > ╭─[ 523.75ms - stdout ]────────────────────────────────────────────────────────╮
00:16:28 v #17698 > > │ __assert_eq / actual: "99991230-2359-5999-9999-900300543210" / expected:     │
00:16:28 v #17699 > > │ "99991230-2359-5999-9999-900300543210"                                       │
00:16:28 v #17700 > > │                                                                              │
00:16:28 v #17701 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:28 v #17702 > >
00:16:28 v #17703 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:28 v #17704 > > //// test
00:16:28 v #17705 > > ///! rust -d chrono
00:16:28 v #17706 > >
00:16:28 v #17707 > > inl suffix = test_guid () |> sm'.obj_to_string |> sm'.range (am'.End fun x => x
00:16:28 v #17708 > > - 6i32) (am'.End id)
00:16:28 v #17709 > > max_value ()
00:16:28 v #17710 > > |> specify_date_kind Utc
00:16:28 v #17711 > > |> add_days -1
00:16:28 v #17712 > > |> date_time_guid_from_date_time (test_guid ())
00:16:28 v #17713 > > |> sm'.obj_to_string
00:16:28 v #17714 > > |> fun s => s |> _assert_eq
00:16:28 v #17715 > > $'$"99991230-2359-5999-9999-0{!s.[[25..29]]}{!suffix}"'
00:16:42 v #17716 > >
00:16:42 v #17717 > > ╭─[ 13.91s - return value ]────────────────────────────────────────────────────╮
00:16:42 v #17718 > > │ __assert_eq / actual: "99991230-2359-5999-9999-000000543210" / expected:     │
00:16:42 v #17719 > > │ "99991230-2359-5999-9999-000000543210"                                       │
00:16:42 v #17720 > > │                                                                              │
00:16:42 v #17721 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:42 v #17722 > >
00:16:42 v #17723 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:42 v #17724 > > //// test
00:16:42 v #17725 > >
00:16:42 v #17726 > > inl suffix = test_guid () |> sm'.obj_to_string |> sm'.range (am'.End fun x => x
00:16:42 v #17727 > > - 6i32) (am'.End id)
00:16:42 v #17728 > > unix_epoch ()
00:16:42 v #17729 > > |> specify_date_kind Utc
00:16:42 v #17730 > > |> add_days 1
00:16:42 v #17731 > > |> date_time_guid_from_date_time (test_guid ())
00:16:42 v #17732 > > |> sm'.obj_to_string
00:16:42 v #17733 > > |> fun s => s |> _assert_eq
00:16:42 v #17734 > > $'$"19700102-0000-0000-0000-0{!s.[[25..29]]}{!suffix}"'
00:16:42 v #17735 > >
00:16:42 v #17736 > > ╭─[ 529.08ms - stdout ]────────────────────────────────────────────────────────╮
00:16:42 v #17737 > > │ __assert_eq / actual: "19700102-0000-0000-0000-000200543210" / expected:     │
00:16:42 v #17738 > > │ "19700102-0000-0000-0000-000200543210"                                       │
00:16:42 v #17739 > > │                                                                              │
00:16:42 v #17740 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:42 v #17741 > >
00:16:42 v #17742 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:42 v #17743 > > //// test
00:16:42 v #17744 > > ///! rust -d chrono
00:16:42 v #17745 > >
00:16:42 v #17746 > > inl suffix = test_guid () |> sm'.obj_to_string |> sm'.range (am'.End fun x => x
00:16:42 v #17747 > > - 6i32) (am'.End id)
00:16:42 v #17748 > > unix_epoch ()
00:16:42 v #17749 > > |> specify_date_kind Utc
00:16:42 v #17750 > > |> add_days 1
00:16:42 v #17751 > > |> date_time_guid_from_date_time (test_guid ())
00:16:43 v #17752 > > |> sm'.obj_to_string
00:16:43 v #17753 > > |> fun s => s |> _assert_eq
00:16:43 v #17754 > > $'$"19700102-0000-0000-0000-0{!s.[[25..29]]}{!suffix}"'
00:16:56 v #17755 > >
00:16:56 v #17756 > > ╭─[ 13.59s - return value ]────────────────────────────────────────────────────╮
00:16:56 v #17757 > > │ __assert_eq / actual: "19700102-0000-0000-0000-000000543210" / expected:     │
00:16:56 v #17758 > > │ "19700102-0000-0000-0000-000000543210"                                       │
00:16:56 v #17759 > > │                                                                              │
00:16:56 v #17760 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:56 v #17761 > >
00:16:56 v #17762 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:56 v #17763 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:56 v #17764 > > │ ### date_time_from_guid                                                      │
00:16:56 v #17765 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:56 v #17766 > >
00:16:56 v #17767 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:56 v #17768 > > inl date_time_from_guid (date_time_guid : date_time_guid) =
00:16:56 v #17769 > >     inl date_time_guid = date_time_guid |> sm'.obj_to_string
00:16:56 v #17770 > >     inl sm_replace = sm'.replace "-" ""
00:16:56 v #17771 > >     run_target_args (fun () => sm_replace) function
00:16:56 v #17772 > >         | (Rust _ | TypeScript _) => fun sm_replace =>
00:16:56 v #17773 > >             $'System.DateTime.Parse (!date_time_guid.[[..24]] |> !sm_replace)' :
00:16:56 v #17774 > > date_time
00:16:56 v #17775 > >         | _ => fun sm_replace => $'System.DateTime.ParseExact
00:16:56 v #17776 > > (!date_time_guid.[[..24]] |> !sm_replace, "yyyyMMddHHmmssfffffff", null)' :
00:16:56 v #17777 > > date_time
00:16:56 v #17778 > >
00:16:56 v #17779 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:56 v #17780 > > //// test
00:16:56 v #17781 > >
00:16:56 v #17782 > > date_time_from_guid (guid.new_guid "00010101-0000-0000-0000-0a9876543210")
00:16:56 v #17783 > > |> _assert_eq' (min_value ())
00:16:57 v #17784 > >
00:16:57 v #17785 > > ╭─[ 482.21ms - stdout ]────────────────────────────────────────────────────────╮
00:16:57 v #17786 > > │ __assert_eq' / actual: 0001-01-01 12:00:00 AM / expected: 0001-01-01         │
00:16:57 v #17787 > > │ 12:00:00 AM                                                                  │
00:16:57 v #17788 > > │                                                                              │
00:16:57 v #17789 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:57 v #17790 > >
00:16:57 v #17791 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:57 v #17792 > > //// test
00:16:57 v #17793 > >
00:16:57 v #17794 > > date_time_from_guid (guid.new_guid $'$"99991231-2359-5999-9999-9{(!test_guid ()
00:16:57 v #17795 > > |> string).[[^10..]]}"')
00:16:57 v #17796 > > |> _assert_eq' (max_value ())
00:16:57 v #17797 > >
00:16:57 v #17798 > > ╭─[ 411.22ms - stdout ]────────────────────────────────────────────────────────╮
00:16:57 v #17799 > > │ __assert_eq' / actual: 9999-12-31 11:59:59 PM / expected: 9999-12-31         │
00:16:57 v #17800 > > │ 11:59:59 PM                                                                  │
00:16:57 v #17801 > > │                                                                              │
00:16:57 v #17802 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:57 v #17803 > >
00:16:57 v #17804 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:57 v #17805 > > //// test
00:16:57 v #17806 > >
00:16:57 v #17807 > > date_time_from_guid (guid.new_guid $'$"19700101-0000-0000-0000-0{(!test_guid ()
00:16:57 v #17808 > > |> string).[[^10..]]}"')
00:16:57 v #17809 > > |> _assert_eq' $'System.DateTime.UnixEpoch'
00:16:58 v #17810 > >
00:16:58 v #17811 > > ╭─[ 402.46ms - stdout ]────────────────────────────────────────────────────────╮
00:16:58 v #17812 > > │ __assert_eq' / actual: 1970-01-01 12:00:00 AM / expected: 1970-01-01         │
00:16:58 v #17813 > > │ 12:00:00 AM                                                                  │
00:16:58 v #17814 > > │                                                                              │
00:16:58 v #17815 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:58 v #17816 > >
00:16:58 v #17817 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:58 v #17818 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:58 v #17819 > > │ ### timestamp_guid_from_timestamp                                            │
00:16:58 v #17820 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:58 v #17821 > >
00:16:58 v #17822 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:58 v #17823 > > inl timestamp_guid_from_timestamp (guid : guid.guid) (timestamp : timestamp) :
00:16:58 v #17824 > > timestamp_guid =
00:16:58 v #17825 > >     inl guid = guid |> sm'.obj_to_string
00:16:58 v #17826 > >     inl timestamp = timestamp |> sm'.obj_to_string |> sm'.pad_left 18i32 '0'
00:16:58 v #17827 > >     $'`timestamp_guid
00:16:58 v #17828 > > $"{!timestamp.[[0..7]]}-{!timestamp.[[8..11]]}-{!timestamp.[[12..15]]}-{!timesta
00:16:58 v #17829 > > mp.[[16..17]]}{!guid.[[21..]]}"'
00:16:58 v #17830 > >
00:16:58 v #17831 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:58 v #17832 > > //// test
00:16:58 v #17833 > >
00:16:58 v #17834 > > timestamp_guid_from_timestamp (test_guid ()) (0i64 |> convert |> timestamp)
00:16:58 v #17835 > > |> _assert_eq' (guid.new_guid "00000000-0000-0000-00dc-ba9876543210")
00:16:59 v #17836 > >
00:16:59 v #17837 > > ╭─[ 400.90ms - stdout ]────────────────────────────────────────────────────────╮
00:16:59 v #17838 > > │ __assert_eq' / actual: 00000000-0000-0000-00dc-ba9876543210 / expected:      │
00:16:59 v #17839 > > │ 00000000-0000-0000-00dc-ba9876543210                                         │
00:16:59 v #17840 > > │                                                                              │
00:16:59 v #17841 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:59 v #17842 > >
00:16:59 v #17843 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:59 v #17844 > > //// test
00:16:59 v #17845 > >
00:16:59 v #17846 > > timestamp_guid_from_timestamp (test_guid ()) (999999999999999999i64 |> convert
00:16:59 v #17847 > > |> timestamp)
00:16:59 v #17848 > > |> _assert_eq' (guid.new_guid $'$"99999999-9999-9999-99dc-b{(!test_guid () |>
00:16:59 v #17849 > > string).[[^10..]]}"')
00:16:59 v #17850 > >
00:16:59 v #17851 > > ╭─[ 425.30ms - stdout ]────────────────────────────────────────────────────────╮
00:16:59 v #17852 > > │ __assert_eq' / actual: 99999999-9999-9999-99dc-ba9876543210 / expected:      │
00:16:59 v #17853 > > │ 99999999-9999-9999-99dc-ba9876543210                                         │
00:16:59 v #17854 > > │                                                                              │
00:16:59 v #17855 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:59 v #17856 > >
00:16:59 v #17857 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:59 v #17858 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:59 v #17859 > > │ ### timestamp_from_guid                                                      │
00:16:59 v #17860 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:59 v #17861 > >
00:16:59 v #17862 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:59 v #17863 > > inl timestamp_from_guid (guid : date_time_guid) : timestamp =
00:16:59 v #17864 > >     inl guid = guid |> sm'.obj_to_string
00:16:59 v #17865 > >     $'`i64
00:16:59 v #17866 > > $"{!guid.[[0..7]]}{!guid.[[9..12]]}{!guid.[[14..17]]}{!guid.[[19..20]]}"'
00:16:59 v #17867 > >
00:16:59 v #17868 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:59 v #17869 > > //// test
00:16:59 v #17870 > >
00:16:59 v #17871 > > timestamp_from_guid (guid.new_guid "00000000-0000-0000-00dc-ba9876543210")
00:16:59 v #17872 > > |> _assert_eq' (0i64 |> convert |> timestamp)
00:17:00 v #17873 > >
00:17:00 v #17874 > > ╭─[ 397.53ms - stdout ]────────────────────────────────────────────────────────╮
00:17:00 v #17875 > > │ __assert_eq' / actual: 0L / expected: 0L                                     │
00:17:00 v #17876 > > │                                                                              │
00:17:00 v #17877 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:00 v #17878 > >
00:17:00 v #17879 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:00 v #17880 > > //// test
00:17:00 v #17881 > >
00:17:00 v #17882 > > timestamp_from_guid (guid.new_guid $'$"99999999-9999-9999-99{(!test_guid () |>
00:17:00 v #17883 > > string).[[^14..]]}"')
00:17:00 v #17884 > > |> _assert_eq' (999999999999999999i64 |> convert |> timestamp)
00:17:00 v #17885 > >
00:17:00 v #17886 > > ╭─[ 506.26ms - stdout ]────────────────────────────────────────────────────────╮
00:17:00 v #17887 > > │ __assert_eq' / actual: 999999999999999999L / expected: 999999999999999999L   │
00:17:00 v #17888 > > │                                                                              │
00:17:00 v #17889 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:00 v #17890 > >
00:17:00 v #17891 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:00 v #17892 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:00 v #17893 > > │ ### new_guid_from_date_time                                                  │
00:17:00 v #17894 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:00 v #17895 > >
00:17:00 v #17896 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:00 v #17897 > > inl new_guid_from_date_time (date_time : date_time) =
00:17:00 v #17898 > >     inl guid = guid.new_raw_guid ()
00:17:00 v #17899 > >     date_time_guid_from_date_time guid date_time
00:17:01 v #17900 > >
00:17:01 v #17901 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:01 v #17902 > > //// test
00:17:01 v #17903 > >
00:17:01 v #17904 > > utc_now ()
00:17:01 v #17905 > > |> new_guid_from_date_time
00:17:01 v #17906 > > |> date_time_from_guid
00:17:01 v #17907 > > |> fun date_time => new_time_span date_time (utc_now ()) |> total_seconds |> i32
00:17:01 v #17908 > > |> _assert_eq 0
00:17:01 v #17909 > >
00:17:01 v #17910 > > ╭─[ 547.50ms - stdout ]────────────────────────────────────────────────────────╮
00:17:01 v #17911 > > │ __assert_eq / actual: 0 / expected: 0                                        │
00:17:01 v #17912 > > │                                                                              │
00:17:01 v #17913 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:01 v #17914 > >
00:17:01 v #17915 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:01 v #17916 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:01 v #17917 > > │ ### new_guid_from_timestamp                                                  │
00:17:01 v #17918 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:01 v #17919 > >
00:17:01 v #17920 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:01 v #17921 > > inl new_guid_from_timestamp (timestamp : timestamp) =
00:17:01 v #17922 > >     inl guid = guid.new_raw_guid ()
00:17:01 v #17923 > >     timestamp_guid_from_timestamp guid timestamp
00:17:02 v #17924 > >
00:17:02 v #17925 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:02 v #17926 > > //// test
00:17:02 v #17927 > >
00:17:02 v #17928 > > utc_now ()
00:17:02 v #17929 > > |> ticks
00:17:02 v #17930 > > |> new_guid_from_timestamp
00:17:02 v #17931 > > |> timestamp_from_guid
00:17:02 v #17932 > > |> fun (timestamp t) => (convert t - (utc_now () |> ticks |> fun (timestamp x)
00:17:02 v #17933 > > => convert x)) / 100000i64
00:17:02 v #17934 > > |> _assert_eq 0i64
00:17:02 v #17935 > >
00:17:02 v #17936 > > ╭─[ 434.76ms - stdout ]────────────────────────────────────────────────────────╮
00:17:02 v #17937 > > │ __assert_eq / actual: 0L / expected: 0L                                      │
00:17:02 v #17938 > > │                                                                              │
00:17:02 v #17939 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:02 v #17940 > >
00:17:02 v #17941 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:02 v #17942 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:02 v #17943 > > │ ## main                                                                      │
00:17:02 v #17944 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:02 v #17945 > >
00:17:02 v #17946 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:02 v #17947 > > inl main () =
00:17:02 v #17948 > >     $'let date_time_guid_from_date_time x = !date_time_guid_from_date_time x' :
00:17:02 v #17949 > > ()
00:17:02 v #17950 > >     $'let date_time_from_guid x = !date_time_from_guid x' : ()
00:17:02 v #17951 > >     $'let timestamp_guid_from_timestamp x = !timestamp_guid_from_timestamp x' :
00:17:02 v #17952 > > ()
00:17:02 v #17953 > >     $'let timestamp_from_guid x = !timestamp_from_guid x' : ()
00:17:02 v #17954 > >     $'let new_guid_from_date_time x = !new_guid_from_date_time x' : ()
00:17:02 v #17955 > >     $'let new_guid_from_timestamp x = !new_guid_from_timestamp x' : ()
00:17:02 v #17956 > >     $'let format x = !format x' : ()
00:17:02 v #17957 > >     $'let format_iso8601 x = !format_iso8601 x' : ()
00:17:03 v #17958 > 00:01:48 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 57027 }
00:17:03 v #17959 > 00:01:48 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/polyglot/lib/spiral/date_time.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/polyglot/lib/spiral/date_time.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:17:04 v #17960 > 00:01:49 v #5 ! [NbConvertApp] Converting notebook c:/home/git/polyglot/lib/spiral/date_time.dib.ipynb to html
00:17:04 v #17961 > 00:01:49 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:17:04 v #17962 > 00:01:49 v #7 !   validate(nb)
00:17:05 v #17963 > 00:01:50 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:17:05 v #17964 > 00:01:50 v #9 !   return _pygments_highlight(
00:17:06 v #17965 > 00:01:51 v #10 ! [NbConvertApp] Writing 428781 bytes to c:\home\git\polyglot\lib\spiral\date_time.dib.html
00:17:06 v #17966 > 00:01:51 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 860 }
00:17:06 v #17967 > 00:01:51 d #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 860 }
00:17:06 v #17968 > 00:01:51 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/date_time.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/date_time.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:17:07 v #17969 > 00:01:51 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:17:07 v #17970 > 00:01:51 d #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:17:07 v #17971 > 00:01:51 d #16 spiral_builder.run / dib / { exit_code = 0; result_length = 57946 }
00:17:07 d #17972 runtime.execute_with_options_async / { exit_code = 0; output_length = 62892 }
00:17:07 d #20 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder.exe dib --path date_time.dib --retries 3
00:17:07 d #17973 runtime.execute_with_options_async / { file_name = ../../workspace/target/release/spiral_builder.exe; arguments = US5_0 "dib --path math.dib --retries 3"; options = { command = ../../workspace/target/release/spiral_builder.exe dib --path math.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:17:07 v #17974 > 00:00:00 d #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "math.dib", "--retries", "3"])) }
00:17:07 v #17975 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/polyglot/lib/spiral/math.dib", "--output-path", "c:/home/git/polyglot/lib/spiral/math.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/polyglot/lib/spiral/math.dib" --output-path "c:/home/git/polyglot/lib/spiral/math.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:17:09 v #17976 > >
00:17:09 v #17977 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:09 v #17978 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:09 v #17979 > > │ # math                                                                       │
00:17:09 v #17980 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:12 v #17981 > >
00:17:12 v #17982 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:12 v #17983 > > //// test
00:17:12 v #17984 > >
00:17:12 v #17985 > > open testing
00:17:13 v #17986 > >
00:17:13 v #17987 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:13 v #17988 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:13 v #17989 > > │ ## math                                                                      │
00:17:13 v #17990 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:13 v #17991 > >
00:17:13 v #17992 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:13 v #17993 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:13 v #17994 > > │ ### e                                                                        │
00:17:13 v #17995 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:13 v #17996 > >
00:17:13 v #17997 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:13 v #17998 > > inl e () =
00:17:13 v #17999 > >     exp 1f64
00:17:13 v #18000 > >
00:17:13 v #18001 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:13 v #18002 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:13 v #18003 > > │ ## square                                                                    │
00:17:13 v #18004 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:13 v #18005 > >
00:17:13 v #18006 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:13 v #18007 > > inl square x =
00:17:13 v #18008 > >     x ** 2
00:17:14 v #18009 > >
00:17:14 v #18010 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:14 v #18011 > > //// test
00:17:14 v #18012 > >
00:17:14 v #18013 > > 5f64
00:17:14 v #18014 > > |> sqrt
00:17:14 v #18015 > > |> square
00:17:14 v #18016 > > |> _assert_approx_eq None 5
00:17:15 v #18017 > >
00:17:15 v #18018 > > ╭─[ 1.07s - stdout ]───────────────────────────────────────────────────────────╮
00:17:15 v #18019 > > │ __assert_approx_eq / actual: 5.0 / expected: 5.0                             │
00:17:15 v #18020 > > │                                                                              │
00:17:15 v #18021 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:15 v #18022 > >
00:17:15 v #18023 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:15 v #18024 > > //// test
00:17:15 v #18025 > >
00:17:15 v #18026 > > e () |> square
00:17:15 v #18027 > > |> _assert_approx_eq None 7.3890560989306495
00:17:15 v #18028 > >
00:17:15 v #18029 > > ╭─[ 354.60ms - stdout ]────────────────────────────────────────────────────────╮
00:17:15 v #18030 > > │ __assert_approx_eq / actual: 7.389056099 / expected: 7.389056099             │
00:17:15 v #18031 > > │                                                                              │
00:17:15 v #18032 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:15 v #18033 > >
00:17:15 v #18034 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:15 v #18035 > > //// test
00:17:15 v #18036 > >
00:17:15 v #18037 > > 2 * 2 / 0.4f64 |> sqrt
00:17:15 v #18038 > > |> _assert_approx_eq None 3.1622776601683795
00:17:16 v #18039 > >
00:17:16 v #18040 > > ╭─[ 391.41ms - stdout ]────────────────────────────────────────────────────────╮
00:17:16 v #18041 > > │ __assert_approx_eq / actual: 3.16227766 / expected: 3.16227766               │
00:17:16 v #18042 > > │                                                                              │
00:17:16 v #18043 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:16 v #18044 > >
00:17:16 v #18045 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:16 v #18046 > > //// test
00:17:16 v #18047 > >
00:17:16 v #18048 > > 2f64 / 3
00:17:16 v #18049 > > |> _assert_approx_eq None 0.6666666666666666
00:17:16 v #18050 > >
00:17:16 v #18051 > > ╭─[ 427.49ms - stdout ]────────────────────────────────────────────────────────╮
00:17:16 v #18052 > > │ __assert_approx_eq / actual: 0.6666666667 / expected: 0.6666666667           │
00:17:16 v #18053 > > │                                                                              │
00:17:16 v #18054 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:16 v #18055 > >
00:17:16 v #18056 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:16 v #18057 > > //// test
00:17:16 v #18058 > >
00:17:16 v #18059 > > 2f64 |> log
00:17:16 v #18060 > > |> _assert_approx_eq None 0.6931471805599453
00:17:16 v #18061 > >
00:17:16 v #18062 > > ╭─[ 435.26ms - stdout ]────────────────────────────────────────────────────────╮
00:17:16 v #18063 > > │ __assert_approx_eq / actual: 0.6931471806 / expected: 0.6931471806           │
00:17:16 v #18064 > > │                                                                              │
00:17:16 v #18065 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:16 v #18066 > >
00:17:16 v #18067 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:16 v #18068 > > //// test
00:17:16 v #18069 > >
00:17:16 v #18070 > > pi
00:17:16 v #18071 > > |> _assert_approx_eq None 3.141592653589793f64
00:17:17 v #18072 > >
00:17:17 v #18073 > > ╭─[ 415.76ms - stdout ]────────────────────────────────────────────────────────╮
00:17:17 v #18074 > > │ __assert_approx_eq / actual: 3.141592654 / expected: 3.141592654             │
00:17:17 v #18075 > > │                                                                              │
00:17:17 v #18076 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:17 v #18077 > >
00:17:17 v #18078 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:17 v #18079 > > //// test
00:17:17 v #18080 > >
00:17:17 v #18081 > > pi |> cos
00:17:17 v #18082 > > |> _assert_eq -1f64
00:17:17 v #18083 > >
00:17:17 v #18084 > > ╭─[ 437.14ms - stdout ]────────────────────────────────────────────────────────╮
00:17:17 v #18085 > > │ __assert_eq / actual: -1.0 / expected: -1.0                                  │
00:17:17 v #18086 > > │                                                                              │
00:17:17 v #18087 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:17 v #18088 > >
00:17:17 v #18089 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:17 v #18090 > > //// test
00:17:17 v #18091 > >
00:17:17 v #18092 > > pi
00:17:17 v #18093 > > |> cos
00:17:17 v #18094 > > |> fun n => n / 2f64
00:17:17 v #18095 > > |> _assert_approx_eq None -0.5
00:17:18 v #18096 > >
00:17:18 v #18097 > > ╭─[ 353.37ms - stdout ]────────────────────────────────────────────────────────╮
00:17:18 v #18098 > > │ __assert_approx_eq / actual: -0.5 / expected: -0.5                           │
00:17:18 v #18099 > > │                                                                              │
00:17:18 v #18100 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:18 v #18101 > >
00:17:18 v #18102 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:18 v #18103 > > //// test
00:17:18 v #18104 > >
00:17:18 v #18105 > > pi / 2 |> cos
00:17:18 v #18106 > > |> _assert_approx_eq None 0.00000000000000006123233995736766f64
00:17:18 v #18107 > >
00:17:18 v #18108 > > ╭─[ 392.57ms - stdout ]────────────────────────────────────────────────────────╮
00:17:18 v #18109 > > │ __assert_approx_eq / actual: 6.123233996e-17 / expected: 6.123233996e-17     │
00:17:18 v #18110 > > │                                                                              │
00:17:18 v #18111 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:18 v #18112 > >
00:17:18 v #18113 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:18 v #18114 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:18 v #18115 > > │ ## fsharp                                                                    │
00:17:18 v #18116 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:18 v #18117 > >
00:17:18 v #18118 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:18 v #18119 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:18 v #18120 > > │ ### atan2                                                                    │
00:17:18 v #18121 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:18 v #18122 > >
00:17:18 v #18123 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:18 v #18124 > > inl atan2 (y : f64) (x : f64) : f64 =
00:17:18 v #18125 > >     $'System.Math.Atan2 (!y, !x)'
00:17:18 v #18126 > >
00:17:18 v #18127 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:18 v #18128 > > //// test
00:17:18 v #18129 > >
00:17:18 v #18130 > > 0 |> atan2 1
00:17:18 v #18131 > > |> _assert_eq 1.5707963267948966
00:17:19 v #18132 > >
00:17:19 v #18133 > > ╭─[ 541.39ms - stdout ]────────────────────────────────────────────────────────╮
00:17:19 v #18134 > > │ __assert_eq / actual: 1.570796327 / expected: 1.570796327                    │
00:17:19 v #18135 > > │                                                                              │
00:17:19 v #18136 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:19 v #18137 > >
00:17:19 v #18138 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:19 v #18139 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:19 v #18140 > > │ ## floor                                                                     │
00:17:19 v #18141 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:19 v #18142 > >
00:17:19 v #18143 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:19 v #18144 > > inl floor forall t {float}. (n : t) : t =
00:17:19 v #18145 > >     n |> $'floor'
00:17:19 v #18146 > >
00:17:19 v #18147 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:19 v #18148 > > //// test
00:17:19 v #18149 > >
00:17:19 v #18150 > > 0.6 |> floor
00:17:19 v #18151 > > |> _assert_eq 0f64
00:17:20 v #18152 > >
00:17:20 v #18153 > > ╭─[ 461.91ms - stdout ]────────────────────────────────────────────────────────╮
00:17:20 v #18154 > > │ __assert_eq / actual: 0.0 / expected: 0.0                                    │
00:17:20 v #18155 > > │                                                                              │
00:17:20 v #18156 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:20 v #18157 > >
00:17:20 v #18158 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:20 v #18159 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:20 v #18160 > > │ ## ceil                                                                      │
00:17:20 v #18161 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:20 v #18162 > >
00:17:20 v #18163 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:20 v #18164 > > inl ceil forall t {float}. (n : t) : t =
00:17:20 v #18165 > >     n |> $'ceil'
00:17:20 v #18166 > >
00:17:20 v #18167 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:20 v #18168 > > //// test
00:17:20 v #18169 > >
00:17:20 v #18170 > > 0.6 |> ceil
00:17:20 v #18171 > > |> _assert_eq 1f64
00:17:20 v #18172 > >
00:17:20 v #18173 > > ╭─[ 377.55ms - stdout ]────────────────────────────────────────────────────────╮
00:17:20 v #18174 > > │ __assert_eq / actual: 1.0 / expected: 1.0                                    │
00:17:20 v #18175 > > │                                                                              │
00:17:20 v #18176 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:20 v #18177 > >
00:17:20 v #18178 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:20 v #18179 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:20 v #18180 > > │ ## round                                                                     │
00:17:20 v #18181 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:20 v #18182 > >
00:17:20 v #18183 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:20 v #18184 > > inl round forall t {float}. (n : t) : t =
00:17:20 v #18185 > >     n |> $'round'
00:17:21 v #18186 > >
00:17:21 v #18187 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:21 v #18188 > > //// test
00:17:21 v #18189 > >
00:17:21 v #18190 > > 0.5 |> round
00:17:21 v #18191 > > |> _assert_eq 0f64
00:17:21 v #18192 > >
00:17:21 v #18193 > > 1.5 |> round
00:17:21 v #18194 > > |> _assert_eq 2f64
00:17:21 v #18195 > >
00:17:21 v #18196 > > 2.5 |> round
00:17:21 v #18197 > > |> _assert_eq 2f64
00:17:21 v #18198 > >
00:17:21 v #18199 > > 3.5 |> round
00:17:21 v #18200 > > |> _assert_eq 4f64
00:17:21 v #18201 > >
00:17:21 v #18202 > > ╭─[ 460.04ms - stdout ]────────────────────────────────────────────────────────╮
00:17:21 v #18203 > > │ __assert_eq / actual: 0.0 / expected: 0.0                                    │
00:17:21 v #18204 > > │ __assert_eq / actual: 2.0 / expected: 2.0                                    │
00:17:21 v #18205 > > │ __assert_eq / actual: 2.0 / expected: 2.0                                    │
00:17:21 v #18206 > > │ __assert_eq / actual: 4.0 / expected: 4.0                                    │
00:17:21 v #18207 > > │                                                                              │
00:17:21 v #18208 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:21 v #18209 > >
00:17:21 v #18210 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:21 v #18211 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:21 v #18212 > > │ ## log_base                                                                  │
00:17:21 v #18213 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:21 v #18214 > >
00:17:21 v #18215 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:21 v #18216 > > inl log_base (new_base : f64) (a : f64) : f64 =
00:17:21 v #18217 > >     $'System.Math.Log (!a, !new_base)'
00:17:22 v #18218 > >
00:17:22 v #18219 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:22 v #18220 > > //// test
00:17:22 v #18221 > >
00:17:22 v #18222 > > 100 |> log_base 10
00:17:22 v #18223 > > |> _assert_eq 2
00:17:22 v #18224 > >
00:17:22 v #18225 > > ╭─[ 436.33ms - stdout ]────────────────────────────────────────────────────────╮
00:17:22 v #18226 > > │ __assert_eq / actual: 2.0 / expected: 2.0                                    │
00:17:22 v #18227 > > │                                                                              │
00:17:22 v #18228 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:22 v #18229 > >
00:17:22 v #18230 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:22 v #18231 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:22 v #18232 > > │ ## round                                                                     │
00:17:22 v #18233 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:22 v #18234 > >
00:17:22 v #18235 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:22 v #18236 > > inl round forall t {float}. (x : t) : t =
00:17:22 v #18237 > >     x |> $'round'
00:17:23 v #18238 > >
00:17:23 v #18239 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:23 v #18240 > > //// test
00:17:23 v #18241 > >
00:17:23 v #18242 > > 0.5 |> round
00:17:23 v #18243 > > |> _assert_eq 0f64
00:17:23 v #18244 > >
00:17:23 v #18245 > > ╭─[ 457.71ms - stdout ]────────────────────────────────────────────────────────╮
00:17:23 v #18246 > > │ __assert_eq / actual: 0.0 / expected: 0.0                                    │
00:17:23 v #18247 > > │                                                                              │
00:17:23 v #18248 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:23 v #18249 > >
00:17:23 v #18250 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:23 v #18251 > > //// test
00:17:23 v #18252 > >
00:17:23 v #18253 > > 0.6 |> round
00:17:23 v #18254 > > |> _assert_eq 1f64
00:17:23 v #18255 > >
00:17:23 v #18256 > > ╭─[ 434.02ms - stdout ]────────────────────────────────────────────────────────╮
00:17:23 v #18257 > > │ __assert_eq / actual: 1.0 / expected: 1.0                                    │
00:17:23 v #18258 > > │                                                                              │
00:17:23 v #18259 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:24 v #18260 > 00:00:16 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 12563 }
00:17:24 v #18261 > 00:00:16 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/polyglot/lib/spiral/math.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/polyglot/lib/spiral/math.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:17:25 v #18262 > 00:00:18 v #5 ! [NbConvertApp] Converting notebook c:/home/git/polyglot/lib/spiral/math.dib.ipynb to html
00:17:25 v #18263 > 00:00:18 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:17:25 v #18264 > 00:00:18 v #7 !   validate(nb)
00:17:26 v #18265 > 00:00:18 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:17:26 v #18266 > 00:00:18 v #9 !   return _pygments_highlight(
00:17:26 v #18267 > 00:00:19 v #10 ! [NbConvertApp] Writing 304842 bytes to c:\home\git\polyglot\lib\spiral\math.dib.html
00:17:26 v #18268 > 00:00:19 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 850 }
00:17:26 v #18269 > 00:00:19 d #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 850 }
00:17:26 v #18270 > 00:00:19 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/math.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/math.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:17:26 v #18271 > 00:00:19 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:17:26 v #18272 > 00:00:19 d #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:17:26 v #18273 > 00:00:19 d #16 spiral_builder.run / dib / { exit_code = 0; result_length = 13472 }
00:17:26 d #18274 runtime.execute_with_options_async / { exit_code = 0; output_length = 16589 }
00:17:26 d #21 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder.exe dib --path math.dib --retries 3
00:17:26 d #18275 runtime.execute_with_options_async / { file_name = ../../workspace/target/release/spiral_builder.exe; arguments = US5_0 "dib --path mapm.dib --retries 3"; options = { command = ../../workspace/target/release/spiral_builder.exe dib --path mapm.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:17:26 v #18276 > 00:00:00 d #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "mapm.dib", "--retries", "3"])) }
00:17:26 v #18277 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/polyglot/lib/spiral/mapm.dib", "--output-path", "c:/home/git/polyglot/lib/spiral/mapm.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/polyglot/lib/spiral/mapm.dib" --output-path "c:/home/git/polyglot/lib/spiral/mapm.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:17:28 v #18278 > >
00:17:28 v #18279 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:28 v #18280 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:28 v #18281 > > │ # mapm                                                                       │
00:17:28 v #18282 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:31 v #18283 > >
00:17:31 v #18284 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:31 v #18285 > > open rust.rust_operators
00:17:33 v #18286 > >
00:17:33 v #18287 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:33 v #18288 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:33 v #18289 > > │ ## rust                                                                      │
00:17:33 v #18290 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:33 v #18291 > >
00:17:33 v #18292 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:33 v #18293 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:33 v #18294 > > │ ### hash_map                                                                 │
00:17:33 v #18295 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:33 v #18296 > >
00:17:33 v #18297 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:33 v #18298 > > nominal hash_map k v =
00:17:33 v #18299 > >     `(
00:17:33 v #18300 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:17:33 v #18301 > > Fable.Core.Emit(\"std::collections::HashMap<$0, $1>\")>]]\n#endif\ntype
00:17:33 v #18302 > > std_collections_HashMap<'K, 'V> = class end"
00:17:33 v #18303 > >         $'' : $'std_collections_HashMap<`k, `v>'
00:17:33 v #18304 > >     )
00:17:33 v #18305 > >
00:17:33 v #18306 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:33 v #18307 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:33 v #18308 > > │ ### b_tree_map                                                               │
00:17:33 v #18309 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:33 v #18310 > >
00:17:33 v #18311 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:33 v #18312 > > nominal b_tree_map k v =
00:17:33 v #18313 > >     `(
00:17:33 v #18314 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:17:33 v #18315 > > Fable.Core.Emit(\"std::collections::BTreeMap<$0, $1>\")>]]\n#endif\ntype
00:17:33 v #18316 > > std_collections_BTreeMap<'K, 'V> = class end"
00:17:33 v #18317 > >         $'' : $'std_collections_BTreeMap<`k, `v>'
00:17:33 v #18318 > >     )
00:17:33 v #18319 > >
00:17:33 v #18320 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:33 v #18321 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:33 v #18322 > > │ ### new_hash_map                                                             │
00:17:33 v #18323 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:33 v #18324 > >
00:17:33 v #18325 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:33 v #18326 > > inl new_hash_map () : hash_map _ _ =
00:17:33 v #18327 > >     !\($'"std::collections::HashMap::new()"')
00:17:34 v #18328 > >
00:17:34 v #18329 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:34 v #18330 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:34 v #18331 > > │ ### new_b_tree_map                                                           │
00:17:34 v #18332 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:34 v #18333 > >
00:17:34 v #18334 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:34 v #18335 > > inl new_b_tree_map () : b_tree_map _ _ =
00:17:34 v #18336 > >     !\($'"std::collections::BTreeMap::new()"')
00:17:34 v #18337 > >
00:17:34 v #18338 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:34 v #18339 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:34 v #18340 > > │ ### get                                                                      │
00:17:34 v #18341 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:34 v #18342 > >
00:17:34 v #18343 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:34 v #18344 > > inl get forall k v. (key : k) (map : hash_map k v) : optionm'.option' v =
00:17:34 v #18345 > >     inl key = join key
00:17:34 v #18346 > >     !\\(map, $'"std::collections::HashMap::get(&$0, &!key).map(|x|
00:17:34 v #18347 > > x).cloned()"')
00:17:34 v #18348 > >
00:17:34 v #18349 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:34 v #18350 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:34 v #18351 > > │ ### insert                                                                   │
00:17:34 v #18352 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:34 v #18353 > >
00:17:34 v #18354 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:34 v #18355 > > inl insert forall k v. (key : k) (value : v) (map : hash_map k v) :
00:17:34 v #18356 > > optionm'.option' v =
00:17:34 v #18357 > >     inl key = join key
00:17:34 v #18358 > >     !\($'"let mut !map = !map"')
00:17:34 v #18359 > >     !\($'"std::collections::HashMap::insert(&mut !map, !key, !value)"')
00:17:35 v #18360 > >
00:17:35 v #18361 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:35 v #18362 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:35 v #18363 > > │ ### map'                                                                     │
00:17:35 v #18364 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:35 v #18365 > >
00:17:35 v #18366 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:35 v #18367 > > inl map' forall k v w. (fn : v -> w) (map : hash_map k v) : hash_map k w =
00:17:35 v #18368 > >     !\\((map, fn), $'"$0.into_iter().map(|(k, v)| (k, $1(v))).collect()"')
00:17:35 v #18369 > >
00:17:35 v #18370 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:35 v #18371 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:35 v #18372 > > │ ### hash_map_count                                                           │
00:17:35 v #18373 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:35 v #18374 > >
00:17:35 v #18375 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:35 v #18376 > > inl hash_map_count forall k v. (map : hash_map k v) : i32 =
00:17:35 v #18377 > >     !\\(map, $'"$0.count()"')
00:17:36 v #18378 > >
00:17:36 v #18379 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:36 v #18380 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:36 v #18381 > > │ ### from_vec                                                                 │
00:17:36 v #18382 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:36 v #18383 > >
00:17:36 v #18384 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:36 v #18385 > > inl from_vec forall k v. (vec : am'.vec (k * v)) : hash_map k v =
00:17:36 v #18386 > >     !\($'"std::collections::HashMap::from_iter(!vec)"')
00:17:36 v #18387 > >
00:17:36 v #18388 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:36 v #18389 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:36 v #18390 > > │ ### from_vec_pairs                                                           │
00:17:36 v #18391 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:36 v #18392 > >
00:17:36 v #18393 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:36 v #18394 > > inl from_vec_pairs forall k v. (vec : am'.vec (pair k v)) : hash_map k v =
00:17:36 v #18395 > >     !\($'"std::collections::HashMap::from_iter(!vec.iter().map(|x|
00:17:36 v #18396 > > x.as_ref()).map(|&(ref k, ref v)| (k.clone(), v.clone())))"')
00:17:37 v #18397 > >
00:17:37 v #18398 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:37 v #18399 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:37 v #18400 > > │ ### b_tree_map_from_vec_pairs                                                │
00:17:37 v #18401 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:37 v #18402 > >
00:17:37 v #18403 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:37 v #18404 > > inl b_tree_map_from_vec_pairs forall k v. (vec : am'.vec (pair k v)) :
00:17:37 v #18405 > > b_tree_map k v =
00:17:37 v #18406 > >     !\($'"std::collections::BTreeMap::from_iter(!vec.iter().map(|x|
00:17:37 v #18407 > > x.as_ref()).map(|&(ref k, ref v)| (k.clone(), v.clone())))"')
00:17:37 v #18408 > >
00:17:37 v #18409 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:37 v #18410 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:37 v #18411 > > │ ### from_array                                                               │
00:17:37 v #18412 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:37 v #18413 > >
00:17:37 v #18414 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:37 v #18415 > > inl from_array forall k v. (array : array_base (k * v)) : hash_map k v =
00:17:37 v #18416 > >     array |> am'.to_vec |> from_vec
00:17:37 v #18417 > >
00:17:37 v #18418 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:37 v #18419 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:37 v #18420 > > │ ### from_list                                                                │
00:17:37 v #18421 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:37 v #18422 > >
00:17:37 v #18423 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:37 v #18424 > > inl from_list forall k v. (list : list (k * v)) : hash_map k v =
00:17:37 v #18425 > >     inl (a list) : _ i32 _ = list |> listm.toArray
00:17:37 v #18426 > >     list |> am'.to_vec |> from_vec
00:17:38 v #18427 > >
00:17:38 v #18428 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:38 v #18429 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:38 v #18430 > > │ ### to_vec                                                                   │
00:17:38 v #18431 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:38 v #18432 > >
00:17:38 v #18433 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:38 v #18434 > > inl to_vec forall k v. (map : hash_map k v) : am'.vec (k * v) =
00:17:38 v #18435 > >     !\\(map, $'"$0.into_iter().map(|(k, v)| (k, v)).collect::<Vec<_>>()"')
00:17:38 v #18436 > >
00:17:38 v #18437 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:38 v #18438 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:38 v #18439 > > │ ## fsharp                                                                    │
00:17:38 v #18440 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:38 v #18441 > >
00:17:38 v #18442 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:38 v #18443 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:38 v #18444 > > │ ### map                                                                      │
00:17:38 v #18445 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:38 v #18446 > >
00:17:38 v #18447 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:38 v #18448 > > nominal map k v = $'Map<`k, `v>'
00:17:39 v #18449 > >
00:17:39 v #18450 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:39 v #18451 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:39 v #18452 > > │ ### item                                                                     │
00:17:39 v #18453 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:39 v #18454 > >
00:17:39 v #18455 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:39 v #18456 > > inl item forall k v. (k : k) (map : map k v) : v =
00:17:39 v #18457 > >     $'!map.[[!k]]'
00:17:39 v #18458 > >
00:17:39 v #18459 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:39 v #18460 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:39 v #18461 > > │ ### of_array                                                                 │
00:17:39 v #18462 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:39 v #18463 > >
00:17:39 v #18464 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:39 v #18465 > > inl of_array forall k v. (array : a _ (k * v)) : map k v =
00:17:39 v #18466 > >     $'!array |> Array.map (fun (struct (a, b)) -> a, b) |> Map.ofArray'
00:17:40 v #18467 > 00:00:13 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 10516 }
00:17:40 v #18468 > 00:00:13 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/polyglot/lib/spiral/mapm.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/polyglot/lib/spiral/mapm.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:17:41 v #18469 > 00:00:14 v #5 ! [NbConvertApp] Converting notebook c:/home/git/polyglot/lib/spiral/mapm.dib.ipynb to html
00:17:41 v #18470 > 00:00:14 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:17:41 v #18471 > 00:00:14 v #7 !   validate(nb)
00:17:41 v #18472 > 00:00:15 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:17:41 v #18473 > 00:00:15 v #9 !   return _pygments_highlight(
00:17:42 v #18474 > 00:00:15 v #10 ! [NbConvertApp] Writing 301372 bytes to c:\home\git\polyglot\lib\spiral\mapm.dib.html
00:17:42 v #18475 > 00:00:15 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 850 }
00:17:42 v #18476 > 00:00:15 d #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 850 }
00:17:42 v #18477 > 00:00:15 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/mapm.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/mapm.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:17:42 v #18478 > 00:00:15 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:17:42 v #18479 > 00:00:15 d #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:17:42 v #18480 > 00:00:15 d #16 spiral_builder.run / dib / { exit_code = 0; result_length = 11425 }
00:17:42 d #18481 runtime.execute_with_options_async / { exit_code = 0; output_length = 14352 }
00:17:42 d #22 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder.exe dib --path mapm.dib --retries 3
00:17:42 d #18482 runtime.execute_with_options_async / { file_name = ../../workspace/target/release/spiral_builder.exe; arguments = US5_0 "dib --path optionm'.dib --retries 3"; options = { command = ../../workspace/target/release/spiral_builder.exe dib --path optionm'.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:17:42 v #18483 > 00:00:00 d #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "optionm'.dib", "--retries", "3"])) }
00:17:42 v #18484 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/polyglot/lib/spiral/optionm'.dib", "--output-path", "c:/home/git/polyglot/lib/spiral/optionm'.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/polyglot/lib/spiral/optionm'.dib" --output-path "c:/home/git/polyglot/lib/spiral/optionm'.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:17:44 v #18485 > >
00:17:44 v #18486 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:44 v #18487 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:44 v #18488 > > │ # optionm'                                                                   │
00:17:44 v #18489 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:47 v #18490 > >
00:17:47 v #18491 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:47 v #18492 > > open rust
00:17:47 v #18493 > > open rust_operators
00:17:48 v #18494 > >
00:17:48 v #18495 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:48 v #18496 > > //// test
00:17:48 v #18497 > >
00:17:48 v #18498 > > open testing
00:17:49 v #18499 > >
00:17:49 v #18500 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:49 v #18501 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:49 v #18502 > > │ ## optionm'                                                                  │
00:17:49 v #18503 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:49 v #18504 > >
00:17:49 v #18505 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:49 v #18506 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:49 v #18507 > > │ ### default_value                                                            │
00:17:49 v #18508 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:49 v #18509 > >
00:17:49 v #18510 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:49 v #18511 > > inl default_value d =
00:17:49 v #18512 > >     optionm.defaultWith d
00:17:49 v #18513 > >
00:17:49 v #18514 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:49 v #18515 > > //// test
00:17:49 v #18516 > >
00:17:49 v #18517 > > None
00:17:49 v #18518 > > |> default_value 3i32
00:17:49 v #18519 > > |> _assert_eq 3i32
00:17:50 v #18520 > >
00:17:50 v #18521 > > ╭─[ 878.11ms - stdout ]────────────────────────────────────────────────────────╮
00:17:50 v #18522 > > │ __assert_eq / actual: 3 / expected: 3                                        │
00:17:50 v #18523 > > │                                                                              │
00:17:50 v #18524 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:50 v #18525 > >
00:17:50 v #18526 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:50 v #18527 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:50 v #18528 > > │ ### (/??)                                                                    │
00:17:50 v #18529 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:50 v #18530 > >
00:17:50 v #18531 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:50 v #18532 > > inl (/??) a b =
00:17:50 v #18533 > >     a |> default_value b
00:17:50 v #18534 > >
00:17:50 v #18535 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:50 v #18536 > > //// test
00:17:50 v #18537 > >
00:17:50 v #18538 > > None /?? 3i32
00:17:50 v #18539 > > |> _assert_eq 3i32
00:17:51 v #18540 > >
00:17:51 v #18541 > > ╭─[ 379.88ms - stdout ]────────────────────────────────────────────────────────╮
00:17:51 v #18542 > > │ __assert_eq / actual: 3 / expected: 3                                        │
00:17:51 v #18543 > > │                                                                              │
00:17:51 v #18544 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:51 v #18545 > >
00:17:51 v #18546 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:51 v #18547 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:51 v #18548 > > │ ### default_with                                                             │
00:17:51 v #18549 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:51 v #18550 > >
00:17:51 v #18551 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:51 v #18552 > > inl default_with fn = function
00:17:51 v #18553 > >     | Some x => x
00:17:51 v #18554 > >     | None => fn ()
00:17:51 v #18555 > >
00:17:51 v #18556 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:51 v #18557 > > //// test
00:17:51 v #18558 > >
00:17:51 v #18559 > > None
00:17:51 v #18560 > > |> default_with fun () => 3i32
00:17:51 v #18561 > > |> _assert_eq 3i32
00:17:51 v #18562 > >
00:17:51 v #18563 > > ╭─[ 426.25ms - stdout ]────────────────────────────────────────────────────────╮
00:17:51 v #18564 > > │ __assert_eq / actual: 3 / expected: 3                                        │
00:17:51 v #18565 > > │                                                                              │
00:17:51 v #18566 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:51 v #18567 > >
00:17:51 v #18568 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:51 v #18569 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:51 v #18570 > > │ ### choose                                                                   │
00:17:51 v #18571 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:51 v #18572 > >
00:17:51 v #18573 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:51 v #18574 > > inl choose fn a b =
00:17:51 v #18575 > >     match a, b with
00:17:51 v #18576 > >     | Some x, Some y => fn x y |> Some
00:17:51 v #18577 > >     | _ => None
00:17:52 v #18578 > >
00:17:52 v #18579 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:52 v #18580 > > //// test
00:17:52 v #18581 > >
00:17:52 v #18582 > > (Some 2i32, Some 3)
00:17:52 v #18583 > > ||> choose (+)
00:17:52 v #18584 > > |> _assert_eq (Some 5)
00:17:53 v #18585 > >
00:17:53 v #18586 > > ╭─[ 798.08ms - stdout ]────────────────────────────────────────────────────────╮
00:17:53 v #18587 > > │ __assert_eq / actual: US0_0 5 / expected: US0_0 5                            │
00:17:53 v #18588 > > │                                                                              │
00:17:53 v #18589 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:53 v #18590 > >
00:17:53 v #18591 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:53 v #18592 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:53 v #18593 > > │ ### iter                                                                     │
00:17:53 v #18594 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:53 v #18595 > >
00:17:53 v #18596 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:53 v #18597 > > inl iter fn = function
00:17:53 v #18598 > >     | Some x => fn x
00:17:53 v #18599 > >     | None => ()
00:17:53 v #18600 > >
00:17:53 v #18601 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:53 v #18602 > > //// test
00:17:53 v #18603 > >
00:17:53 v #18604 > > inl n = mut 1i32
00:17:53 v #18605 > > inl fn =
00:17:53 v #18606 > >     fun n' =>
00:17:53 v #18607 > >         n <- *n + n'
00:17:53 v #18608 > > Some 1i32 |> iter fn
00:17:53 v #18609 > > None |> iter fn
00:17:53 v #18610 > > *n
00:17:53 v #18611 > > |> _assert_eq 2i32
00:17:54 v #18612 > >
00:17:54 v #18613 > > ╭─[ 489.15ms - stdout ]────────────────────────────────────────────────────────╮
00:17:54 v #18614 > > │ __assert_eq / actual: 2 / expected: 2                                        │
00:17:54 v #18615 > > │                                                                              │
00:17:54 v #18616 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:54 v #18617 > >
00:17:54 v #18618 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:54 v #18619 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:54 v #18620 > > │ ### flatten                                                                  │
00:17:54 v #18621 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:54 v #18622 > >
00:17:54 v #18623 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:54 v #18624 > > inl flatten x =
00:17:54 v #18625 > >     match x with
00:17:54 v #18626 > >     | Some (Some x) => Some x
00:17:54 v #18627 > >     | _ => None
00:17:54 v #18628 > >
00:17:54 v #18629 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:54 v #18630 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:54 v #18631 > > │ ## fsharp                                                                    │
00:17:54 v #18632 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:54 v #18633 > >
00:17:54 v #18634 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:54 v #18635 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:54 v #18636 > > │ ### option'                                                                  │
00:17:54 v #18637 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:54 v #18638 > >
00:17:54 v #18639 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:54 v #18640 > > nominal option' t = $"backend_switch `({ Fsharp : $"`t option"; Python : t })"
00:17:54 v #18641 > >
00:17:54 v #18642 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:54 v #18643 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:54 v #18644 > > │ ### none'                                                                    │
00:17:54 v #18645 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:54 v #18646 > >
00:17:54 v #18647 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:54 v #18648 > > inl none' forall t. () : option' t =
00:17:54 v #18649 > >     $'None'
00:17:55 v #18650 > >
00:17:55 v #18651 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:55 v #18652 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:55 v #18653 > > │ ### some'                                                                    │
00:17:55 v #18654 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:55 v #18655 > >
00:17:55 v #18656 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:55 v #18657 > > inl some' forall t. (x : t) : option' t =
00:17:55 v #18658 > >     backend_switch {
00:17:55 v #18659 > >         Fsharp = fun () => $'Some !x ' : option' t
00:17:55 v #18660 > >         Python = fun () => $'!x # some\' ' : option' t
00:17:55 v #18661 > >     }
00:17:55 v #18662 > >
00:17:55 v #18663 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:55 v #18664 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:55 v #18665 > > │ ### default_value'                                                           │
00:17:55 v #18666 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:55 v #18667 > >
00:17:55 v #18668 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:55 v #18669 > > inl default_value' forall t. (value : t) (x : option' t) : t =
00:17:55 v #18670 > >     backend_switch {
00:17:55 v #18671 > >         Fsharp = fun () => $'!x |> Option.defaultValue !value ' : t
00:17:55 v #18672 > >         Python = fun () => $'!x or !value ' : t
00:17:55 v #18673 > >     }
00:17:56 v #18674 > >
00:17:56 v #18675 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:56 v #18676 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:56 v #18677 > > │ ### value'                                                                   │
00:17:56 v #18678 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:56 v #18679 > >
00:17:56 v #18680 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:56 v #18681 > > inl value' forall t. (x : option' t) : t =
00:17:56 v #18682 > >     backend_switch {
00:17:56 v #18683 > >         Fsharp = fun () => $'!x |> Option.value' : t
00:17:56 v #18684 > >         Python = fun () => $'!x ' : t
00:17:56 v #18685 > >     }
00:17:56 v #18686 > >
00:17:56 v #18687 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:56 v #18688 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:56 v #18689 > > │ ### box                                                                      │
00:17:56 v #18690 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:56 v #18691 > >
00:17:56 v #18692 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:56 v #18693 > > inl box forall t. (x : option t) : option' t =
00:17:56 v #18694 > >     // x
00:17:56 v #18695 > >     // |> optionm.map some'
00:17:56 v #18696 > >     // |> default_with none'
00:17:56 v #18697 > >     match x with
00:17:56 v #18698 > >     | Some x => some' x
00:17:56 v #18699 > >     | None => none' ()
00:17:56 v #18700 > >
00:17:56 v #18701 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:56 v #18702 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:56 v #18703 > > │ ### map                                                                      │
00:17:56 v #18704 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:56 v #18705 > >
00:17:56 v #18706 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:56 v #18707 > > inl map forall t u. (fn : t -> u) (x : option' t) : option' u =
00:17:56 v #18708 > >     inl x_ () =
00:17:56 v #18709 > >         backend_switch {
00:17:56 v #18710 > >             Fsharp = fun () =>
00:17:56 v #18711 > >                 inl result : mut (option' u) = none' () |> mut
00:17:56 v #18712 > >                 inl set_result x =
00:17:56 v #18713 > >                     result <- x
00:17:56 v #18714 > >                 inl get_result () =
00:17:56 v #18715 > >                     *result
00:17:56 v #18716 > >                 $'let _!result = !result '
00:17:56 v #18717 > >                 $'match !x with'
00:17:56 v #18718 > >                 $'| Some x -> ('
00:17:56 v #18719 > >                 $'(fun () ->'
00:17:56 v #18720 > >                 $'(fun () ->'
00:17:56 v #18721 > >                 inl x = dyn $'x'
00:17:56 v #18722 > >                 x |> fn |> emit_unit
00:17:56 v #18723 > >                 $')'
00:17:56 v #18724 > >                 $'|> fun x -> x () |> Some'
00:17:56 v #18725 > >                 $') () ) | None -> None'
00:17:56 v #18726 > >                 $'|> fun x -> !set_result x'
00:17:56 v #18727 > >                 $'!get_result ()' : option' u
00:17:56 v #18728 > >             Python = fun () =>
00:17:56 v #18729 > >                 if x =. none' ()
00:17:56 v #18730 > >                 then none' ()
00:17:56 v #18731 > >                 else fn $'!x ' |> fun x => $'!x ' : option' u
00:17:56 v #18732 > >         }
00:17:56 v #18733 > >
00:17:56 v #18734 > >     backend_switch {
00:17:56 v #18735 > >         Fsharp = fun () =>
00:17:56 v #18736 > >             inl fn = join fn
00:17:56 v #18737 > >             $'!x |> Option.map !fn ' : option' u
00:17:56 v #18738 > >         Python = fun () =>
00:17:56 v #18739 > >                 if x =. none' ()
00:17:56 v #18740 > >                 then none' ()
00:17:56 v #18741 > >                 else fn $'!x ' |> fun x => $'!x ' : option' u
00:17:56 v #18742 > >     }
00:17:57 v #18743 > >
00:17:57 v #18744 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:57 v #18745 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:57 v #18746 > > │ ### map''                                                                    │
00:17:57 v #18747 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:57 v #18748 > >
00:17:57 v #18749 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:57 v #18750 > > inl map'' forall t u. (fn : t -> u) (x : option' t) : option' u =
00:17:57 v #18751 > >     x |> map fn
00:17:57 v #18752 > >
00:17:57 v #18753 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:57 v #18754 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:57 v #18755 > > │ ### unbox                                                                    │
00:17:57 v #18756 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:57 v #18757 > >
00:17:57 v #18758 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:57 v #18759 > > inl unbox forall t. (x : option' t) : option t =
00:17:57 v #18760 > >     x |> map'' Some |> default_value' None
00:17:57 v #18761 > >     // inl some x : option t = Some x
00:17:57 v #18762 > >     // inl some = join some
00:17:57 v #18763 > >     // inl none : option t = None
00:17:57 v #18764 > >     // $'!x |> Option.map !some |> Option.defaultValue !none '
00:17:58 v #18765 > >
00:17:58 v #18766 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:58 v #18767 > > //// test
00:17:58 v #18768 > > ///! fsharp
00:17:58 v #18769 > > ///! cuda
00:17:58 v #18770 > > ///! rust
00:17:58 v #18771 > > ///! typescript
00:17:58 v #18772 > > ///! python
00:17:58 v #18773 > >
00:17:58 v #18774 > > inl x = Some 3i32
00:17:58 v #18775 > > inl y : option i32 = None
00:17:58 v #18776 > > inl x' = x |> box |> unbox
00:17:58 v #18777 > > inl y' = y |> box |> map id |> unbox
00:17:58 v #18778 > > (x', y') |> _assert_eq' (x, y)
00:18:02 v #18779 > >
00:18:02 v #18780 > > ╭─[ 4.19s - return value ]─────────────────────────────────────────────────────╮
00:18:02 v #18781 > > │ .py output (Cuda):                                                           │
00:18:02 v #18782 > > │ __assert_eq' / actual: (US0_0(v0=3), US0_1()) / expected: (US0_0(v0=3),      │
00:18:02 v #18783 > > │ US0_1())                                                                     │
00:18:02 v #18784 > > │                                                                              │
00:18:02 v #18785 > > │ .rs output:                                                                  │
00:18:02 v #18786 > > │ __assert_eq' / actual: (US0_0(3), US0_1) / expected: (US0_0(3), US0_1)       │
00:18:02 v #18787 > > │                                                                              │
00:18:02 v #18788 > > │ .ts output:                                                                  │
00:18:02 v #18789 > > │ __assert_eq' / actual: US0_0 3,US0_1 / expected: US0_0 3,US0_1               │
00:18:02 v #18790 > > │                                                                              │
00:18:02 v #18791 > > │ .py output:                                                                  │
00:18:02 v #18792 > > │ __assert_eq' / actual: (US0_0 3, US0_1) / expected: (US0_0 3, US0_1)         │
00:18:02 v #18793 > > │                                                                              │
00:18:02 v #18794 > > │                                                                              │
00:18:02 v #18795 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:02 v #18796 > >
00:18:02 v #18797 > > ╭─[ 4.19s - stdout ]───────────────────────────────────────────────────────────╮
00:18:02 v #18798 > > │ .fsx output:                                                                 │
00:18:02 v #18799 > > │ __assert_eq' / actual: struct (US0_0 3, US0_1) / expected: struct (US0_0 3,  │
00:18:02 v #18800 > > │ US0_1)                                                                       │
00:18:02 v #18801 > > │                                                                              │
00:18:02 v #18802 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:02 v #18803 > >
00:18:02 v #18804 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:02 v #18805 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:02 v #18806 > > │ ### of_obj                                                                   │
00:18:02 v #18807 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:02 v #18808 > >
00:18:02 v #18809 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:02 v #18810 > > inl of_obj forall t. (x : t) : option' t =
00:18:02 v #18811 > >     backend_switch {
00:18:02 v #18812 > >         Fsharp = fun () =>
00:18:02 v #18813 > >             $'let mutable _!x = None'
00:18:02 v #18814 > >             $'#if \!FABLE_COMPILER && \!WASM && \!CONTRACT'
00:18:02 v #18815 > >             ((x |> $'Option.ofObj') : option' t) |> emit_unit
00:18:02 v #18816 > >             $'#else'
00:18:02 v #18817 > >             $'Some !x '
00:18:02 v #18818 > >             $'#endif'
00:18:02 v #18819 > >             $'|> fun x -> _!x <- Some x'
00:18:02 v #18820 > >             $'match _!x with Some x -> x | None -> failwith "optionm\'.of_obj
00:18:02 v #18821 > > _!x=None"' : option' t
00:18:02 v #18822 > >         Python = fun () =>
00:18:02 v #18823 > >             $'!x ' : option' t
00:18:02 v #18824 > >     }
00:18:02 v #18825 > >
00:18:02 v #18826 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:02 v #18827 > > //// test
00:18:02 v #18828 > > ///! fsharp
00:18:02 v #18829 > > ///! cuda
00:18:02 v #18830 > > ////! rust // attempted to zero-initialize type `alloc::sync::Arc<dyn
00:18:02 v #18831 > > core::any::Any>`, which is invalid
00:18:02 v #18832 > > ///! typescript
00:18:02 v #18833 > > ///! python
00:18:02 v #18834 > >
00:18:02 v #18835 > > null ()
00:18:02 v #18836 > > |> of_obj
00:18:02 v #18837 > > |> unbox
00:18:02 v #18838 > > |> _assert_eq (None : option string)
00:18:04 v #18839 > >
00:18:04 v #18840 > > ╭─[ 2.16s - return value ]─────────────────────────────────────────────────────╮
00:18:04 v #18841 > > │ .py output (Cuda):                                                           │
00:18:04 v #18842 > > │ __assert_eq / actual: US0_1() / expected: US0_1()                            │
00:18:04 v #18843 > > │                                                                              │
00:18:04 v #18844 > > │ .ts output:                                                                  │
00:18:04 v #18845 > > │ __assert_eq / actual: US0_1 / expected: US0_1                                │
00:18:04 v #18846 > > │                                                                              │
00:18:04 v #18847 > > │ .py output:                                                                  │
00:18:04 v #18848 > > │ __assert_eq / actual: US0_1 / expected: US0_1                                │
00:18:04 v #18849 > > │                                                                              │
00:18:04 v #18850 > > │                                                                              │
00:18:04 v #18851 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:04 v #18852 > >
00:18:04 v #18853 > > ╭─[ 2.17s - stdout ]───────────────────────────────────────────────────────────╮
00:18:04 v #18854 > > │ .fsx output:                                                                 │
00:18:04 v #18855 > > │ __assert_eq / actual: US0_1 / expected: US0_1                                │
00:18:04 v #18856 > > │                                                                              │
00:18:04 v #18857 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:04 v #18858 > >
00:18:04 v #18859 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:04 v #18860 > > //// test
00:18:04 v #18861 > > ///! fsharp
00:18:04 v #18862 > > ///! cuda
00:18:04 v #18863 > > ///! rust
00:18:04 v #18864 > > ///! typescript
00:18:04 v #18865 > > ///! python
00:18:04 v #18866 > >
00:18:04 v #18867 > > ""
00:18:04 v #18868 > > |> of_obj
00:18:04 v #18869 > > |> unbox
00:18:04 v #18870 > > |> _assert_eq' (Some "")
00:18:08 v #18871 > >
00:18:08 v #18872 > > ╭─[ 3.48s - return value ]─────────────────────────────────────────────────────╮
00:18:08 v #18873 > > │ .py output (Cuda):                                                           │
00:18:08 v #18874 > > │ __assert_eq' / actual: US0_0(v0='') / expected: US0_0(v0='')                 │
00:18:08 v #18875 > > │                                                                              │
00:18:08 v #18876 > > │ .rs output:                                                                  │
00:18:08 v #18877 > > │ __assert_eq' / actual: US0_0("") / expected: US0_0("")                       │
00:18:08 v #18878 > > │                                                                              │
00:18:08 v #18879 > > │ .ts output:                                                                  │
00:18:08 v #18880 > > │ __assert_eq' / actual: US0_0  / expected: US0_0                              │
00:18:08 v #18881 > > │                                                                              │
00:18:08 v #18882 > > │ .py output:                                                                  │
00:18:08 v #18883 > > │ __assert_eq' / actual: US0_0 "" / expected: US0_0 ""                         │
00:18:08 v #18884 > > │                                                                              │
00:18:08 v #18885 > > │                                                                              │
00:18:08 v #18886 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:08 v #18887 > >
00:18:08 v #18888 > > ╭─[ 3.48s - stdout ]───────────────────────────────────────────────────────────╮
00:18:08 v #18889 > > │ .fsx output:                                                                 │
00:18:08 v #18890 > > │ __assert_eq' / actual: US0_0 "" / expected: US0_0 ""                         │
00:18:08 v #18891 > > │                                                                              │
00:18:08 v #18892 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:08 v #18893 > >
00:18:08 v #18894 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:08 v #18895 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:08 v #18896 > > │ ### flatten'                                                                 │
00:18:08 v #18897 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:08 v #18898 > >
00:18:08 v #18899 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:08 v #18900 > > inl flatten' x =
00:18:08 v #18901 > >     x
00:18:08 v #18902 > >     |> unbox
00:18:08 v #18903 > >     |> optionm.map unbox
00:18:08 v #18904 > >     |> flatten
00:18:08 v #18905 > >
00:18:08 v #18906 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:08 v #18907 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:08 v #18908 > > │ ## rust                                                                      │
00:18:08 v #18909 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:08 v #18910 > >
00:18:08 v #18911 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:08 v #18912 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:08 v #18913 > > │ ### try'                                                                     │
00:18:08 v #18914 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:08 v #18915 > >
00:18:08 v #18916 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:08 v #18917 > > inl try' forall t. (x : option' t) : t =
00:18:08 v #18918 > >     !\\(x, $'"$0?"')
00:18:09 v #18919 > >
00:18:09 v #18920 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:09 v #18921 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:09 v #18922 > > │ ### map'                                                                     │
00:18:09 v #18923 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:09 v #18924 > >
00:18:09 v #18925 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:09 v #18926 > > inl map' forall t u. (fn : t -> u) (x : option' t) : option' u =
00:18:09 v #18927 > >     (!\\(x, $'"true; let _optionm_map_ = $0.map(|x| { //"') : bool) |> ignore
00:18:09 v #18928 > >     inl result = fn !\($'"x"')
00:18:09 v #18929 > >     (!\\(result, $'"true; $0 })"') : bool) |> ignore
00:18:09 v #18930 > >     !\($'"_optionm_map_"')
00:18:09 v #18931 > >
00:18:09 v #18932 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:09 v #18933 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:09 v #18934 > > │ ### unwrap                                                                   │
00:18:09 v #18935 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:09 v #18936 > >
00:18:09 v #18937 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:09 v #18938 > > inl unwrap forall t. (x : option' t) : t =
00:18:09 v #18939 > >     !\\(x, $'"$0.unwrap()"')
00:18:10 v #18940 > >
00:18:10 v #18941 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:10 v #18942 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:10 v #18943 > > │ ### take                                                                     │
00:18:10 v #18944 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:10 v #18945 > >
00:18:10 v #18946 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:10 v #18947 > > inl take forall t. (x : option' t) : option' t =
00:18:10 v #18948 > >     (!\\(x, $'"true; let mut !x = !x"') : bool) |> ignore
00:18:10 v #18949 > >     !\\(x, $'"Option::take(&mut $0)"')
00:18:10 v #18950 > >
00:18:10 v #18951 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:10 v #18952 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:10 v #18953 > > │ ### take_ref                                                                 │
00:18:10 v #18954 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:10 v #18955 > >
00:18:10 v #18956 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:10 v #18957 > > inl take_ref forall t. (x : rust.ref (option' t)) : option' t =
00:18:10 v #18958 > >     (!\\(x, $'"true; let mut !x = !x"') : bool) |> ignore
00:18:10 v #18959 > >     !\\(x, $'"Option::take(&mut $0)"')
00:18:10 v #18960 > >
00:18:10 v #18961 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:10 v #18962 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:10 v #18963 > > │ ### take_ref_mut                                                             │
00:18:10 v #18964 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:10 v #18965 > >
00:18:10 v #18966 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:10 v #18967 > > inl take_ref_mut forall t. (x : rust.ref (rust.mut' (option' t))) : option' t =
00:18:10 v #18968 > >     !\\(x, $'"Option::take($0)"')
00:18:11 v #18969 > >
00:18:11 v #18970 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:11 v #18971 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:11 v #18972 > > │ ### cloned                                                                   │
00:18:11 v #18973 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:11 v #18974 > >
00:18:11 v #18975 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:11 v #18976 > > inl cloned forall t. (x : option' (rust.ref t)) : option' t =
00:18:11 v #18977 > >     !\\(x, $'"$0.cloned()"')
00:18:11 v #18978 > >
00:18:11 v #18979 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:11 v #18980 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:11 v #18981 > > │ ### as_ref                                                                   │
00:18:11 v #18982 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:11 v #18983 > >
00:18:11 v #18984 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:11 v #18985 > > inl as_ref forall t. (x : rust.ref (option' t)) : option' (rust.ref t) =
00:18:11 v #18986 > >     !\\(x, $'"$0.as_ref()"')
00:18:11 v #18987 > >
00:18:11 v #18988 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:11 v #18989 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:11 v #18990 > > │ ### as_mut                                                                   │
00:18:11 v #18991 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:11 v #18992 > >
00:18:11 v #18993 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:11 v #18994 > > inl as_mut forall t. (x : rust.ref (rust.mut' (option' t))) : option' (rust.ref
00:18:11 v #18995 > > (rust.mut' t)) =
00:18:11 v #18996 > >     !\\(x, $'"$0.as_mut()"')
00:18:12 v #18997 > >
00:18:12 v #18998 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:12 v #18999 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:12 v #19000 > > │ ### unwrap_or                                                                │
00:18:12 v #19001 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:12 v #19002 > >
00:18:12 v #19003 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:12 v #19004 > > inl unwrap_or forall t. (def : t) (x : option' t) : t =
00:18:12 v #19005 > >     !\($'"!x.unwrap_or(!def)"')
00:18:12 v #19006 > >
00:18:12 v #19007 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:12 v #19008 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:12 v #19009 > > │ ### and_then                                                                 │
00:18:12 v #19010 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:12 v #19011 > >
00:18:12 v #19012 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:12 v #19013 > > inl and_then forall t u. (fn : t -> option' u) (x : option' t) : option' u =
00:18:12 v #19014 > >     !\\((x, fn), $'"$0.and_then(|x| $1(x))"')
00:18:13 v #19015 > >
00:18:13 v #19016 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:13 v #19017 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:13 v #19018 > > │ ### rc_upgrade                                                               │
00:18:13 v #19019 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:13 v #19020 > >
00:18:13 v #19021 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:13 v #19022 > > inl rc_upgrade forall t. (x : rust.weak_rc t) : option' (rust.rc t) =
00:18:13 v #19023 > >     !\\(x, $'"std::rc::Weak::upgrade(&$0)"')
00:18:13 v #19024 > >
00:18:13 v #19025 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:13 v #19026 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:13 v #19027 > > │ ### rc_into_inner                                                            │
00:18:13 v #19028 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:13 v #19029 > >
00:18:13 v #19030 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:13 v #19031 > > inl rc_into_inner forall t. (x : rust.rc t) : option' t =
00:18:13 v #19032 > >     !\\(x, $'"std::rc::Rc::into_inner($0)"')
00:18:13 v #19033 > >
00:18:13 v #19034 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:13 v #19035 > > //// test
00:18:13 v #19036 > > ///! rust
00:18:13 v #19037 > >
00:18:13 v #19038 > > rust.new_rc 0i32
00:18:13 v #19039 > > |> rc_into_inner
00:18:13 v #19040 > > |> unbox
00:18:13 v #19041 > > |> _assert_eq' (Some 0i32)
00:18:16 v #19042 > >
00:18:16 v #19043 > > ╭─[ 2.87s - return value ]─────────────────────────────────────────────────────╮
00:18:16 v #19044 > > │ __assert_eq' / actual: US0_0(0) / expected: US0_0(0)                         │
00:18:16 v #19045 > > │                                                                              │
00:18:16 v #19046 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:16 v #19047 > 00:00:34 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 27172 }
00:18:16 v #19048 > 00:00:34 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/polyglot/lib/spiral/optionm'.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/polyglot/lib/spiral/optionm'.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:18:18 v #19049 > 00:00:35 v #5 ! [NbConvertApp] Converting notebook c:/home/git/polyglot/lib/spiral/optionm'.dib.ipynb to html
00:18:18 v #19050 > 00:00:35 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:18:18 v #19051 > 00:00:35 v #7 !   validate(nb)
00:18:18 v #19052 > 00:00:36 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:18:18 v #19053 > 00:00:36 v #9 !   return _pygments_highlight(
00:18:19 v #19054 > 00:00:36 v #10 ! [NbConvertApp] Writing 347135 bytes to c:\home\git\polyglot\lib\spiral\optionm'.dib.html
00:18:19 v #19055 > 00:00:36 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 858 }
00:18:19 v #19056 > 00:00:36 d #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 858 }
00:18:19 v #19057 > 00:00:36 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/optionm''.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/optionm''.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:18:19 v #19058 > 00:00:37 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:18:19 v #19059 > 00:00:37 d #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:18:19 v #19060 > 00:00:37 d #16 spiral_builder.run / dib / { exit_code = 0; result_length = 28089 }
00:18:19 d #19061 runtime.execute_with_options_async / { exit_code = 0; output_length = 31800 }
00:18:19 d #23 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder.exe dib --path optionm'.dib --retries 3
00:18:19 d #19062 runtime.execute_with_options_async / { file_name = ../../workspace/target/release/spiral_builder.exe; arguments = US5_0 "dib --path listm'.dib --retries 3"; options = { command = ../../workspace/target/release/spiral_builder.exe dib --path listm'.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:18:19 v #19063 > 00:00:00 d #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "listm'.dib", "--retries", "3"])) }
00:18:19 v #19064 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/polyglot/lib/spiral/listm'.dib", "--output-path", "c:/home/git/polyglot/lib/spiral/listm'.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/polyglot/lib/spiral/listm'.dib" --output-path "c:/home/git/polyglot/lib/spiral/listm'.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:18:21 v #19065 > >
00:18:21 v #19066 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:21 v #19067 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:21 v #19068 > > │ # listm'                                                                     │
00:18:21 v #19069 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:24 v #19070 > >
00:18:24 v #19071 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:24 v #19072 > > //// test
00:18:24 v #19073 > >
00:18:24 v #19074 > > open testing
00:18:25 v #19075 > >
00:18:25 v #19076 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:25 v #19077 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:25 v #19078 > > │ ## listm'                                                                    │
00:18:25 v #19079 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:25 v #19080 > >
00:18:25 v #19081 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:25 v #19082 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:25 v #19083 > > │ ### append                                                                   │
00:18:25 v #19084 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:25 v #19085 > >
00:18:25 v #19086 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:25 v #19087 > > instance append list t =
00:18:25 v #19088 > >     listm.append
00:18:26 v #19089 > >
00:18:26 v #19090 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:26 v #19091 > > //// test
00:18:26 v #19092 > >
00:18:26 v #19093 > > [[ "a"; "b" ]] ++ [[ "c"; "d" ]]
00:18:26 v #19094 > > |> _assert_eq [[ "a"; "b"; "c"; "d" ]]
00:18:27 v #19095 > >
00:18:27 v #19096 > > ╭─[ 1.41s - stdout ]───────────────────────────────────────────────────────────╮
00:18:27 v #19097 > > │ __assert_eq / actual: UH0_1 ("a", UH0_1 ("b", UH0_1 ("c", UH0_1 ("d",        │
00:18:27 v #19098 > > │ UH0_0)))) / expected: UH0_1 ("a", UH0_1 ("b", UH0_1 ("c", UH0_1 ("d",        │
00:18:27 v #19099 > > │ UH0_0))))                                                                    │
00:18:27 v #19100 > > │                                                                              │
00:18:27 v #19101 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:27 v #19102 > >
00:18:27 v #19103 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:27 v #19104 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:27 v #19105 > > │ ### collect                                                                  │
00:18:27 v #19106 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:27 v #19107 > >
00:18:27 v #19108 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:27 v #19109 > > inl collect forall t r. (fn : t -> list r) (items : list t) : list r =
00:18:27 v #19110 > >     items
00:18:27 v #19111 > >     |> listm.map fn
00:18:27 v #19112 > >     |> listm.fold (++) [[]]
00:18:28 v #19113 > >
00:18:28 v #19114 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:28 v #19115 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:28 v #19116 > > │ ### init_series                                                              │
00:18:28 v #19117 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:28 v #19118 > >
00:18:28 v #19119 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:28 v #19120 > > inl init_series start end inc =
00:18:28 v #19121 > >     inl total : f64 = conv ((end - start) / inc) + 1
00:18:28 v #19122 > >     listm.init total (conv >> (*) inc >> (+) start)
00:18:28 v #19123 > >
00:18:28 v #19124 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:28 v #19125 > > //// test
00:18:28 v #19126 > >
00:18:28 v #19127 > > init_series 0 1 0.5
00:18:28 v #19128 > > |> _assert_eq [[ 0f64; 0.5; 1 ]]
00:18:29 v #19129 > >
00:18:29 v #19130 > > ╭─[ 427.45ms - stdout ]────────────────────────────────────────────────────────╮
00:18:29 v #19131 > > │ __assert_eq / actual: UH0_1 (0.0, UH0_1 (0.5, UH0_1 (1.0, UH0_0))) /         │
00:18:29 v #19132 > > │ expected: UH0_1 (0.0, UH0_1 (0.5, UH0_1 (1.0, UH0_0)))                       │
00:18:29 v #19133 > > │                                                                              │
00:18:29 v #19134 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:29 v #19135 > >
00:18:29 v #19136 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:29 v #19137 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:29 v #19138 > > │ ### try_item                                                                 │
00:18:29 v #19139 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:29 v #19140 > >
00:18:29 v #19141 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:29 v #19142 > > inl rec try_item i = function
00:18:29 v #19143 > >     | Cons (x, _) when i = 0 => Some x
00:18:29 v #19144 > >     | Cons (_, xs) => try_item (i - 1) xs
00:18:29 v #19145 > >     | Nil => None
00:18:29 v #19146 > >
00:18:29 v #19147 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:29 v #19148 > > //// test
00:18:29 v #19149 > >
00:18:29 v #19150 > > listm.init 10i32 id
00:18:29 v #19151 > > |> try_item 9i32
00:18:29 v #19152 > > |> _assert_eq (Some 9)
00:18:29 v #19153 > >
00:18:29 v #19154 > > ╭─[ 477.71ms - stdout ]────────────────────────────────────────────────────────╮
00:18:29 v #19155 > > │ __assert_eq / actual: US0_0 9 / expected: US0_0 9                            │
00:18:29 v #19156 > > │                                                                              │
00:18:29 v #19157 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:29 v #19158 > >
00:18:29 v #19159 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:29 v #19160 > > //// test
00:18:29 v #19161 > >
00:18:29 v #19162 > > listm.init 10i32 id
00:18:29 v #19163 > > |> try_item 10i32
00:18:29 v #19164 > > |> _assert_eq None
00:18:30 v #19165 > >
00:18:30 v #19166 > > ╭─[ 419.46ms - stdout ]────────────────────────────────────────────────────────╮
00:18:30 v #19167 > > │ __assert_eq / actual: US0_1 / expected: US0_1                                │
00:18:30 v #19168 > > │                                                                              │
00:18:30 v #19169 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:30 v #19170 > >
00:18:30 v #19171 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:30 v #19172 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:30 v #19173 > > │ ### item                                                                     │
00:18:30 v #19174 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:30 v #19175 > >
00:18:30 v #19176 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:30 v #19177 > > inl item i =
00:18:30 v #19178 > >     try_item i >> optionm.value
00:18:30 v #19179 > >
00:18:30 v #19180 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:30 v #19181 > > //// test
00:18:30 v #19182 > >
00:18:30 v #19183 > > listm.init 10i32 id
00:18:30 v #19184 > > |> item 9i32
00:18:30 v #19185 > > |> _assert_eq 9
00:18:31 v #19186 > >
00:18:31 v #19187 > > ╭─[ 433.42ms - stdout ]────────────────────────────────────────────────────────╮
00:18:31 v #19188 > > │ __assert_eq / actual: 9 / expected: 9                                        │
00:18:31 v #19189 > > │                                                                              │
00:18:31 v #19190 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:31 v #19191 > >
00:18:31 v #19192 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:31 v #19193 > > //// test
00:18:31 v #19194 > >
00:18:31 v #19195 > > fun () =>
00:18:31 v #19196 > >     listm.init 10i32 id
00:18:31 v #19197 > >     |> item 10i32
00:18:31 v #19198 > >     |> ignore
00:18:31 v #19199 > > |> _throws
00:18:31 v #19200 > > |> optionm.map sm'.format_exception
00:18:31 v #19201 > > |> _assert_eq (Some "System.Exception: Option does not have a value.")
00:18:31 v #19202 > >
00:18:31 v #19203 > > ╭─[ 644.15ms - stdout ]────────────────────────────────────────────────────────╮
00:18:31 v #19204 > > │ __assert_eq / actual: US1_0 "System.Exception: Option does not have a        │
00:18:31 v #19205 > > │ value." / expected: US1_0 "System.Exception: Option does not have a value."  │
00:18:31 v #19206 > > │                                                                              │
00:18:31 v #19207 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:31 v #19208 > >
00:18:31 v #19209 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:31 v #19210 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:31 v #19211 > > │ ### try_item_                                                                │
00:18:31 v #19212 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:31 v #19213 > >
00:18:31 v #19214 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:31 v #19215 > > let rec try_item_ i = function
00:18:31 v #19216 > >     | Cons (x, _) when i = 0 => Some x
00:18:31 v #19217 > >     | Cons (_, xs) => try_item_ (i - 1) xs
00:18:31 v #19218 > >     | Nil => None
00:18:32 v #19219 > >
00:18:32 v #19220 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:32 v #19221 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:32 v #19222 > > │ ### item_                                                                    │
00:18:32 v #19223 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:32 v #19224 > >
00:18:32 v #19225 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:32 v #19226 > > inl item_ i =
00:18:32 v #19227 > >     try_item_ i >> optionm.value
00:18:32 v #19228 > >
00:18:32 v #19229 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:32 v #19230 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:32 v #19231 > > │ ### sum                                                                      │
00:18:32 v #19232 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:32 v #19233 > >
00:18:32 v #19234 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:32 v #19235 > > inl sum list =
00:18:32 v #19236 > >     list |> listm.fold (+) 0
00:18:32 v #19237 > >
00:18:32 v #19238 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:32 v #19239 > > //// test
00:18:32 v #19240 > >
00:18:32 v #19241 > > listm.init 10i32 id
00:18:32 v #19242 > > |> sum
00:18:32 v #19243 > > |> _assert_eq 45
00:18:33 v #19244 > >
00:18:33 v #19245 > > ╭─[ 456.39ms - stdout ]────────────────────────────────────────────────────────╮
00:18:33 v #19246 > > │ __assert_eq / actual: 45 / expected: 45                                      │
00:18:33 v #19247 > > │                                                                              │
00:18:33 v #19248 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:33 v #19249 > >
00:18:33 v #19250 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:33 v #19251 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:33 v #19252 > > │ ### unzip                                                                    │
00:18:33 v #19253 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:33 v #19254 > >
00:18:33 v #19255 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:33 v #19256 > > inl unzip list =
00:18:33 v #19257 > >     (([[]], [[]]), list)
00:18:33 v #19258 > >     ||> listm.fold fun (acc_x, acc_y) (x, y) =>
00:18:33 v #19259 > >         x :: acc_x, y :: acc_y
00:18:33 v #19260 > >     |> fun x, y =>
00:18:33 v #19261 > >         x |> listm.rev, y |> listm.rev
00:18:33 v #19262 > >
00:18:33 v #19263 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:33 v #19264 > > //// test
00:18:33 v #19265 > >
00:18:33 v #19266 > > listm.init 10i32 id
00:18:33 v #19267 > > |> listm.map (fun x => x, x)
00:18:33 v #19268 > > |> unzip
00:18:33 v #19269 > > |> fun x, y =>
00:18:33 v #19270 > >     x |> sum
00:18:33 v #19271 > >     |> _assert_eq 45
00:18:33 v #19272 > >
00:18:33 v #19273 > >     y |> sum
00:18:33 v #19274 > >     |> _assert_eq 45
00:18:34 v #19275 > >
00:18:34 v #19276 > > ╭─[ 421.57ms - stdout ]────────────────────────────────────────────────────────╮
00:18:34 v #19277 > > │ __assert_eq / actual: 45 / expected: 45                                      │
00:18:34 v #19278 > > │ __assert_eq / actual: 45 / expected: 45                                      │
00:18:34 v #19279 > > │                                                                              │
00:18:34 v #19280 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:34 v #19281 > >
00:18:34 v #19282 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:34 v #19283 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:34 v #19284 > > │ ### try_index_of                                                             │
00:18:34 v #19285 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:34 v #19286 > >
00:18:34 v #19287 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:34 v #19288 > > inl try_index_of item list =
00:18:34 v #19289 > >     inl rec loop i = function
00:18:34 v #19290 > >         | [[]] => None
00:18:34 v #19291 > >         | x :: xs =>
00:18:34 v #19292 > >             if x = item
00:18:34 v #19293 > >             then Some i
00:18:34 v #19294 > >             else loop (i + 1) xs
00:18:34 v #19295 > >     loop 0 list
00:18:34 v #19296 > >
00:18:34 v #19297 > > inl index_of item =
00:18:34 v #19298 > >     try_index_of item >> optionm.value
00:18:34 v #19299 > >
00:18:34 v #19300 > > inl try_index_of_ item list =
00:18:34 v #19301 > >     let rec loop i = function
00:18:34 v #19302 > >         | [[]] => None
00:18:34 v #19303 > >         | x :: xs =>
00:18:34 v #19304 > >             if x = item
00:18:34 v #19305 > >             then Some i
00:18:34 v #19306 > >             else loop (i + 1) xs
00:18:34 v #19307 > >     loop 0 list
00:18:34 v #19308 > >
00:18:34 v #19309 > > inl index_of_ item =
00:18:34 v #19310 > >     try_index_of_ item >> optionm.value
00:18:34 v #19311 > >
00:18:34 v #19312 > > inl try_index_of__ item list =
00:18:34 v #19313 > >     inl i = mut 0
00:18:34 v #19314 > >     inl list = mut list
00:18:34 v #19315 > >     inl result = mut None
00:18:34 v #19316 > >     let rec loop () =
00:18:34 v #19317 > >         match *list with
00:18:34 v #19318 > >         | [[]] => result <- None
00:18:34 v #19319 > >         | x :: xs =>
00:18:34 v #19320 > >             if x = item
00:18:34 v #19321 > >             then result <- Some *i
00:18:34 v #19322 > >             else
00:18:34 v #19323 > >                 i <- *i + 1
00:18:34 v #19324 > >                 list <- xs
00:18:34 v #19325 > >                 loop ()
00:18:34 v #19326 > >     loop ()
00:18:34 v #19327 > >     *result
00:18:34 v #19328 > >
00:18:34 v #19329 > > inl index_of__ item =
00:18:34 v #19330 > >     try_index_of__ item >> optionm.value
00:18:34 v #19331 > >
00:18:34 v #19332 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:34 v #19333 > > //// test
00:18:34 v #19334 > >
00:18:34 v #19335 > > listm.init 10i32 id
00:18:34 v #19336 > > |> index_of 5i32
00:18:34 v #19337 > > |> _assert_eq 5i32
00:18:34 v #19338 > >
00:18:34 v #19339 > > ╭─[ 386.30ms - stdout ]────────────────────────────────────────────────────────╮
00:18:34 v #19340 > > │ __assert_eq / actual: 5 / expected: 5                                        │
00:18:34 v #19341 > > │                                                                              │
00:18:34 v #19342 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:34 v #19343 > >
00:18:34 v #19344 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:34 v #19345 > > //// test
00:18:34 v #19346 > >
00:18:34 v #19347 > > listm.init 10i32 id
00:18:34 v #19348 > > |> try_index_of 10i32
00:18:34 v #19349 > > |> _assert_eq (None : option i32)
00:18:35 v #19350 > >
00:18:35 v #19351 > > ╭─[ 479.28ms - stdout ]────────────────────────────────────────────────────────╮
00:18:35 v #19352 > > │ __assert_eq / actual: US0_1 / expected: US0_1                                │
00:18:35 v #19353 > > │                                                                              │
00:18:35 v #19354 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:35 v #19355 > >
00:18:35 v #19356 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:35 v #19357 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:35 v #19358 > > │ ### try_find                                                                 │
00:18:35 v #19359 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:35 v #19360 > >
00:18:35 v #19361 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:35 v #19362 > > inl try_find fn list =
00:18:35 v #19363 > >     inl rec loop = function
00:18:35 v #19364 > >         | [[]] => None
00:18:35 v #19365 > >         | x :: xs =>
00:18:35 v #19366 > >             if fn x
00:18:35 v #19367 > >             then Some x
00:18:35 v #19368 > >             else loop xs
00:18:35 v #19369 > >     loop list
00:18:35 v #19370 > >
00:18:35 v #19371 > > inl try_find_ fn list =
00:18:35 v #19372 > >     let rec loop = function
00:18:35 v #19373 > >         | [[]] => None
00:18:35 v #19374 > >         | x :: xs =>
00:18:35 v #19375 > >             if fn x
00:18:35 v #19376 > >             then Some x
00:18:35 v #19377 > >             else loop xs
00:18:35 v #19378 > >     loop list
00:18:35 v #19379 > >
00:18:35 v #19380 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:35 v #19381 > > //// test
00:18:35 v #19382 > >
00:18:35 v #19383 > > listm.init 10i32 id
00:18:35 v #19384 > > |> try_find ((=) 5i32)
00:18:35 v #19385 > > |> _assert_eq (Some 5i32)
00:18:36 v #19386 > >
00:18:36 v #19387 > > ╭─[ 454.37ms - stdout ]────────────────────────────────────────────────────────╮
00:18:36 v #19388 > > │ __assert_eq / actual: US0_0 5 / expected: US0_0 5                            │
00:18:36 v #19389 > > │                                                                              │
00:18:36 v #19390 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:36 v #19391 > >
00:18:36 v #19392 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:36 v #19393 > > inl find x =
00:18:36 v #19394 > >     try_find x >> optionm.value
00:18:36 v #19395 > >
00:18:36 v #19396 > > inl find_ x =
00:18:36 v #19397 > >     try_find_ x >> optionm.value
00:18:36 v #19398 > >
00:18:36 v #19399 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:36 v #19400 > > //// test
00:18:36 v #19401 > >
00:18:36 v #19402 > > listm.init 10i32 id
00:18:36 v #19403 > > |> find ((=) 5i32)
00:18:36 v #19404 > > |> _assert_eq 5i32
00:18:37 v #19405 > >
00:18:37 v #19406 > > ╭─[ 413.50ms - stdout ]────────────────────────────────────────────────────────╮
00:18:37 v #19407 > > │ __assert_eq / actual: 5 / expected: 5                                        │
00:18:37 v #19408 > > │                                                                              │
00:18:37 v #19409 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:37 v #19410 > >
00:18:37 v #19411 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:37 v #19412 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:37 v #19413 > > │ ### choose                                                                   │
00:18:37 v #19414 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:37 v #19415 > >
00:18:37 v #19416 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:37 v #19417 > > inl choose f l =
00:18:37 v #19418 > >     (l, [[]])
00:18:37 v #19419 > >     ||> listm.foldBack fun x acc =>
00:18:37 v #19420 > >         match f x with
00:18:37 v #19421 > >         | Some y => y :: acc
00:18:37 v #19422 > >         | None => acc
00:18:37 v #19423 > >
00:18:37 v #19424 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:37 v #19425 > > //// test
00:18:37 v #19426 > >
00:18:37 v #19427 > > listm.init 10i32 id
00:18:37 v #19428 > > |> choose (fun x => if x % 2 = 0 then Some x else None)
00:18:37 v #19429 > > |> _assert_eq [[ 0; 2; 4; 6; 8 ]]
00:18:37 v #19430 > >
00:18:37 v #19431 > > ╭─[ 397.19ms - stdout ]────────────────────────────────────────────────────────╮
00:18:37 v #19432 > > │ __assert_eq / actual: UH0_1 (0, UH0_1 (2, UH0_1 (4, UH0_1 (6, UH0_1 (8,      │
00:18:37 v #19433 > > │ UH0_0))))) / expected: UH0_1 (0, UH0_1 (2, UH0_1 (4, UH0_1 (6, UH0_1 (8,     │
00:18:37 v #19434 > > │ UH0_0)))))                                                                   │
00:18:37 v #19435 > > │                                                                              │
00:18:37 v #19436 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:37 v #19437 > >
00:18:37 v #19438 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:37 v #19439 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:37 v #19440 > > │ ### filter                                                                   │
00:18:37 v #19441 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:37 v #19442 > >
00:18:37 v #19443 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:37 v #19444 > > inl filter forall t. (fn : t -> bool) (list : list t) : list t =
00:18:37 v #19445 > >     (list, Nil)
00:18:37 v #19446 > >     ||> listm.foldBack fun x acc =>
00:18:37 v #19447 > >         if fn x then x :: acc else acc
00:18:38 v #19448 > >
00:18:38 v #19449 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:38 v #19450 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:38 v #19451 > > │ ### zip_with                                                                 │
00:18:38 v #19452 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:38 v #19453 > >
00:18:38 v #19454 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:38 v #19455 > > inl zip_with fn xs ys =
00:18:38 v #19456 > >     inl rec loop acc xs ys =
00:18:38 v #19457 > >         match xs, ys with
00:18:38 v #19458 > >         | Cons (x, xs), Cons (y, ys) =>
00:18:38 v #19459 > >             loop (fn x y :: acc) xs ys
00:18:38 v #19460 > >         | _ => listm.rev acc
00:18:38 v #19461 > >     loop [[]] xs ys
00:18:38 v #19462 > >
00:18:38 v #19463 > > inl zip_with_ fn xs ys =
00:18:38 v #19464 > >     let rec loop acc xs ys =
00:18:38 v #19465 > >         match xs, ys with
00:18:38 v #19466 > >         | Cons (x, xs), Cons (y, ys) =>
00:18:38 v #19467 > >             loop (fn x y :: acc) xs ys
00:18:38 v #19468 > >         | _ => listm.rev acc
00:18:38 v #19469 > >     loop [[]] xs ys
00:18:38 v #19470 > >
00:18:38 v #19471 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:38 v #19472 > > //// test
00:18:38 v #19473 > >
00:18:38 v #19474 > > ([[ 1i32; 2; 3 ]], [[ 4; 5; 6 ]])
00:18:38 v #19475 > > ||> zip_with (+)
00:18:38 v #19476 > > |> _assert_eq [[ 5; 7; 9 ]]
00:18:39 v #19477 > >
00:18:39 v #19478 > > ╭─[ 425.45ms - stdout ]────────────────────────────────────────────────────────╮
00:18:39 v #19479 > > │ __assert_eq / actual: UH0_1 (5, UH0_1 (7, UH0_1 (9, UH0_0))) / expected:     │
00:18:39 v #19480 > > │ UH0_1 (5, UH0_1 (7, UH0_1 (9, UH0_0)))                                       │
00:18:39 v #19481 > > │                                                                              │
00:18:39 v #19482 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:39 v #19483 > >
00:18:39 v #19484 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:39 v #19485 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:39 v #19486 > > │ ### zip                                                                      │
00:18:39 v #19487 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:39 v #19488 > >
00:18:39 v #19489 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:39 v #19490 > > inl zip xs ys =
00:18:39 v #19491 > >     zip_with pair xs ys
00:18:39 v #19492 > >
00:18:39 v #19493 > > inl zip_ xs ys =
00:18:39 v #19494 > >     zip_with_ pair xs ys
00:18:39 v #19495 > >
00:18:39 v #19496 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:39 v #19497 > > //// test
00:18:39 v #19498 > >
00:18:39 v #19499 > > ([[ 1i32; 2; 3 ]], [[ 4i32; 5; 6 ]])
00:18:39 v #19500 > > ||> zip
00:18:39 v #19501 > > |> _assert_eq [[ 1, 4; 2, 5; 3, 6 ]]
00:18:40 v #19502 > >
00:18:40 v #19503 > > ╭─[ 471.77ms - stdout ]────────────────────────────────────────────────────────╮
00:18:40 v #19504 > > │ __assert_eq / actual: UH0_1 (1, 4, UH0_1 (2, 5, UH0_1 (3, 6, UH0_0))) /      │
00:18:40 v #19505 > > │ expected: UH0_1 (1, 4, UH0_1 (2, 5, UH0_1 (3, 6, UH0_0)))                    │
00:18:40 v #19506 > > │                                                                              │
00:18:40 v #19507 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:40 v #19508 > >
00:18:40 v #19509 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:40 v #19510 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:40 v #19511 > > │ ### indexed                                                                  │
00:18:40 v #19512 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:40 v #19513 > >
00:18:40 v #19514 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:40 v #19515 > > inl indexed list =
00:18:40 v #19516 > >     (([[]], 0), list)
00:18:40 v #19517 > >     ||> listm.fold fun (acc, i) x =>
00:18:40 v #19518 > >         (i, x) :: acc, i + 1
00:18:40 v #19519 > >     |> fst
00:18:40 v #19520 > >     |> listm.rev
00:18:40 v #19521 > >
00:18:40 v #19522 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:40 v #19523 > > //// test
00:18:40 v #19524 > >
00:18:40 v #19525 > > listm.init 5i32 ((*) 2)
00:18:40 v #19526 > > |> indexed
00:18:40 v #19527 > > |> _assert_eq [[ 0i32, 0; 1, 2; 2, 4; 3, 6; 4, 8 ]]
00:18:40 v #19528 > >
00:18:40 v #19529 > > ╭─[ 425.89ms - stdout ]────────────────────────────────────────────────────────╮
00:18:40 v #19530 > > │ __assert_eq / actual: UH0_1 (0, 0, UH0_1 (1, 2, UH0_1 (2, 4, UH0_1 (3, 6,    │
00:18:40 v #19531 > > │ UH0_1 (4, 8, UH0_0))))) / expected: UH0_1 (0, 0, UH0_1 (1, 2, UH0_1 (2, 4,   │
00:18:40 v #19532 > > │ UH0_1 (3, 6, UH0_1 (4, 8, UH0_0)))))                                         │
00:18:40 v #19533 > > │                                                                              │
00:18:40 v #19534 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:40 v #19535 > >
00:18:40 v #19536 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:40 v #19537 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:40 v #19538 > > │ ### group_by                                                                 │
00:18:40 v #19539 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:40 v #19540 > >
00:18:40 v #19541 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:40 v #19542 > > inl group_by fn list =
00:18:40 v #19543 > >     (list, [[]])
00:18:40 v #19544 > >     ||> listm.foldBack fun x acc =>
00:18:40 v #19545 > >         inl xk = fn x
00:18:40 v #19546 > >         inl found, new_acc =
00:18:40 v #19547 > >             ((false, [[]]), acc)
00:18:40 v #19548 > >             ||> listm.fold fun (found, acc') (k, xs) =>
00:18:40 v #19549 > >                 if k = xk
00:18:40 v #19550 > >                 then true, (k, x :: xs) :: acc'
00:18:40 v #19551 > >                 else found, (k, xs) :: acc'
00:18:40 v #19552 > >         if found
00:18:40 v #19553 > >         then new_acc
00:18:40 v #19554 > >         else (xk, [[ x ]]) :: new_acc
00:18:41 v #19555 > >
00:18:41 v #19556 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:41 v #19557 > > //// test
00:18:41 v #19558 > >
00:18:41 v #19559 > > listm.init 10i32 id
00:18:41 v #19560 > > |> group_by (fun x => x % 2 = 0)
00:18:41 v #19561 > > |> _assert_eq [[ true, [[ 0; 2; 4; 6; 8 ]]; false, [[ 1; 3; 5; 7; 9 ]] ]]
00:18:41 v #19562 > >
00:18:41 v #19563 > > ╭─[ 470.87ms - stdout ]────────────────────────────────────────────────────────╮
00:18:41 v #19564 > > │ __assert_eq / actual: UH1_1                                                  │
00:18:41 v #19565 > > │   (true, UH0_1 (0, UH0_1 (2, UH0_1 (4, UH0_1 (6, UH0_1 (8, UH0_0))))),       │
00:18:41 v #19566 > > │    UH1_1                                                                     │
00:18:41 v #19567 > > │      (false, UH0_1 (1, UH0_1 (3, UH0_1 (5, UH0_1 (7, UH0_1 (9, UH0_0))))),   │
00:18:41 v #19568 > > │ UH1_0)) / expected: UH1_1                                                    │
00:18:41 v #19569 > > │   (true, UH0_1 (0, UH0_1 (2, UH0_1 (4, UH0_1 (6, UH0_1 (8, UH0_0))))),       │
00:18:41 v #19570 > > │    UH1_1                                                                     │
00:18:41 v #19571 > > │      (false, UH0_1 (1, UH0_1 (3, UH0_1 (5, UH0_1 (7, UH0_1 (9, UH0_0))))),   │
00:18:41 v #19572 > > │ UH1_0))                                                                      │
00:18:41 v #19573 > > │                                                                              │
00:18:41 v #19574 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:41 v #19575 > >
00:18:41 v #19576 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:41 v #19577 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:41 v #19578 > > │ ### forall'                                                                  │
00:18:41 v #19579 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:41 v #19580 > >
00:18:41 v #19581 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:41 v #19582 > > inl forall' fn (head :: tail) =
00:18:41 v #19583 > >     (true, tail)
00:18:41 v #19584 > >     ||> listm.fold fun acc x =>
00:18:41 v #19585 > >         acc && x = head
00:18:42 v #19586 > >
00:18:42 v #19587 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:42 v #19588 > > //// test
00:18:42 v #19589 > >
00:18:42 v #19590 > > [[ 1i32; 1; 1; 1; 1 ]]
00:18:42 v #19591 > > |> forall' ((=) 1i32)
00:18:42 v #19592 > > |> _assert_eq true
00:18:42 v #19593 > >
00:18:42 v #19594 > > ╭─[ 433.10ms - stdout ]────────────────────────────────────────────────────────╮
00:18:42 v #19595 > > │ __assert_eq / actual: true / expected: true                                  │
00:18:42 v #19596 > > │                                                                              │
00:18:42 v #19597 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:42 v #19598 > >
00:18:42 v #19599 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:42 v #19600 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:42 v #19601 > > │ ### last                                                                     │
00:18:42 v #19602 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:42 v #19603 > >
00:18:42 v #19604 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:42 v #19605 > > inl last list =
00:18:42 v #19606 > >     list
00:18:42 v #19607 > >     |> listm.rev
00:18:42 v #19608 > >     |> item 0i32
00:18:43 v #19609 > >
00:18:43 v #19610 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:43 v #19611 > > //// test
00:18:43 v #19612 > >
00:18:43 v #19613 > > listm.init 10i32 id
00:18:43 v #19614 > > |> last
00:18:43 v #19615 > > |> _assert_eq 9
00:18:43 v #19616 > >
00:18:43 v #19617 > > ╭─[ 414.92ms - stdout ]────────────────────────────────────────────────────────╮
00:18:43 v #19618 > > │ __assert_eq / actual: 9 / expected: 9                                        │
00:18:43 v #19619 > > │                                                                              │
00:18:43 v #19620 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:43 v #19621 > >
00:18:43 v #19622 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:43 v #19623 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:43 v #19624 > > │ ### try_pick                                                                 │
00:18:43 v #19625 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:43 v #19626 > >
00:18:43 v #19627 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:43 v #19628 > > inl try_pick fn list =
00:18:43 v #19629 > >     inl rec body fn = function
00:18:43 v #19630 > >         | [[]] => None
00:18:43 v #19631 > >         | x :: xs =>
00:18:43 v #19632 > >             match fn x with
00:18:43 v #19633 > >             | Some y => Some y
00:18:43 v #19634 > >             | None => loop xs
00:18:43 v #19635 > >     and inl loop list =
00:18:43 v #19636 > >         if var_is list |> not
00:18:43 v #19637 > >         then body fn list
00:18:43 v #19638 > >         else
00:18:43 v #19639 > >             inl fn = join fn
00:18:43 v #19640 > >             inl list = dyn list
00:18:43 v #19641 > >             join body fn list
00:18:43 v #19642 > >     loop list
00:18:43 v #19643 > >
00:18:43 v #19644 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:43 v #19645 > > //// test
00:18:43 v #19646 > >
00:18:43 v #19647 > > listm.init 10i32 id
00:18:43 v #19648 > > |> try_pick (fun x => if x = 5i32 then Some x else None)
00:18:43 v #19649 > > |> _assert_eq (Some 5i32)
00:18:44 v #19650 > >
00:18:44 v #19651 > > ╭─[ 428.71ms - stdout ]────────────────────────────────────────────────────────╮
00:18:44 v #19652 > > │ __assert_eq / actual: US0_0 5 / expected: US0_0 5                            │
00:18:44 v #19653 > > │                                                                              │
00:18:44 v #19654 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:44 v #19655 > >
00:18:44 v #19656 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:44 v #19657 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:44 v #19658 > > │ ### exists'                                                                  │
00:18:44 v #19659 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:44 v #19660 > >
00:18:44 v #19661 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:44 v #19662 > > inl exists' f x =
00:18:44 v #19663 > >     inl length_x : i64 = x |> listm.length
00:18:44 v #19664 > >     let rec loop i =
00:18:44 v #19665 > >         if i >= length_x
00:18:44 v #19666 > >         then false
00:18:44 v #19667 > >         elif x |> item i |> f
00:18:44 v #19668 > >         then true
00:18:44 v #19669 > >         else loop (i + 1)
00:18:44 v #19670 > >     loop 0
00:18:44 v #19671 > >
00:18:44 v #19672 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:44 v #19673 > > //// test
00:18:44 v #19674 > >
00:18:44 v #19675 > > [[ 'a'; 'b'; 'c' ]]
00:18:44 v #19676 > > |> exists' fun x => x = 'b'
00:18:44 v #19677 > > |> _assert_eq true
00:18:44 v #19678 > >
00:18:44 v #19679 > > [[ 'a'; 'b' ]]
00:18:44 v #19680 > > |> exists' fun x => x = 'c'
00:18:44 v #19681 > > |> _assert_eq false
00:18:44 v #19682 > >
00:18:44 v #19683 > > [[]]
00:18:44 v #19684 > > |> exists' fun x => x = 'a'
00:18:44 v #19685 > > |> _assert_eq false
00:18:45 v #19686 > >
00:18:45 v #19687 > > ╭─[ 545.47ms - stdout ]────────────────────────────────────────────────────────╮
00:18:45 v #19688 > > │ __assert_eq / actual: true / expected: true                                  │
00:18:45 v #19689 > > │ __assert_eq / actual: false / expected: false                                │
00:18:45 v #19690 > > │ __assert_eq / actual: false / expected: false                                │
00:18:45 v #19691 > > │                                                                              │
00:18:45 v #19692 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:45 v #19693 > >
00:18:45 v #19694 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:45 v #19695 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:45 v #19696 > > │ ## fsharp                                                                    │
00:18:45 v #19697 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:45 v #19698 > >
00:18:45 v #19699 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:45 v #19700 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:45 v #19701 > > │ ### list'                                                                    │
00:18:45 v #19702 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:45 v #19703 > >
00:18:45 v #19704 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:45 v #19705 > > nominal list' t = $"backend_switch `({ Fsharp : $'`t list'; Python : $'list' })"
00:18:45 v #19706 > >
00:18:45 v #19707 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:45 v #19708 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:45 v #19709 > > │ ### empty'                                                                   │
00:18:45 v #19710 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:45 v #19711 > >
00:18:45 v #19712 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:45 v #19713 > > inl empty' forall t. () : list' t =
00:18:45 v #19714 > >     $'[[]]'
00:18:46 v #19715 > >
00:18:46 v #19716 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:46 v #19717 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:46 v #19718 > > │ ### cons'                                                                    │
00:18:46 v #19719 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:46 v #19720 > >
00:18:46 v #19721 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:46 v #19722 > > inl cons' forall t. (head : t) (tail : list' t) : list' t =
00:18:46 v #19723 > >     backend_switch {
00:18:46 v #19724 > >         Fsharp = fun () => $'!head :: !tail ' : list' t
00:18:46 v #19725 > >         Python = fun () =>
00:18:46 v #19726 > >             $'!tail.insert(0, !head)'
00:18:46 v #19727 > >             $'!tail ' : list' t
00:18:46 v #19728 > >     }
00:18:46 v #19729 > >
00:18:46 v #19730 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:46 v #19731 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:46 v #19732 > > │ ### rev'                                                                     │
00:18:46 v #19733 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:46 v #19734 > >
00:18:46 v #19735 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:46 v #19736 > > inl rev' forall t. (items : list' t) : list' t =
00:18:46 v #19737 > >     backend_switch {
00:18:46 v #19738 > >         Fsharp = fun () => items |> $'List.rev' : list' t
00:18:46 v #19739 > >         Python = fun () => $'list(reversed(!items))' : list' t
00:18:46 v #19740 > >     }
00:18:46 v #19741 > >
00:18:46 v #19742 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:46 v #19743 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:46 v #19744 > > │ ### box                                                                      │
00:18:46 v #19745 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:46 v #19746 > >
00:18:46 v #19747 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:46 v #19748 > > inl box forall t. (list : list t) : list' t =
00:18:46 v #19749 > >     (list, empty' ())
00:18:46 v #19750 > >     ||> listm.foldBack fun x acc =>
00:18:46 v #19751 > >         acc |> cons' x
00:18:47 v #19752 > >
00:18:47 v #19753 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:47 v #19754 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:47 v #19755 > > │ ### fold'                                                                    │
00:18:47 v #19756 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:47 v #19757 > >
00:18:47 v #19758 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:47 v #19759 > > inl fold' forall t u. (fn : t -> u) (init : list u) (list : list' t) : list u =
00:18:47 v #19760 > >     backend_switch {
00:18:47 v #19761 > >         Fsharp = fun () =>
00:18:47 v #19762 > >             (init, list)
00:18:47 v #19763 > >             ||> $'List.fold' join fun acc x => Cons (fn x, acc)
00:18:47 v #19764 > >             : list u
00:18:47 v #19765 > >         Python = fun () =>
00:18:47 v #19766 > >             inl init = init |> box
00:18:47 v #19767 > >             $'r = !init '
00:18:47 v #19768 > >             inl list = list |> rev'
00:18:47 v #19769 > >             $'for x in !list: r = [[!fn(x)]] + r'
00:18:47 v #19770 > >             inl init : list u = Nil
00:18:47 v #19771 > >             inl cons (a : u) b = Cons (a, b)
00:18:47 v #19772 > >             $'r_ = !init '
00:18:47 v #19773 > >             $'for x in r: r_ = !cons (x)(r_)'
00:18:47 v #19774 > >             $'r_' : list u
00:18:47 v #19775 > >     }
00:18:47 v #19776 > >
00:18:47 v #19777 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:47 v #19778 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:47 v #19779 > > │ ### fold_back'                                                               │
00:18:47 v #19780 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:47 v #19781 > >
00:18:47 v #19782 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:47 v #19783 > > inl fold_back' forall t u. (fn : t -> u) (list : list' t) (init : list u) : list
00:18:47 v #19784 > > u =
00:18:47 v #19785 > >     backend_switch {
00:18:47 v #19786 > >         Fsharp = fun () =>
00:18:47 v #19787 > >             (list, init)
00:18:47 v #19788 > >             ||> $'List.foldBack' join fun x acc => Cons (fn x, acc)
00:18:47 v #19789 > >             : list u
00:18:47 v #19790 > >         Python = fun () =>
00:18:47 v #19791 > >             list
00:18:47 v #19792 > >             |> rev'
00:18:47 v #19793 > >             |> fold' fn init
00:18:47 v #19794 > >     }
00:18:48 v #19795 > >
00:18:48 v #19796 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:48 v #19797 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:48 v #19798 > > │ ### filter'                                                                  │
00:18:48 v #19799 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:48 v #19800 > >
00:18:48 v #19801 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:48 v #19802 > > inl filter' forall t. (fn : t -> bool) (list : list' t) : list' t =
00:18:48 v #19803 > >     backend_switch {
00:18:48 v #19804 > >         Fsharp = fun () => list |> $'"List.filter !fn"' : list' t
00:18:48 v #19805 > >         Python = fun () => $'list(filter(!fn, !list))' : list' t
00:18:48 v #19806 > >     }
00:18:48 v #19807 > >
00:18:48 v #19808 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:48 v #19809 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:48 v #19810 > > │ ### map                                                                      │
00:18:48 v #19811 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:48 v #19812 > >
00:18:48 v #19813 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:48 v #19814 > > inl map forall t u. (fn : t -> u) (list : list' t) : list' u =
00:18:48 v #19815 > >     backend_switch {
00:18:48 v #19816 > >         Fsharp = fun () => list |> $'List.map' fn : list' u
00:18:48 v #19817 > >         Python = fun () => $'list(map(!fn, !list))' : list' u
00:18:48 v #19818 > >     }
00:18:48 v #19819 > >
00:18:48 v #19820 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:48 v #19821 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:48 v #19822 > > │ ### unbox                                                                    │
00:18:48 v #19823 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:48 v #19824 > >
00:18:48 v #19825 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:48 v #19826 > > inl unbox forall t. (list : list' t) : list t =
00:18:48 v #19827 > >     (list, Nil)
00:18:48 v #19828 > >     ||> fold_back' id
00:18:49 v #19829 > >
00:18:49 v #19830 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:49 v #19831 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:49 v #19832 > > │ ### distinct'                                                                │
00:18:49 v #19833 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:49 v #19834 > >
00:18:49 v #19835 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:49 v #19836 > > // preserve order
00:18:49 v #19837 > > inl distinct' forall t. (list : list' t) : list' t =
00:18:49 v #19838 > >     backend_switch {
00:18:49 v #19839 > >         Fsharp = fun () => list |> $'List.distinct' : list' t
00:18:49 v #19840 > >         Python = fun () =>
00:18:49 v #19841 > >             $'x = list(set(!list))'
00:18:49 v #19842 > >             $'x.sort(key=!list.index)'
00:18:49 v #19843 > >             $'x' : list' t
00:18:49 v #19844 > >     }
00:18:49 v #19845 > >
00:18:49 v #19846 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:49 v #19847 > > //// test
00:18:49 v #19848 > > ///! fsharp
00:18:49 v #19849 > > ///! cuda
00:18:49 v #19850 > >
00:18:49 v #19851 > > [[ "1"; "2"; "2"; "3" ]]
00:18:49 v #19852 > > |> box
00:18:49 v #19853 > > |> distinct'
00:18:49 v #19854 > > |> unbox
00:18:49 v #19855 > > |> _assert_eq [[ "1"; "2"; "3" ]]
00:18:51 v #19856 > >
00:18:51 v #19857 > > ╭─[ 1.27s - return value ]─────────────────────────────────────────────────────╮
00:18:51 v #19858 > > │ .py output (Cuda):                                                           │
00:18:51 v #19859 > > │ __assert_eq / actual: UH0_1(v0='1', v1=UH0_1(v0='2', v1=UH0_1(v0='3',        │
00:18:51 v #19860 > > │ v1=UH0_0()))) / expected: UH0_1(v0='1', v1=UH0_1(v0='2', v1=UH0_1(v0='3',    │
00:18:51 v #19861 > > │ v1=UH0_0())))                                                                │
00:18:51 v #19862 > > │                                                                              │
00:18:51 v #19863 > > │                                                                              │
00:18:51 v #19864 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:51 v #19865 > >
00:18:51 v #19866 > > ╭─[ 1.27s - stdout ]───────────────────────────────────────────────────────────╮
00:18:51 v #19867 > > │ .fsx output:                                                                 │
00:18:51 v #19868 > > │ __assert_eq / actual: UH0_1 ("1", UH0_1 ("2", UH0_1 ("3", UH0_0))) /         │
00:18:51 v #19869 > > │ expected: UH0_1 ("1", UH0_1 ("2", UH0_1 ("3", UH0_0)))                       │
00:18:51 v #19870 > > │                                                                              │
00:18:51 v #19871 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:51 v #19872 > >
00:18:51 v #19873 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:51 v #19874 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:51 v #19875 > > │ ### to_array'                                                                │
00:18:51 v #19876 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:51 v #19877 > >
00:18:51 v #19878 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:51 v #19879 > > inl to_array' forall t. (items : list' t) : array_base t =
00:18:51 v #19880 > >     backend_switch {
00:18:51 v #19881 > >         Fsharp = fun () => items |> $'List.toArray' : array_base t
00:18:51 v #19882 > >         Python = fun () => $'(cp if cuda else np).array(!items)' : array_base t
00:18:51 v #19883 > >     }
00:18:51 v #19884 > 00:00:31 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 35299 }
00:18:51 v #19885 > 00:00:31 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/polyglot/lib/spiral/listm'.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/polyglot/lib/spiral/listm'.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:18:52 v #19886 > 00:00:32 v #5 ! [NbConvertApp] Converting notebook c:/home/git/polyglot/lib/spiral/listm'.dib.ipynb to html
00:18:52 v #19887 > 00:00:32 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:18:52 v #19888 > 00:00:32 v #7 !   validate(nb)
00:18:53 v #19889 > 00:00:33 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:18:53 v #19890 > 00:00:33 v #9 !   return _pygments_highlight(
00:18:54 v #19891 > 00:00:34 v #10 ! [NbConvertApp] Writing 385194 bytes to c:\home\git\polyglot\lib\spiral\listm'.dib.html
00:18:54 v #19892 > 00:00:34 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 854 }
00:18:54 v #19893 > 00:00:34 d #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 854 }
00:18:54 v #19894 > 00:00:34 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/listm''.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/listm''.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:18:54 v #19895 > 00:00:34 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:18:54 v #19896 > 00:00:34 d #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:18:54 v #19897 > 00:00:34 d #16 spiral_builder.run / dib / { exit_code = 0; result_length = 36212 }
00:18:54 d #19898 runtime.execute_with_options_async / { exit_code = 0; output_length = 40419 }
00:18:54 d #24 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder.exe dib --path listm'.dib --retries 3
00:18:54 d #19899 runtime.execute_with_options_async / { file_name = ../../workspace/target/release/spiral_builder.exe; arguments = US5_0 "dib --path reflection.dib --retries 3"; options = { command = ../../workspace/target/release/spiral_builder.exe dib --path reflection.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:18:54 v #19900 > 00:00:00 d #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "reflection.dib", "--retries", "3"])) }
00:18:54 v #19901 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/polyglot/lib/spiral/reflection.dib", "--output-path", "c:/home/git/polyglot/lib/spiral/reflection.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/polyglot/lib/spiral/reflection.dib" --output-path "c:/home/git/polyglot/lib/spiral/reflection.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:18:56 v #19902 > >
00:18:56 v #19903 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:56 v #19904 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:56 v #19905 > > │ # reflection                                                                 │
00:18:56 v #19906 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:59 v #19907 > >
00:18:59 v #19908 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:59 v #19909 > > //// test
00:18:59 v #19910 > >
00:18:59 v #19911 > > open testing
00:19:00 v #19912 > >
00:19:00 v #19913 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:00 v #19914 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:00 v #19915 > > │ ## reflection                                                                │
00:19:00 v #19916 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:00 v #19917 > >
00:19:00 v #19918 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:00 v #19919 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:00 v #19920 > > │ ### get_union_fields                                                         │
00:19:00 v #19921 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:00 v #19922 > >
00:19:00 v #19923 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:00 v #19924 > > inl get_union_fields forall union_type. () : list (string * union_type) =
00:19:00 v #19925 > >     real
00:19:00 v #19926 > >         real_core.union_to_record
00:19:00 v #19927 > >             `union_type
00:19:00 v #19928 > >             forall union_record_type. =>
00:19:00 v #19929 > >                 real_core.record_type_fold
00:19:00 v #19930 > >                     fun acc key =>
00:19:00 v #19931 > >                         forall value. =>
00:19:00 v #19932 > >                             inl value =
00:19:00 v #19933 > >                                 typecase value with
00:19:00 v #19934 > >                                 | () => $'' : value
00:19:00 v #19935 > >                                 | _ =>
00:19:00 v #19936 > >                                     backend_switch `value `({}) {
00:19:00 v #19937 > >                                         Fsharp =
00:19:00 v #19938 > >                                             (fun () =>
00:19:00 v #19939 > >                                                 $'Unchecked.defaultof<_>' :
00:19:00 v #19940 > > value
00:19:00 v #19941 > >                                             ) : () -> value
00:19:00 v #19942 > >                                         Python =
00:19:00 v #19943 > >                                             (fun () =>
00:19:00 v #19944 > >                                                 $'None' : value
00:19:00 v #19945 > >                                             ) : () -> value
00:19:00 v #19946 > >                                     }
00:19:00 v #19947 > >                             inl item = real_core.nominal_create `union_type
00:19:00 v #19948 > > (key, value)
00:19:00 v #19949 > >                             inl key' = sm'_real.symbol_to_string `(`key)
00:19:00 v #19950 > >                             (::) `(string * union_type) (key', item) acc
00:19:00 v #19951 > >                     (Nil `(string * union_type))
00:19:00 v #19952 > >                     `union_record_type
00:19:01 v #19953 > >
00:19:01 v #19954 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:01 v #19955 > > //// test
00:19:01 v #19956 > > ///! fsharp
00:19:01 v #19957 > > ///! rust
00:19:01 v #19958 > > ///! typescript
00:19:01 v #19959 > > ///! python
00:19:01 v #19960 > >
00:19:01 v #19961 > > get_union_fields ()
00:19:01 v #19962 > > |> listm'.box
00:19:01 v #19963 > > |> listm'.to_array'
00:19:01 v #19964 > > |> a
00:19:01 v #19965 > > |> am'.sort_by snd
00:19:01 v #19966 > > |> fun (a x : _ int _) => x
00:19:01 v #19967 > > |> _assert_eq' ;[[ "Native", Native; "Wasm", Wasm; "Contract", Contract ]]
00:19:06 v #19968 > >
00:19:06 v #19969 > > ╭─[ 4.78s - return value ]─────────────────────────────────────────────────────╮
00:19:06 v #19970 > > │ .rs output:                                                                  │
00:19:06 v #19971 > > │ __assert_eq' / actual: Array(MutCell([("Native", US0_0), ("Wasm", US0_1),    │
00:19:06 v #19972 > > │ ("Contract", US0_2)])) / expected: Array(MutCell([("Native", US0_0),         │
00:19:06 v #19973 > > │ ("Wasm", US0_1), ("Contract", US0_2)]))                                      │
00:19:06 v #19974 > > │                                                                              │
00:19:06 v #19975 > > │ .ts output:                                                                  │
00:19:06 v #19976 > > │ __assert_eq' / actual: Native,US0_0,Wasm,US0_1,Contract,US0_2 / expected:    │
00:19:06 v #19977 > > │ Native,US0_0,Wasm,US0_1,Contract,US0_2                                       │
00:19:06 v #19978 > > │                                                                              │
00:19:06 v #19979 > > │ .py output:                                                                  │
00:19:06 v #19980 > > │ __assert_eq' / actual: [('Native', US0_0), ('Wasm', US0_1), ('Contract',     │
00:19:06 v #19981 > > │ US0_2)] / expected: [('Native', US0_0), ('Wasm', US0_1), ('Contract',        │
00:19:06 v #19982 > > │ US0_2)]                                                                      │
00:19:06 v #19983 > > │                                                                              │
00:19:06 v #19984 > > │                                                                              │
00:19:06 v #19985 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:06 v #19986 > >
00:19:06 v #19987 > > ╭─[ 4.79s - stdout ]───────────────────────────────────────────────────────────╮
00:19:06 v #19988 > > │ .fsx output:                                                                 │
00:19:06 v #19989 > > │ __assert_eq' / actual: [|struct ("Native", US0_0); struct ("Wasm", US0_1);   │
00:19:06 v #19990 > > │ struct ("Contract", US0_2)|] / expected: [|struct ("Native", US0_0); struct  │
00:19:06 v #19991 > > │ ("Wasm", US0_1); struct ("Contract", US0_2)|]                                │
00:19:06 v #19992 > > │                                                                              │
00:19:06 v #19993 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:06 v #19994 > >
00:19:06 v #19995 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:06 v #19996 > > //// test
00:19:06 v #19997 > > ///! fsharp
00:19:06 v #19998 > > ///! rust
00:19:06 v #19999 > > ///! typescript
00:19:06 v #20000 > > ///! python
00:19:06 v #20001 > >
00:19:06 v #20002 > > get_union_fields ()
00:19:06 v #20003 > > |> listm'.box
00:19:06 v #20004 > > |> listm'.to_array'
00:19:06 v #20005 > > |> a
00:19:06 v #20006 > > |> am'.sort_by snd
00:19:06 v #20007 > > |> fun (a x : _ int _) => x
00:19:06 v #20008 > > |> _assert_eq' ;[[ "Some", Some 0i32; "None", None ]]
00:19:09 v #20009 > >
00:19:09 v #20010 > > ╭─[ 3.17s - return value ]─────────────────────────────────────────────────────╮
00:19:09 v #20011 > > │ .rs output:                                                                  │
00:19:09 v #20012 > > │ __assert_eq' / actual: Array(MutCell([("Some", US0_0(0)), ("None", US0_1)])) │
00:19:09 v #20013 > > │ / expected: Array(MutCell([("Some", US0_0(0)), ("None", US0_1)]))            │
00:19:09 v #20014 > > │                                                                              │
00:19:09 v #20015 > > │ .ts output:                                                                  │
00:19:09 v #20016 > > │ __assert_eq' / actual: Some,US0_0 0,None,US0_1 / expected: Some,US0_0        │
00:19:09 v #20017 > > │ 0,None,US0_1                                                                 │
00:19:09 v #20018 > > │                                                                              │
00:19:09 v #20019 > > │ .py output:                                                                  │
00:19:09 v #20020 > > │ __assert_eq' / actual: [('Some', US0_0 0), ('None', US0_1)] / expected: [    │
00:19:09 v #20021 > > │ ('Some', US0_0 0), ('None', US0_1)]                                          │
00:19:09 v #20022 > > │                                                                              │
00:19:09 v #20023 > > │                                                                              │
00:19:09 v #20024 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:09 v #20025 > >
00:19:09 v #20026 > > ╭─[ 3.17s - stdout ]───────────────────────────────────────────────────────────╮
00:19:09 v #20027 > > │ .fsx output:                                                                 │
00:19:09 v #20028 > > │ __assert_eq' / actual: [|struct ("Some", US0_0 0); struct ("None", US0_1)|]  │
00:19:09 v #20029 > > │ / expected: [|struct ("Some", US0_0 0); struct ("None", US0_1)|]             │
00:19:09 v #20030 > > │                                                                              │
00:19:09 v #20031 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:09 v #20032 > >
00:19:09 v #20033 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:09 v #20034 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:09 v #20035 > > │ ### get_union_fields_untag                                                   │
00:19:09 v #20036 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:09 v #20037 > >
00:19:09 v #20038 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:09 v #20039 > > inl get_union_fields_untag forall union_type. () : list (string * union_type) =
00:19:09 v #20040 > >     real
00:19:09 v #20041 > >         real_core.union_to_record
00:19:09 v #20042 > >             `union_type
00:19:09 v #20043 > >             forall union_record_type. =>
00:19:09 v #20044 > >                 inl result =
00:19:09 v #20045 > >                     real_core.record_type_fold_back
00:19:09 v #20046 > >                         fun _key =>
00:19:09 v #20047 > >                             forall value. (acc, (i : i32)) =>
00:19:09 v #20048 > >                                 inl key, item : (string * union_type) =
00:19:09 v #20049 > >                                     real_core.union_untag `union_type i
00:19:09 v #20050 > >                                         (fun key => forall value. =>
00:19:09 v #20051 > >                                             inl key' = sm'_real.symbol_to_string
00:19:09 v #20052 > > `(`key)
00:19:09 v #20053 > >                                             inl value =
00:19:09 v #20054 > >                                                 typecase value with
00:19:09 v #20055 > >                                                 | () => $'' : value
00:19:09 v #20056 > >                                                 | _ =>
00:19:09 v #20057 > >                                                     backend_switch `value `({})
00:19:09 v #20058 > > {
00:19:09 v #20059 > >                                                         Fsharp =
00:19:09 v #20060 > >                                                             (fun () =>
00:19:09 v #20061 > >
00:19:09 v #20062 > > $'Unchecked.defaultof<_>' : value
00:19:09 v #20063 > >                                                             ) : () -> value
00:19:09 v #20064 > >                                                         Python =
00:19:09 v #20065 > >                                                             (fun () =>
00:19:09 v #20066 > >                                                                 $'None' : value
00:19:09 v #20067 > >                                                             ) : () -> value
00:19:09 v #20068 > >                                                     }
00:19:09 v #20069 > >                                             inl item = real_core.nominal_create
00:19:09 v #20070 > > `union_type (key, value)
00:19:09 v #20071 > >                                             key', item
00:19:09 v #20072 > >                                         )
00:19:09 v #20073 > >                                         (fun _ =>
00:19:09 v #20074 > >                                             failwith
00:19:09 v #20075 > >                                                 `(string * union_type)
00:19:09 v #20076 > >
00:19:09 v #20077 > > "reflection.get_union_fields_untag / invalid tag"
00:19:09 v #20078 > >                                         )
00:19:09 v #20079 > >                                 (::) `(string * union_type) (key, item) acc, (+)
00:19:09 v #20080 > > `i32 i 1
00:19:09 v #20081 > >                         `union_record_type
00:19:09 v #20082 > >                         (Nil `(string * union_type), 0i32)
00:19:09 v #20083 > >                 inl result = fst `(list (string * union_type)) `i32 result
00:19:09 v #20084 > >                 listm.rev `(string * union_type) result
00:19:09 v #20085 > >
00:19:09 v #20086 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:09 v #20087 > > //// test
00:19:09 v #20088 > > ///! fsharp
00:19:09 v #20089 > > ///! cuda
00:19:09 v #20090 > > ///! rust
00:19:09 v #20091 > > ///! typescript
00:19:09 v #20092 > > ///! python
00:19:09 v #20093 > >
00:19:09 v #20094 > > get_union_fields_untag ()
00:19:09 v #20095 > > |> _assert_eq' [[ "Native", Native; "Wasm", Wasm; "Contract", Contract ]]
00:19:13 v #20096 > >
00:19:13 v #20097 > > ╭─[ 3.62s - return value ]─────────────────────────────────────────────────────╮
00:19:13 v #20098 > > │ .py output (Cuda):                                                           │
00:19:13 v #20099 > > │ __assert_eq' / actual: UH0_1(v0='Native', v1=US0_0(), v2=UH0_1(v0='Wasm',    │
00:19:13 v #20100 > > │ v1=US0_1(), v2=UH0_1(v0='Contract', v1=US0_2(), v2=UH0_0()))) / expected:    │
00:19:13 v #20101 > > │ UH0_1(v0='Native', v1=US0_0(), v2=UH0_1(v0='Wasm', v1=US0_1(),               │
00:19:13 v #20102 > > │ v2=UH0_1(v0='Contract', v1=US0_2(), v2=UH0_0())))                            │
00:19:13 v #20103 > > │                                                                              │
00:19:13 v #20104 > > │ .rs output:                                                                  │
00:19:13 v #20105 > > │ __assert_eq' / actual: UH0_1("Native", US0_0, UH0_1("Wasm", US0_1,           │
00:19:13 v #20106 > > │ UH0_1("Contract", US0_2, UH0_0))) / expected: UH0_1("Native", US0_0,         │
00:19:13 v #20107 > > │ UH0_1("Wasm", US0_1, UH0_1("Contract", US0_2, UH0_0)))                       │
00:19:13 v #20108 > > │                                                                              │
00:19:13 v #20109 > > │ .ts output:                                                                  │
00:19:13 v #20110 > > │ __assert_eq' / actual: UH0_1 (Native, US0_0, UH0_1 (Wasm, US0_1, UH0_1       │
00:19:13 v #20111 > > │ (Contract, US0_2, UH0_0))) / expected: UH0_1 (Native, US0_0, UH0_1 (Wasm,    │
00:19:13 v #20112 > > │ US0_1, UH0_1 (Contract, US0_2, UH0_0)))                                      │
00:19:13 v #20113 > > │                                                                              │
00:19:13 v #20114 > > │ .py output:                                                                  │
00:19:13 v #20115 > > │ __assert_eq' / actual: UH0_1 ("Native", US0_0, UH0_1 ("Wasm", US0_1, UH0_1   │
00:19:13 v #20116 > > │ ("Contract", US0_2, UH0_0))) / expected: UH0_1 ("Native", US0_0, UH0_1       │
00:19:13 v #20117 > > │ ("Wasm", US0_1, UH0_1 ("Contract", US0_2, UH0_0)))                           │
00:19:13 v #20118 > > │                                                                              │
00:19:13 v #20119 > > │                                                                              │
00:19:13 v #20120 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:13 v #20121 > >
00:19:13 v #20122 > > ╭─[ 3.62s - stdout ]───────────────────────────────────────────────────────────╮
00:19:13 v #20123 > > │ .fsx output:                                                                 │
00:19:13 v #20124 > > │ __assert_eq' / actual: UH0_1 ("Native", US0_0, UH0_1 ("Wasm", US0_1, UH0_1   │
00:19:13 v #20125 > > │ ("Contract", US0_2, UH0_0))) / expected: UH0_1 ("Native", US0_0, UH0_1       │
00:19:13 v #20126 > > │ ("Wasm", US0_1, UH0_1 ("Contract", US0_2, UH0_0)))                           │
00:19:13 v #20127 > > │                                                                              │
00:19:13 v #20128 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:13 v #20129 > >
00:19:13 v #20130 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:13 v #20131 > > //// test
00:19:13 v #20132 > > ///! fsharp
00:19:13 v #20133 > > ///! cuda
00:19:13 v #20134 > > ///! rust
00:19:13 v #20135 > > ///! typescript
00:19:13 v #20136 > > ///! python
00:19:13 v #20137 > >
00:19:13 v #20138 > > get_union_fields_untag ()
00:19:13 v #20139 > > |> _assert_eq' [[ "Some", Some (); "None", None ]]
00:19:16 v #20140 > >
00:19:16 v #20141 > > ╭─[ 3.60s - return value ]─────────────────────────────────────────────────────╮
00:19:16 v #20142 > > │ .py output (Cuda):                                                           │
00:19:16 v #20143 > > │ __assert_eq' / actual: UH0_1(v0='Some', v1=US0_0(), v2=UH0_1(v0='None',      │
00:19:16 v #20144 > > │ v1=US0_1(), v2=UH0_0())) / expected: UH0_1(v0='Some', v1=US0_0(),            │
00:19:16 v #20145 > > │ v2=UH0_1(v0='None', v1=US0_1(), v2=UH0_0()))                                 │
00:19:16 v #20146 > > │                                                                              │
00:19:16 v #20147 > > │ .rs output:                                                                  │
00:19:16 v #20148 > > │ __assert_eq' / actual: UH0_1("Some", US0_0, UH0_1("None", US0_1, UH0_0)) /   │
00:19:16 v #20149 > > │ expected: UH0_1("Some", US0_0, UH0_1("None", US0_1, UH0_0))                  │
00:19:16 v #20150 > > │                                                                              │
00:19:16 v #20151 > > │ .ts output:                                                                  │
00:19:16 v #20152 > > │ __assert_eq' / actual: UH0_1 (Some, US0_0, UH0_1 (None, US0_1, UH0_0)) /     │
00:19:16 v #20153 > > │ expected: UH0_1 (Some, US0_0, UH0_1 (None, US0_1, UH0_0))                    │
00:19:16 v #20154 > > │                                                                              │
00:19:16 v #20155 > > │ .py output:                                                                  │
00:19:16 v #20156 > > │ __assert_eq' / actual: UH0_1 ("Some", US0_0, UH0_1 ("None", US0_1, UH0_0)) / │
00:19:16 v #20157 > > │ expected: UH0_1 ("Some", US0_0, UH0_1 ("None", US0_1, UH0_0))                │
00:19:16 v #20158 > > │                                                                              │
00:19:16 v #20159 > > │                                                                              │
00:19:16 v #20160 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:16 v #20161 > >
00:19:16 v #20162 > > ╭─[ 3.60s - stdout ]───────────────────────────────────────────────────────────╮
00:19:16 v #20163 > > │ .fsx output:                                                                 │
00:19:16 v #20164 > > │ __assert_eq' / actual: UH0_1 ("Some", US0_0, UH0_1 ("None", US0_1, UH0_0)) / │
00:19:16 v #20165 > > │ expected: UH0_1 ("Some", US0_0, UH0_1 ("None", US0_1, UH0_0))                │
00:19:16 v #20166 > > │                                                                              │
00:19:16 v #20167 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:16 v #20168 > >
00:19:16 v #20169 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:16 v #20170 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:16 v #20171 > > │ ### union_try_pick                                                           │
00:19:16 v #20172 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:16 v #20173 > >
00:19:16 v #20174 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:16 v #20175 > > inl union_try_pick forall t. (key : string) : option t =
00:19:16 v #20176 > >     real get_union_fields_untag `t ()
00:19:16 v #20177 > >     |> listm'.try_pick fun key', x =>
00:19:16 v #20178 > >         if key' = key
00:19:16 v #20179 > >         then Some x
00:19:16 v #20180 > >         else None
00:19:17 v #20181 > >
00:19:17 v #20182 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:17 v #20183 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:17 v #20184 > > │ ### union_to_string                                                          │
00:19:17 v #20185 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:17 v #20186 > >
00:19:17 v #20187 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:17 v #20188 > > inl union_to_string forall t. (x : t) : string =
00:19:17 v #20189 > >     real get_union_fields_untag `t ()
00:19:17 v #20190 > >     |> listm'.try_pick fun key, x' =>
00:19:17 v #20191 > >         if x' = x
00:19:17 v #20192 > >         then Some key
00:19:17 v #20193 > >         else
00:19:17 v #20194 > >             inl has_case =
00:19:17 v #20195 > >                 real
00:19:17 v #20196 > >                     real_core.union_to_record
00:19:17 v #20197 > >                         `t
00:19:17 v #20198 > >                         forall union_record_type. =>
00:19:17 v #20199 > >                             real_core.record_type_fold_back
00:19:17 v #20200 > >                                 fun _key =>
00:19:17 v #20201 > >                                     forall value. acc =>
00:19:17 v #20202 > >                                         if acc
00:19:17 v #20203 > >                                         then acc
00:19:17 v #20204 > >                                         else
00:19:17 v #20205 > >                                             typecase value with
00:19:17 v #20206 > >                                             | () => false
00:19:17 v #20207 > >                                             | _ => true
00:19:17 v #20208 > >                                 `union_record_type
00:19:17 v #20209 > >                                 false
00:19:17 v #20210 > >             if has_case |> not
00:19:17 v #20211 > >             then None
00:19:17 v #20212 > >             else
00:19:17 v #20213 > >                 inl separator =
00:19:17 v #20214 > >                     backend_switch {
00:19:17 v #20215 > >                         Fsharp = fun () =>
00:19:17 v #20216 > >                             run_target function
00:19:17 v #20217 > >                                 | Rust _ => fun () => join "("
00:19:17 v #20218 > >                                 | _ => fun () => join " "
00:19:17 v #20219 > >                         Python = fun () => "("
00:19:17 v #20220 > >                     }
00:19:17 v #20221 > >                 inl x' = x' |> sm'.format |> sm'.split separator |>
00:19:17 v #20222 > > am'.index_base 0
00:19:17 v #20223 > >                 if x |> sm'.format |> sm'.starts_with x'
00:19:17 v #20224 > >                 then Some key
00:19:17 v #20225 > >                 else None
00:19:17 v #20226 > >     |> optionm.value
00:19:17 v #20227 > >
00:19:17 v #20228 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:17 v #20229 > > //// test
00:19:17 v #20230 > > ///! fsharp
00:19:17 v #20231 > > ///! cuda
00:19:17 v #20232 > > ///! rust
00:19:17 v #20233 > > ///! typescript
00:19:17 v #20234 > > ///! python
00:19:17 v #20235 > >
00:19:17 v #20236 > > Some true
00:19:17 v #20237 > > |> union_to_string
00:19:17 v #20238 > > |> _assert_eq' "Some"
00:19:21 v #20239 > >
00:19:21 v #20240 > > ╭─[ 4.04s - return value ]─────────────────────────────────────────────────────╮
00:19:21 v #20241 > > │ .py output (Cuda):                                                           │
00:19:21 v #20242 > > │ __assert_eq' / actual: Some / expected: Some                                 │
00:19:21 v #20243 > > │                                                                              │
00:19:21 v #20244 > > │ .rs output:                                                                  │
00:19:21 v #20245 > > │ __assert_eq' / actual: "Some" / expected: "Some"                             │
00:19:21 v #20246 > > │                                                                              │
00:19:21 v #20247 > > │ .ts output:                                                                  │
00:19:21 v #20248 > > │ __assert_eq' / actual: Some / expected: Some                                 │
00:19:21 v #20249 > > │                                                                              │
00:19:21 v #20250 > > │ .py output:                                                                  │
00:19:21 v #20251 > > │ __assert_eq' / actual: Some / expected: Some                                 │
00:19:21 v #20252 > > │                                                                              │
00:19:21 v #20253 > > │                                                                              │
00:19:21 v #20254 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:21 v #20255 > >
00:19:21 v #20256 > > ╭─[ 4.04s - stdout ]───────────────────────────────────────────────────────────╮
00:19:21 v #20257 > > │ .fsx output:                                                                 │
00:19:21 v #20258 > > │ __assert_eq' / actual: "Some" / expected: "Some"                             │
00:19:21 v #20259 > > │                                                                              │
00:19:21 v #20260 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:21 v #20261 > >
00:19:21 v #20262 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:21 v #20263 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:21 v #20264 > > │ ### nameof                                                                   │
00:19:21 v #20265 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:21 v #20266 > >
00:19:21 v #20267 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:21 v #20268 > > inl nameof forall t. (x : t) : string =
00:19:21 v #20269 > >     real
00:19:21 v #20270 > >         real_core.record_type_fold_back
00:19:21 v #20271 > >             fun key =>
00:19:21 v #20272 > >                 forall value. _ =>
00:19:21 v #20273 > >                     sm'_real.symbol_to_string `(`key)
00:19:21 v #20274 > >             `t
00:19:21 v #20275 > >             ""
00:19:22 v #20276 > >
00:19:22 v #20277 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:22 v #20278 > > //// test
00:19:22 v #20279 > >
00:19:22 v #20280 > > { test1 = ""; test2 = "" }
00:19:22 v #20281 > > |> nameof
00:19:22 v #20282 > > |> _assert_eq' "test1"
00:19:22 v #20283 > >
00:19:22 v #20284 > > ╭─[ 381.07ms - stdout ]────────────────────────────────────────────────────────╮
00:19:22 v #20285 > > │ __assert_eq' / actual: "test1" / expected: "test1"                           │
00:19:22 v #20286 > > │                                                                              │
00:19:22 v #20287 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:22 v #20288 > >
00:19:22 v #20289 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:22 v #20290 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:22 v #20291 > > │ ### get_record_fields                                                        │
00:19:22 v #20292 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:22 v #20293 > >
00:19:22 v #20294 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:22 v #20295 > > inl get_record_fields forall t u. (x : t) : list (string * u) =
00:19:22 v #20296 > >     real
00:19:22 v #20297 > >         real_core.record_type_fold_back
00:19:22 v #20298 > >             fun key =>
00:19:22 v #20299 > >                 forall u'. acc =>
00:19:22 v #20300 > >                     inl k = sm'_real.symbol_to_string `(`key)
00:19:22 v #20301 > >                     inl v = x key
00:19:22 v #20302 > >                     (::) `(string * u') (k, v) acc
00:19:22 v #20303 > >             `t
00:19:22 v #20304 > >             (Nil `(string * u))
00:19:22 v #20305 > >
00:19:22 v #20306 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:22 v #20307 > > //// test
00:19:22 v #20308 > >
00:19:22 v #20309 > > { a = "1"; b = "2" }
00:19:22 v #20310 > > |> get_record_fields
00:19:22 v #20311 > > |> _assert_eq' [[ "a", "1"; "b", "2" ]]
00:19:23 v #20312 > >
00:19:23 v #20313 > > ╭─[ 452.48ms - stdout ]────────────────────────────────────────────────────────╮
00:19:23 v #20314 > > │ __assert_eq' / actual: UH0_1 ("a", "1", UH0_1 ("b", "2", UH0_0)) / expected: │
00:19:23 v #20315 > > │ UH0_1 ("a", "1", UH0_1 ("b", "2", UH0_0))                                    │
00:19:23 v #20316 > > │                                                                              │
00:19:23 v #20317 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:23 v #20318 > >
00:19:23 v #20319 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:23 v #20320 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:23 v #20321 > > │ ### get_functions_types                                                      │
00:19:23 v #20322 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:23 v #20323 > >
00:19:23 v #20324 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:23 v #20325 > > inl get_functions_types forall t {record}. (fns : t) =
00:19:23 v #20326 > >     real
00:19:23 v #20327 > >         inl get_function_type forall t. =
00:19:23 v #20328 > >             inl args forall t {record}. : list (string * string) =
00:19:23 v #20329 > >                 real_core.record_type_fold_back
00:19:23 v #20330 > >                     fun key =>
00:19:23 v #20331 > >                         forall v. acc =>
00:19:23 v #20332 > >                             inl k = sm'_real.symbol_to_string `(`key)
00:19:23 v #20333 > >                             inl v = $'"`v"' : string
00:19:23 v #20334 > >                             (::) `(string * string) (k, v) acc
00:19:23 v #20335 > >                     `t
00:19:23 v #20336 > >                     (Nil `(string * string))
00:19:23 v #20337 > >
00:19:23 v #20338 > >             typecase t with
00:19:23 v #20339 > >             | ~t -> ~u => args `t, ($'"`u"' : string)
00:19:23 v #20340 > >
00:19:23 v #20341 > >         real_core.record_type_fold_back
00:19:23 v #20342 > >             fun key =>
00:19:23 v #20343 > >                 forall v. acc =>
00:19:23 v #20344 > >                     inl k = sm'_real.symbol_to_string `(`key)
00:19:23 v #20345 > >                     inl args, result = get_function_type `v
00:19:23 v #20346 > >                     (::) `(string * (list (string * string) * string)) (k,
00:19:23 v #20347 > > (args, result)) acc
00:19:23 v #20348 > >             `(`fns)
00:19:23 v #20349 > >             (Nil `(string * (list (string * string) * string)))
00:19:23 v #20350 > >     |> fun x => x : list (string * (list (string * string) * string))
00:19:23 v #20351 > >
00:19:23 v #20352 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:23 v #20353 > > //// test
00:19:23 v #20354 > >
00:19:23 v #20355 > > inl one ({ a } : { a : i32 }) : i32 = a + 1
00:19:23 v #20356 > > inl two ({ a b } : { a : i32; b : i32 }) : i32 = a + b + 2
00:19:23 v #20357 > > inl fns = { one two }
00:19:23 v #20358 > >
00:19:23 v #20359 > > fns
00:19:23 v #20360 > > |> get_functions_types
00:19:23 v #20361 > > |> listm.map fun (name, args, result) => name, (args |> listm'.box |>
00:19:23 v #20362 > > listm'.to_array', result)
00:19:23 v #20363 > > |> listm'.box
00:19:23 v #20364 > > |> listm'.to_array'
00:19:23 v #20365 > > |> sm'.format
00:19:23 v #20366 > > |> _assert_eq' (
00:19:23 v #20367 > >     [[
00:19:23 v #20368 > >         "one", [["a", "int32"]], "int32"
00:19:23 v #20369 > >         "two", [["a", "int32"; "b", "int32"]], "int32"
00:19:23 v #20370 > >     ]]
00:19:23 v #20371 > >     |> listm.map fun (name, args, result) => name, (args |> listm'.box |>
00:19:23 v #20372 > > listm'.to_array', result)
00:19:23 v #20373 > >     |> listm'.box
00:19:23 v #20374 > >     |> listm'.to_array'
00:19:23 v #20375 > >     |> sm'.format
00:19:23 v #20376 > > )
00:19:24 v #20377 > >
00:19:24 v #20378 > > ╭─[ 470.94ms - stdout ]────────────────────────────────────────────────────────╮
00:19:24 v #20379 > > │ __assert_eq' / actual: "[|struct ("one", [|struct ("a", "int32")|],          │
00:19:24 v #20380 > > │ "int32");                                                                    │
00:19:24 v #20381 > > │   struct ("two", [|struct ("a", "int32"); struct ("b", "int32")|],           │
00:19:24 v #20382 > > │ "int32")|]" / expected: "[|struct ("one", [|struct ("a", "int32")|],         │
00:19:24 v #20383 > > │ "int32");                                                                    │
00:19:24 v #20384 > > │   struct ("two", [|struct ("a", "int32"); struct ("b", "int32")|],           │
00:19:24 v #20385 > > │ "int32")|]"                                                                  │
00:19:24 v #20386 > > │                                                                              │
00:19:24 v #20387 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:24 v #20388 > 00:00:29 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 24693 }
00:19:24 v #20389 > 00:00:29 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/polyglot/lib/spiral/reflection.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/polyglot/lib/spiral/reflection.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:19:25 v #20390 > 00:00:30 v #5 ! [NbConvertApp] Converting notebook c:/home/git/polyglot/lib/spiral/reflection.dib.ipynb to html
00:19:25 v #20391 > 00:00:30 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:19:25 v #20392 > 00:00:30 v #7 !   validate(nb)
00:19:26 v #20393 > 00:00:31 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:19:26 v #20394 > 00:00:31 v #9 !   return _pygments_highlight(
00:19:26 v #20395 > 00:00:31 v #10 ! [NbConvertApp] Writing 326982 bytes to c:\home\git\polyglot\lib\spiral\reflection.dib.html
00:19:26 v #20396 > 00:00:31 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 862 }
00:19:26 v #20397 > 00:00:31 d #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 862 }
00:19:26 v #20398 > 00:00:31 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/reflection.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/reflection.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:19:27 v #20399 > 00:00:32 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:19:27 v #20400 > 00:00:32 d #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:19:27 v #20401 > 00:00:32 d #16 spiral_builder.run / dib / { exit_code = 0; result_length = 25614 }
00:19:27 d #20402 runtime.execute_with_options_async / { exit_code = 0; output_length = 29189 }
00:19:27 d #25 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder.exe dib --path reflection.dib --retries 3
00:19:27 d #20403 runtime.execute_with_options_async / { file_name = ../../workspace/target/release/spiral_builder.exe; arguments = US5_0 "dib --path iter.dib --retries 3"; options = { command = ../../workspace/target/release/spiral_builder.exe dib --path iter.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:19:27 v #20404 > 00:00:00 d #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "iter.dib", "--retries", "3"])) }
00:19:27 v #20405 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/polyglot/lib/spiral/iter.dib", "--output-path", "c:/home/git/polyglot/lib/spiral/iter.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/polyglot/lib/spiral/iter.dib" --output-path "c:/home/git/polyglot/lib/spiral/iter.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:19:28 v #20406 > >
00:19:28 v #20407 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:28 v #20408 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:28 v #20409 > > │ # iter                                                                       │
00:19:28 v #20410 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:32 v #20411 > >
00:19:32 v #20412 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:32 v #20413 > > open rust
00:19:32 v #20414 > > open rust_operators
00:19:33 v #20415 > >
00:19:33 v #20416 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:33 v #20417 > > //// test
00:19:33 v #20418 > >
00:19:33 v #20419 > > open testing
00:19:33 v #20420 > >
00:19:33 v #20421 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:33 v #20422 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:33 v #20423 > > │ ## rust                                                                      │
00:19:33 v #20424 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:33 v #20425 > >
00:19:33 v #20426 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:33 v #20427 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:33 v #20428 > > │ ### enumerate                                                                │
00:19:33 v #20429 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:33 v #20430 > >
00:19:33 v #20431 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:33 v #20432 > > inl enumerate forall t. (iter : into_iterator t) : into_iterator (pair
00:19:33 v #20433 > > unativeint t) =
00:19:33 v #20434 > >     !\($'"!iter.enumerate().map(std::sync::Arc::new)"')
00:19:34 v #20435 > >
00:19:34 v #20436 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:34 v #20437 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:34 v #20438 > > │ ### into_iter                                                                │
00:19:34 v #20439 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:34 v #20440 > >
00:19:34 v #20441 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:34 v #20442 > > inl into_iter forall (t : * -> *) u. (x : t u) : into_iterator u =
00:19:34 v #20443 > >     !\($'"!x.into_iter()"')
00:19:34 v #20444 > >
00:19:34 v #20445 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:34 v #20446 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:34 v #20447 > > │ ### iter                                                                     │
00:19:34 v #20448 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:34 v #20449 > >
00:19:34 v #20450 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:34 v #20451 > > inl iter forall (t : * -> *) u. (x : t u) : into_iterator u =
00:19:34 v #20452 > >     !\\(x, $'"$0.iter()"')
00:19:34 v #20453 > >
00:19:34 v #20454 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:34 v #20455 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:34 v #20456 > > │ ### iter_ref                                                                 │
00:19:34 v #20457 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:34 v #20458 > >
00:19:34 v #20459 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:34 v #20460 > > inl iter_ref forall (t : * -> *) u. (x : t u) : into_iterator (rust.ref u) =
00:19:34 v #20461 > >     !\\(x, $'"$0.iter()"')
00:19:35 v #20462 > >
00:19:35 v #20463 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:35 v #20464 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:35 v #20465 > > │ ### iter_ref'                                                                │
00:19:35 v #20466 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:35 v #20467 > >
00:19:35 v #20468 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:35 v #20469 > > inl iter_ref' forall (t : * -> *) u. (x : rust.ref (t u)) : into_iterator
00:19:35 v #20470 > > (rust.ref u) =
00:19:35 v #20471 > >     !\\(x, $'"$0.iter()"')
00:19:35 v #20472 > >
00:19:35 v #20473 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:35 v #20474 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:35 v #20475 > > │ ### iter_ref''                                                               │
00:19:35 v #20476 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:35 v #20477 > >
00:19:35 v #20478 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:35 v #20479 > > inl iter_ref'' forall (t : * -> *) u (v : * -> *). (x : v (t u)) : into_iterator
00:19:35 v #20480 > > (rust.ref u) =
00:19:35 v #20481 > >     !\\(x, $'"$0.iter()"')
00:19:36 v #20482 > >
00:19:36 v #20483 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:36 v #20484 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:36 v #20485 > > │ ### iter_ref'''                                                              │
00:19:36 v #20486 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:36 v #20487 > >
00:19:36 v #20488 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:36 v #20489 > > inl iter_ref''' forall (t : * -> *) u (v : * -> *) (w : * -> *). (x : w (v (t
00:19:36 v #20490 > > u))) : into_iterator (rust.ref u) =
00:19:36 v #20491 > >     !\\(x, $'"$0.iter()"')
00:19:36 v #20492 > >
00:19:36 v #20493 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:36 v #20494 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:36 v #20495 > > │ ### map                                                                      │
00:19:36 v #20496 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:36 v #20497 > >
00:19:36 v #20498 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:36 v #20499 > > inl map forall t u. (fn : t -> u) (iter : into_iterator t) : into_iterator u =
00:19:36 v #20500 > >     !\\(fn, $'"!iter.map(|x| $0(x))"')
00:19:36 v #20501 > >
00:19:36 v #20502 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:36 v #20503 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:36 v #20504 > > │ ### cloned                                                                   │
00:19:36 v #20505 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:36 v #20506 > >
00:19:36 v #20507 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:36 v #20508 > > inl cloned forall t. (iter : into_iterator (rust.ref t)) : into_iterator t =
00:19:36 v #20509 > >     !\($'"!iter.cloned()"')
00:19:37 v #20510 > >
00:19:37 v #20511 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:37 v #20512 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:37 v #20513 > > │ ### for_each                                                                 │
00:19:37 v #20514 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:37 v #20515 > >
00:19:37 v #20516 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:37 v #20517 > > inl for_each forall t. (fn : t -> ()) (iter : into_iterator t) : () =
00:19:37 v #20518 > >     (!\\(fn, $'"true; !iter.for_each(|x| $0(x))"') : bool) |> ignore
00:19:37 v #20519 > >
00:19:37 v #20520 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:37 v #20521 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:37 v #20522 > > │ ### try_for_each                                                             │
00:19:37 v #20523 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:37 v #20524 > >
00:19:37 v #20525 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:37 v #20526 > > inl try_for_each forall t. (fn : t -> rust.try ()) x : resultm.result' () string
00:19:37 v #20527 > > =
00:19:37 v #20528 > >     (!\($'"true; let mut !x = !x; let _iter_try_for_each = !x.try_for_each(|x| {
00:19:37 v #20529 > > //"') : bool) |> ignore
00:19:37 v #20530 > >     (!\\(fn !\($'"x"'), $'"true; $0 }); //"') : bool) |> ignore
00:19:37 v #20531 > >     !\($'"_iter_try_for_each.map_err(|x| x.into())"')
00:19:38 v #20532 > >
00:19:38 v #20533 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:38 v #20534 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:38 v #20535 > > │ ### all                                                                      │
00:19:38 v #20536 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:38 v #20537 > >
00:19:38 v #20538 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:38 v #20539 > > inl all forall t. (fn : t -> bool) (x : rust.mut' (into_iterator t)) : bool =
00:19:38 v #20540 > >     x |> rust.to_mut
00:19:38 v #20541 > >     !\\(fn, $'$"!x.all(|x| $0(x))"')
00:19:38 v #20542 > >
00:19:38 v #20543 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:38 v #20544 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:38 v #20545 > > │ ### enumerate                                                                │
00:19:38 v #20546 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:38 v #20547 > >
00:19:38 v #20548 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:38 v #20549 > > inl enumerate forall dim {int; number} t. (ar : a dim t) : a dim (unativeint *
00:19:38 v #20550 > > t) =
00:19:38 v #20551 > >     inl (a ar) = ar
00:19:38 v #20552 > >     ar
00:19:38 v #20553 > >     |> am'.to_vec
00:19:38 v #20554 > >     |> into_iter
00:19:38 v #20555 > >     |> enumerate
00:19:38 v #20556 > >     |> iter_collect
00:19:38 v #20557 > >     |> am'.vec_map' from_pair
00:19:38 v #20558 > >     |> am'.from_vec
00:19:38 v #20559 > >
00:19:38 v #20560 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:38 v #20561 > > //// test
00:19:38 v #20562 > > ///! rust
00:19:38 v #20563 > >
00:19:38 v #20564 > > am'.init_series 0i32 2 1
00:19:38 v #20565 > > |> fun x => a x : _ int _
00:19:38 v #20566 > > |> enumerate
00:19:38 v #20567 > > |> fun (a x : _ int _) => x
00:19:38 v #20568 > > |> _assert_eq' ;[[ convert 0i32, 0; convert 1i32, 1; convert 2i32, 2 ]]
00:19:42 v #20569 > >
00:19:42 v #20570 > > ╭─[ 3.11s - return value ]─────────────────────────────────────────────────────╮
00:19:42 v #20571 > > │ __assert_eq' / actual: Array(MutCell([(0, 0), (1, 1), (2, 2)])) / expected:  │
00:19:42 v #20572 > > │ Array(MutCell([(0, 0), (1, 1), (2, 2)]))                                     │
00:19:42 v #20573 > > │                                                                              │
00:19:42 v #20574 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:42 v #20575 > 00:00:15 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 8683 }
00:19:42 v #20576 > 00:00:15 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/polyglot/lib/spiral/iter.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/polyglot/lib/spiral/iter.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:19:43 v #20577 > 00:00:16 v #5 ! [NbConvertApp] Converting notebook c:/home/git/polyglot/lib/spiral/iter.dib.ipynb to html
00:19:43 v #20578 > 00:00:16 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:19:43 v #20579 > 00:00:16 v #7 !   validate(nb)
00:19:43 v #20580 > 00:00:16 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:19:43 v #20581 > 00:00:16 v #9 !   return _pygments_highlight(
00:19:44 v #20582 > 00:00:17 v #10 ! [NbConvertApp] Writing 299004 bytes to c:\home\git\polyglot\lib\spiral\iter.dib.html
00:19:44 v #20583 > 00:00:17 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 850 }
00:19:44 v #20584 > 00:00:17 d #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 850 }
00:19:44 v #20585 > 00:00:17 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/iter.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/iter.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:19:44 v #20586 > 00:00:17 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:19:44 v #20587 > 00:00:17 d #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:19:44 v #20588 > 00:00:17 d #16 spiral_builder.run / dib / { exit_code = 0; result_length = 9592 }
00:19:44 d #20589 runtime.execute_with_options_async / { exit_code = 0; output_length = 12477 }
00:19:44 d #26 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder.exe dib --path iter.dib --retries 3
00:19:44 d #20590 runtime.execute_with_options_async / { file_name = ../../workspace/target/release/spiral_builder.exe; arguments = US5_0 "dib --path wasm.dib --retries 3"; options = { command = ../../workspace/target/release/spiral_builder.exe dib --path wasm.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:19:44 v #20591 > 00:00:00 d #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "wasm.dib", "--retries", "3"])) }
00:19:44 v #20592 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/polyglot/lib/spiral/wasm.dib", "--output-path", "c:/home/git/polyglot/lib/spiral/wasm.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/polyglot/lib/spiral/wasm.dib" --output-path "c:/home/git/polyglot/lib/spiral/wasm.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:19:46 v #20593 > >
00:19:46 v #20594 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:46 v #20595 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:46 v #20596 > > │ # wasm                                                                       │
00:19:46 v #20597 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:49 v #20598 > >
00:19:49 v #20599 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:49 v #20600 > > open rust
00:19:49 v #20601 > > open rust_operators
00:19:50 v #20602 > >
00:19:50 v #20603 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:50 v #20604 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:50 v #20605 > > │ ### rexie                                                                    │
00:19:50 v #20606 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:50 v #20607 > >
00:19:50 v #20608 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:50 v #20609 > > nominal rexie =
00:19:50 v #20610 > >     `(
00:19:50 v #20611 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:19:50 v #20612 > > Fable.Core.Emit(\"rexie::Rexie\")>]]\n#endif\ntype rexie_Rexie = class end"
00:19:50 v #20613 > >         $'' : $'rexie_Rexie'
00:19:50 v #20614 > >     )
00:19:51 v #20615 > >
00:19:51 v #20616 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:51 v #20617 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:51 v #20618 > > │ ### rexie_store                                                              │
00:19:51 v #20619 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:51 v #20620 > >
00:19:51 v #20621 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:51 v #20622 > > nominal rexie_store =
00:19:51 v #20623 > >     `(
00:19:51 v #20624 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:19:51 v #20625 > > Fable.Core.Emit(\"rexie::Store\")>]]\n#endif\ntype rexie_Store = class end"
00:19:51 v #20626 > >         $'' : $'rexie_Store'
00:19:51 v #20627 > >     )
00:19:51 v #20628 > >
00:19:51 v #20629 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:51 v #20630 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:51 v #20631 > > │ ### rexie_transaction                                                        │
00:19:51 v #20632 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:51 v #20633 > >
00:19:51 v #20634 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:51 v #20635 > > nominal rexie_transaction =
00:19:51 v #20636 > >     `(
00:19:51 v #20637 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:19:51 v #20638 > > Fable.Core.Emit(\"rexie::Transaction\")>]]\n#endif\ntype rexie_Transaction =
00:19:51 v #20639 > > class end"
00:19:51 v #20640 > >         $'' : $'rexie_Transaction'
00:19:51 v #20641 > >     )
00:19:52 v #20642 > >
00:19:52 v #20643 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:52 v #20644 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:52 v #20645 > > │ ### rexie_error                                                              │
00:19:52 v #20646 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:52 v #20647 > >
00:19:52 v #20648 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:52 v #20649 > > nominal rexie_error =
00:19:52 v #20650 > >     `(
00:19:52 v #20651 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:19:52 v #20652 > > Fable.Core.Emit(\"rexie::Error\")>]]\n#endif\ntype rexie_Error = class end"
00:19:52 v #20653 > >         $'' : $'rexie_Error'
00:19:52 v #20654 > >     )
00:19:52 v #20655 > >
00:19:52 v #20656 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:52 v #20657 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:52 v #20658 > > │ ### js_value                                                                 │
00:19:52 v #20659 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:52 v #20660 > >
00:19:52 v #20661 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:52 v #20662 > > nominal js_value =
00:19:52 v #20663 > >     `(
00:19:52 v #20664 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:19:52 v #20665 > > Fable.Core.Emit(\"wasm_bindgen::JsValue\")>]]\n#endif\ntype wasm_bindgen_JsValue
00:19:52 v #20666 > > = class end"
00:19:52 v #20667 > >         $'' : $'wasm_bindgen_JsValue'
00:19:52 v #20668 > >     )
00:19:52 v #20669 > >
00:19:52 v #20670 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:52 v #20671 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:52 v #20672 > > │ ### closure                                                                  │
00:19:52 v #20673 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:52 v #20674 > >
00:19:52 v #20675 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:52 v #20676 > > nominal closure t =
00:19:52 v #20677 > >     `(
00:19:52 v #20678 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:19:52 v #20679 > > Fable.Core.Emit(\"wasm_bindgen::closure::Closure<$0>\")>]]\n#endif\ntype
00:19:52 v #20680 > > wasm_bindgen_closure_Closure<'T> = class end"
00:19:52 v #20681 > >         $'' : $'wasm_bindgen_closure_Closure<`t>'
00:19:52 v #20682 > >     )
00:19:53 v #20683 > >
00:19:53 v #20684 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:53 v #20685 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:53 v #20686 > > │ ### js_function                                                              │
00:19:53 v #20687 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:53 v #20688 > >
00:19:53 v #20689 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:53 v #20690 > > nominal js_function =
00:19:53 v #20691 > >     `(
00:19:53 v #20692 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:19:53 v #20693 > > Fable.Core.Emit(\"js_sys::Function\")>]]\n#endif\ntype js_sys_Function = class
00:19:53 v #20694 > > end"
00:19:53 v #20695 > >         $'' : $'js_sys_Function'
00:19:53 v #20696 > >     )
00:19:53 v #20697 > >
00:19:53 v #20698 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:53 v #20699 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:53 v #20700 > > │ ### window                                                                   │
00:19:53 v #20701 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:53 v #20702 > >
00:19:53 v #20703 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:53 v #20704 > > nominal window =
00:19:53 v #20705 > >     `(
00:19:53 v #20706 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:19:53 v #20707 > > Fable.Core.Emit(\"web_sys::Window\")>]]\n#endif\ntype web_sys_Window = class
00:19:53 v #20708 > > end"
00:19:53 v #20709 > >         $'' : $'web_sys_Window'
00:19:53 v #20710 > >     )
00:19:54 v #20711 > >
00:19:54 v #20712 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:54 v #20713 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:54 v #20714 > > │ ### document                                                                 │
00:19:54 v #20715 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:54 v #20716 > >
00:19:54 v #20717 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:54 v #20718 > > nominal document =
00:19:54 v #20719 > >     `(
00:19:54 v #20720 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:19:54 v #20721 > > Fable.Core.Emit(\"web_sys::Document\")>]]\n#endif\ntype web_sys_Document = class
00:19:54 v #20722 > > end"
00:19:54 v #20723 > >         $'' : $'web_sys_Document'
00:19:54 v #20724 > >     )
00:19:54 v #20725 > >
00:19:54 v #20726 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:54 v #20727 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:54 v #20728 > > │ ### html_element                                                             │
00:19:54 v #20729 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:54 v #20730 > >
00:19:54 v #20731 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:54 v #20732 > > nominal html_element =
00:19:54 v #20733 > >     `(
00:19:54 v #20734 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:19:54 v #20735 > > Fable.Core.Emit(\"web_sys::HtmlElement\")>]]\n#endif\ntype web_sys_HtmlElement =
00:19:54 v #20736 > > class end"
00:19:54 v #20737 > >         $'' : $'web_sys_HtmlElement'
00:19:54 v #20738 > >     )
00:19:54 v #20739 > >
00:19:54 v #20740 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:54 v #20741 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:54 v #20742 > > │ ### storage                                                                  │
00:19:54 v #20743 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:54 v #20744 > >
00:19:54 v #20745 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:54 v #20746 > > nominal storage =
00:19:54 v #20747 > >     `(
00:19:54 v #20748 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:19:54 v #20749 > > Fable.Core.Emit(\"web_sys::Storage\")>]]\n#endif\ntype web_sys_Storage = class
00:19:54 v #20750 > > end"
00:19:54 v #20751 > >         $'' : $'web_sys_Storage'
00:19:54 v #20752 > >     )
00:19:55 v #20753 > >
00:19:55 v #20754 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:55 v #20755 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:55 v #20756 > > │ ### closure_wrap                                                             │
00:19:55 v #20757 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:55 v #20758 > >
00:19:55 v #20759 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:55 v #20760 > > inl closure_wrap forall t. (x : rust.box t) : closure t =
00:19:55 v #20761 > >     inl x = join x
00:19:55 v #20762 > >     !\($'"wasm_bindgen::closure::Closure::wrap(!x)"')
00:19:55 v #20763 > >
00:19:55 v #20764 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:55 v #20765 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:55 v #20766 > > │ ### closure_forget                                                           │
00:19:55 v #20767 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:55 v #20768 > >
00:19:55 v #20769 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:55 v #20770 > > inl closure_forget forall t. (closure : closure t) =
00:19:55 v #20771 > >     !\($'"!closure.forget()"') : ()
00:19:56 v #20772 > >
00:19:56 v #20773 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:56 v #20774 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:56 v #20775 > > │ ### closure_as_ref                                                           │
00:19:56 v #20776 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:56 v #20777 > >
00:19:56 v #20778 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:56 v #20779 > > inl closure_as_ref forall t. (closure : closure t) : rust.ref js_value =
00:19:56 v #20780 > >     !\($'"wasm_bindgen::closure::Closure::as_ref(&!closure)"')
00:19:56 v #20781 > >
00:19:56 v #20782 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:56 v #20783 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:56 v #20784 > > │ ### unchecked_ref                                                            │
00:19:56 v #20785 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:56 v #20786 > >
00:19:56 v #20787 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:56 v #20788 > > inl unchecked_ref (ref : rust.ref js_value) : rust.ref js_function =
00:19:56 v #20789 > >     !\($'"wasm_bindgen::JsCast::unchecked_ref(!ref)"')
00:19:56 v #20790 > >
00:19:56 v #20791 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:56 v #20792 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:56 v #20793 > > │ ### set_inner_html                                                           │
00:19:56 v #20794 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:56 v #20795 > >
00:19:56 v #20796 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:56 v #20797 > > inl set_inner_html (html : string) (el : html_element) =
00:19:56 v #20798 > >     inl html = join html
00:19:56 v #20799 > >     inl html = html |> sm'.as_str
00:19:56 v #20800 > >     inl el = join el
00:19:56 v #20801 > >     !\\(html, $'"!el.set_inner_html($0)"')
00:19:57 v #20802 > >
00:19:57 v #20803 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:57 v #20804 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:57 v #20805 > > │ ### from_js_value                                                            │
00:19:57 v #20806 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:57 v #20807 > >
00:19:57 v #20808 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:57 v #20809 > > inl from_js_value (value : js_value) : resultm.result' (optionm'.option'
00:19:57 v #20810 > > sm'.json_value) sm'.std_string =
00:19:57 v #20811 > >     inl value = join value
00:19:57 v #20812 > >     !\($'"serde_wasm_bindgen::from_value(!value)"')
00:19:57 v #20813 > >     |> resultm.map_error' fun (x : sm'.serde_wasm_bindgen_error) => x |>
00:19:57 v #20814 > > sm'.format'
00:19:57 v #20815 > 00:00:13 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 10635 }
00:19:57 v #20816 > 00:00:13 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/polyglot/lib/spiral/wasm.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/polyglot/lib/spiral/wasm.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:19:59 v #20817 > 00:00:14 v #5 ! [NbConvertApp] Converting notebook c:/home/git/polyglot/lib/spiral/wasm.dib.ipynb to html
00:19:59 v #20818 > 00:00:14 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:19:59 v #20819 > 00:00:14 v #7 !   validate(nb)
00:19:59 v #20820 > 00:00:14 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:19:59 v #20821 > 00:00:14 v #9 !   return _pygments_highlight(
00:19:59 v #20822 > 00:00:15 v #10 ! [NbConvertApp] Writing 302376 bytes to c:\home\git\polyglot\lib\spiral\wasm.dib.html
00:19:59 v #20823 > 00:00:15 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 850 }
00:19:59 v #20824 > 00:00:15 d #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 850 }
00:19:59 v #20825 > 00:00:15 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/wasm.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/wasm.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:20:00 v #20826 > 00:00:15 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:20:00 v #20827 > 00:00:15 d #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:20:00 v #20828 > 00:00:15 d #16 spiral_builder.run / dib / { exit_code = 0; result_length = 11544 }
00:20:00 d #20829 runtime.execute_with_options_async / { exit_code = 0; output_length = 14537 }
00:20:00 d #27 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder.exe dib --path wasm.dib --retries 3
00:20:00 d #20830 runtime.execute_with_options_async / { file_name = ../../workspace/target/release/spiral_builder.exe; arguments = US5_0 "dib --path leptos/leptos.dib --retries 3"; options = { command = ../../workspace/target/release/spiral_builder.exe dib --path leptos/leptos.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:20:00 v #20831 > 00:00:00 d #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "leptos/leptos.dib", "--retries", "3"])) }
00:20:00 v #20832 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/polyglot/lib/spiral/leptos/leptos.dib", "--output-path", "c:/home/git/polyglot/lib/spiral/leptos/leptos.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/polyglot/lib/spiral/leptos/leptos.dib" --output-path "c:/home/git/polyglot/lib/spiral/leptos/leptos.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:20:02 v #20833 > >
00:20:02 v #20834 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:02 v #20835 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:02 v #20836 > > │ # leptos                                                                     │
00:20:02 v #20837 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:05 v #20838 > >
00:20:05 v #20839 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:05 v #20840 > > open rust.rust_operators
00:20:05 v #20841 > > open rust
00:20:05 v #20842 > > open sm'_operators
00:20:06 v #20843 > >
00:20:06 v #20844 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:06 v #20845 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:06 v #20846 > > │ ### a'                                                                       │
00:20:06 v #20847 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:06 v #20848 > >
00:20:06 v #20849 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:06 v #20850 > > nominal a' =
00:20:06 v #20851 > >     `(
00:20:06 v #20852 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:20:06 v #20853 > > Fable.Core.Emit(\"leptos::html::A\")>]]\n#endif\ntype leptos_html_A = class end"
00:20:06 v #20854 > >         $'' : $'leptos_html_A'
00:20:06 v #20855 > >     )
00:20:06 v #20856 > >
00:20:06 v #20857 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:06 v #20858 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:06 v #20859 > > │ ### event                                                                    │
00:20:06 v #20860 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:06 v #20861 > >
00:20:06 v #20862 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:06 v #20863 > > nominal event =
00:20:06 v #20864 > >     `(
00:20:06 v #20865 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:20:06 v #20866 > > Fable.Core.Emit(\"leptos::ev::Event\")>]]\n#endif\ntype leptos_ev_Event = class
00:20:06 v #20867 > > end"
00:20:06 v #20868 > >         $'' : $'leptos_ev_Event'
00:20:06 v #20869 > >     )
00:20:07 v #20870 > >
00:20:07 v #20871 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:07 v #20872 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:07 v #20873 > > │ ### mouse_event                                                              │
00:20:07 v #20874 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:07 v #20875 > >
00:20:07 v #20876 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:07 v #20877 > > nominal mouse_event =
00:20:07 v #20878 > >     `(
00:20:07 v #20879 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:20:07 v #20880 > > Fable.Core.Emit(\"leptos::ev::MouseEvent\")>]]\n#endif\ntype
00:20:07 v #20881 > > leptos_ev_MouseEvent = class end"
00:20:07 v #20882 > >         $'' : $'leptos_ev_MouseEvent'
00:20:07 v #20883 > >     )
00:20:07 v #20884 > >
00:20:07 v #20885 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:07 v #20886 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:07 v #20887 > > │ ### button                                                                   │
00:20:07 v #20888 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:07 v #20889 > >
00:20:07 v #20890 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:07 v #20891 > > nominal button =
00:20:07 v #20892 > >     `(
00:20:07 v #20893 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:20:07 v #20894 > > Fable.Core.Emit(\"leptos::html::Button\")>]]\n#endif\ntype leptos_html_Button =
00:20:07 v #20895 > > class end"
00:20:07 v #20896 > >         $'' : $'leptos_html_Button'
00:20:07 v #20897 > >     )
00:20:07 v #20898 > >
00:20:07 v #20899 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:07 v #20900 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:07 v #20901 > > │ ### details                                                                  │
00:20:07 v #20902 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:07 v #20903 > >
00:20:07 v #20904 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:07 v #20905 > > nominal details =
00:20:07 v #20906 > >     `(
00:20:07 v #20907 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:20:07 v #20908 > > Fable.Core.Emit(\"leptos::html::Details\")>]]\n#endif\ntype leptos_html_Details
00:20:07 v #20909 > > = class end"
00:20:07 v #20910 > >         $'' : $'leptos_html_Details'
00:20:07 v #20911 > >     )
00:20:08 v #20912 > >
00:20:08 v #20913 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:08 v #20914 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:08 v #20915 > > │ ### dd                                                                       │
00:20:08 v #20916 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:08 v #20917 > >
00:20:08 v #20918 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:08 v #20919 > > nominal dd =
00:20:08 v #20920 > >     `(
00:20:08 v #20921 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:20:08 v #20922 > > Fable.Core.Emit(\"leptos::html::Dd\")>]]\n#endif\ntype leptos_html_Dd = class
00:20:08 v #20923 > > end"
00:20:08 v #20924 > >         $'' : $'leptos_html_Dd'
00:20:08 v #20925 > >     )
00:20:08 v #20926 > >
00:20:08 v #20927 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:08 v #20928 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:08 v #20929 > > │ ### div                                                                      │
00:20:08 v #20930 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:08 v #20931 > >
00:20:08 v #20932 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:08 v #20933 > > nominal div =
00:20:08 v #20934 > >     `(
00:20:08 v #20935 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:20:08 v #20936 > > Fable.Core.Emit(\"leptos::html::Div\")>]]\n#endif\ntype leptos_html_Div = class
00:20:08 v #20937 > > end"
00:20:08 v #20938 > >         $'' : $'leptos_html_Div'
00:20:08 v #20939 > >     )
00:20:09 v #20940 > >
00:20:09 v #20941 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:09 v #20942 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:09 v #20943 > > │ ### dl                                                                       │
00:20:09 v #20944 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:09 v #20945 > >
00:20:09 v #20946 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:09 v #20947 > > nominal dl =
00:20:09 v #20948 > >     `(
00:20:09 v #20949 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:20:09 v #20950 > > Fable.Core.Emit(\"leptos::html::Dl\")>]]\n#endif\ntype leptos_html_Dl = class
00:20:09 v #20951 > > end"
00:20:09 v #20952 > >         $'' : $'leptos_html_Dl'
00:20:09 v #20953 > >     )
00:20:09 v #20954 > >
00:20:09 v #20955 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:09 v #20956 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:09 v #20957 > > │ ### dt                                                                       │
00:20:09 v #20958 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:09 v #20959 > >
00:20:09 v #20960 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:09 v #20961 > > nominal dt =
00:20:09 v #20962 > >     `(
00:20:09 v #20963 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:20:09 v #20964 > > Fable.Core.Emit(\"leptos::html::Dt\")>]]\n#endif\ntype leptos_html_Dt = class
00:20:09 v #20965 > > end"
00:20:09 v #20966 > >         $'' : $'leptos_html_Dt'
00:20:09 v #20967 > >     )
00:20:09 v #20968 > >
00:20:09 v #20969 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:09 v #20970 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:09 v #20971 > > │ ### footer                                                                   │
00:20:09 v #20972 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:09 v #20973 > >
00:20:09 v #20974 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:09 v #20975 > > nominal footer =
00:20:09 v #20976 > >     `(
00:20:09 v #20977 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:20:09 v #20978 > > Fable.Core.Emit(\"leptos::html::Footer\")>]]\n#endif\ntype leptos_html_Footer =
00:20:09 v #20979 > > class end"
00:20:09 v #20980 > >         $'' : $'leptos_html_Footer'
00:20:09 v #20981 > >     )
00:20:10 v #20982 > >
00:20:10 v #20983 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:10 v #20984 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:10 v #20985 > > │ ### header                                                                   │
00:20:10 v #20986 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:10 v #20987 > >
00:20:10 v #20988 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:10 v #20989 > > nominal header =
00:20:10 v #20990 > >     `(
00:20:10 v #20991 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:20:10 v #20992 > > Fable.Core.Emit(\"leptos::html::Header\")>]]\n#endif\ntype leptos_html_Header =
00:20:10 v #20993 > > class end"
00:20:10 v #20994 > >         $'' : $'leptos_html_Header'
00:20:10 v #20995 > >     )
00:20:10 v #20996 > >
00:20:10 v #20997 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:10 v #20998 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:10 v #20999 > > │ ### input                                                                    │
00:20:10 v #21000 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:10 v #21001 > >
00:20:10 v #21002 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:10 v #21003 > > nominal input =
00:20:10 v #21004 > >     `(
00:20:10 v #21005 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:20:10 v #21006 > > Fable.Core.Emit(\"leptos::html::Input\")>]]\n#endif\ntype leptos_html_Input =
00:20:10 v #21007 > > class end"
00:20:10 v #21008 > >         $'' : $'leptos_html_Input'
00:20:10 v #21009 > >     )
00:20:11 v #21010 > >
00:20:11 v #21011 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:11 v #21012 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:11 v #21013 > > │ ### label                                                                    │
00:20:11 v #21014 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:11 v #21015 > >
00:20:11 v #21016 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:11 v #21017 > > nominal label =
00:20:11 v #21018 > >     `(
00:20:11 v #21019 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:20:11 v #21020 > > Fable.Core.Emit(\"leptos::html::Label\")>]]\n#endif\ntype leptos_html_Label =
00:20:11 v #21021 > > class end"
00:20:11 v #21022 > >         $'' : $'leptos_html_Label'
00:20:11 v #21023 > >     )
00:20:11 v #21024 > >
00:20:11 v #21025 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:11 v #21026 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:11 v #21027 > > │ ### main                                                                     │
00:20:11 v #21028 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:11 v #21029 > >
00:20:11 v #21030 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:11 v #21031 > > nominal main =
00:20:11 v #21032 > >     `(
00:20:11 v #21033 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:20:11 v #21034 > > Fable.Core.Emit(\"leptos::html::Main\")>]]\n#endif\ntype leptos_html_Main =
00:20:11 v #21035 > > class end"
00:20:11 v #21036 > >         $'' : $'leptos_html_Main'
00:20:11 v #21037 > >     )
00:20:11 v #21038 > >
00:20:11 v #21039 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:11 v #21040 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:11 v #21041 > > │ ### nav                                                                      │
00:20:11 v #21042 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:11 v #21043 > >
00:20:11 v #21044 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:11 v #21045 > > nominal nav =
00:20:11 v #21046 > >     `(
00:20:11 v #21047 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:20:11 v #21048 > > Fable.Core.Emit(\"leptos::html::Nav\")>]]\n#endif\ntype leptos_html_Nav = class
00:20:11 v #21049 > > end"
00:20:11 v #21050 > >         $'' : $'leptos_html_Nav'
00:20:11 v #21051 > >     )
00:20:12 v #21052 > >
00:20:12 v #21053 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:12 v #21054 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:12 v #21055 > > │ ### option'                                                                  │
00:20:12 v #21056 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:12 v #21057 > >
00:20:12 v #21058 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:12 v #21059 > > nominal option' =
00:20:12 v #21060 > >     `(
00:20:12 v #21061 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:20:12 v #21062 > > Fable.Core.Emit(\"leptos::html::Option_\")>]]\n#endif\ntype leptos_html_Option =
00:20:12 v #21063 > > class end"
00:20:12 v #21064 > >         $'' : $'leptos_html_Option'
00:20:12 v #21065 > >     )
00:20:12 v #21066 > >
00:20:12 v #21067 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:12 v #21068 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:12 v #21069 > > │ ### pre                                                                      │
00:20:12 v #21070 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:12 v #21071 > >
00:20:12 v #21072 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:12 v #21073 > > nominal pre =
00:20:12 v #21074 > >     `(
00:20:12 v #21075 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:20:12 v #21076 > > Fable.Core.Emit(\"leptos::html::Pre\")>]]\n#endif\ntype leptos_html_Pre = class
00:20:12 v #21077 > > end"
00:20:12 v #21078 > >         $'' : $'leptos_html_Pre'
00:20:12 v #21079 > >     )
00:20:13 v #21080 > >
00:20:13 v #21081 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:13 v #21082 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:13 v #21083 > > │ ### select                                                                   │
00:20:13 v #21084 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:13 v #21085 > >
00:20:13 v #21086 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:13 v #21087 > > nominal select =
00:20:13 v #21088 > >     `(
00:20:13 v #21089 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:20:13 v #21090 > > Fable.Core.Emit(\"leptos::html::Select\")>]]\n#endif\ntype leptos_html_Select =
00:20:13 v #21091 > > class end"
00:20:13 v #21092 > >         $'' : $'leptos_html_Select'
00:20:13 v #21093 > >     )
00:20:13 v #21094 > >
00:20:13 v #21095 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:13 v #21096 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:13 v #21097 > > │ ### span                                                                     │
00:20:13 v #21098 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:13 v #21099 > >
00:20:13 v #21100 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:13 v #21101 > > nominal span =
00:20:13 v #21102 > >     `(
00:20:13 v #21103 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:20:13 v #21104 > > Fable.Core.Emit(\"leptos::html::Span\")>]]\n#endif\ntype leptos_html_Span =
00:20:13 v #21105 > > class end"
00:20:13 v #21106 > >         $'' : $'leptos_html_Span'
00:20:13 v #21107 > >     )
00:20:13 v #21108 > >
00:20:13 v #21109 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:13 v #21110 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:13 v #21111 > > │ ### summary                                                                  │
00:20:13 v #21112 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:13 v #21113 > >
00:20:13 v #21114 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:13 v #21115 > > nominal summary =
00:20:13 v #21116 > >     `(
00:20:13 v #21117 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:20:13 v #21118 > > Fable.Core.Emit(\"leptos::html::Summary\")>]]\n#endif\ntype leptos_html_Summary
00:20:13 v #21119 > > = class end"
00:20:13 v #21120 > >         $'' : $'leptos_html_Summary'
00:20:13 v #21121 > >     )
00:20:14 v #21122 > >
00:20:14 v #21123 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:14 v #21124 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:14 v #21125 > > │ ### table                                                                    │
00:20:14 v #21126 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:14 v #21127 > >
00:20:14 v #21128 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:14 v #21129 > > nominal table =
00:20:14 v #21130 > >     `(
00:20:14 v #21131 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:20:14 v #21132 > > Fable.Core.Emit(\"leptos::html::Table\")>]]\n#endif\ntype leptos_html_Table =
00:20:14 v #21133 > > class end"
00:20:14 v #21134 > >         $'' : $'leptos_html_Table'
00:20:14 v #21135 > >     )
00:20:14 v #21136 > >
00:20:14 v #21137 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:14 v #21138 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:14 v #21139 > > │ ### thead                                                                    │
00:20:14 v #21140 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:14 v #21141 > >
00:20:14 v #21142 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:14 v #21143 > > nominal thead =
00:20:14 v #21144 > >     `(
00:20:14 v #21145 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:20:14 v #21146 > > Fable.Core.Emit(\"leptos::html::Thead\")>]]\n#endif\ntype leptos_html_Thead =
00:20:14 v #21147 > > class end"
00:20:14 v #21148 > >         $'' : $'leptos_html_Thead'
00:20:14 v #21149 > >     )
00:20:15 v #21150 > >
00:20:15 v #21151 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:15 v #21152 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:15 v #21153 > > │ ### tbody                                                                    │
00:20:15 v #21154 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:15 v #21155 > >
00:20:15 v #21156 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:15 v #21157 > > nominal tbody =
00:20:15 v #21158 > >     `(
00:20:15 v #21159 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:20:15 v #21160 > > Fable.Core.Emit(\"leptos::html::Tbody\")>]]\n#endif\ntype leptos_html_Tbody =
00:20:15 v #21161 > > class end"
00:20:15 v #21162 > >         $'' : $'leptos_html_Tbody'
00:20:15 v #21163 > >     )
00:20:15 v #21164 > >
00:20:15 v #21165 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:15 v #21166 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:15 v #21167 > > │ ### tr                                                                       │
00:20:15 v #21168 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:15 v #21169 > >
00:20:15 v #21170 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:15 v #21171 > > nominal tr =
00:20:15 v #21172 > >     `(
00:20:15 v #21173 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:20:15 v #21174 > > Fable.Core.Emit(\"leptos::html::Tr\")>]]\n#endif\ntype leptos_html_Tr = class
00:20:15 v #21175 > > end"
00:20:15 v #21176 > >         $'' : $'leptos_html_Tr'
00:20:15 v #21177 > >     )
00:20:15 v #21178 > >
00:20:15 v #21179 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:15 v #21180 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:15 v #21181 > > │ ### th                                                                       │
00:20:15 v #21182 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:15 v #21183 > >
00:20:15 v #21184 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:15 v #21185 > > nominal th =
00:20:15 v #21186 > >     `(
00:20:15 v #21187 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:20:15 v #21188 > > Fable.Core.Emit(\"leptos::html::Th\")>]]\n#endif\ntype leptos_html_Th = class
00:20:15 v #21189 > > end"
00:20:15 v #21190 > >         $'' : $'leptos_html_Th'
00:20:15 v #21191 > >     )
00:20:16 v #21192 > >
00:20:16 v #21193 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:16 v #21194 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:16 v #21195 > > │ ### td                                                                       │
00:20:16 v #21196 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:16 v #21197 > >
00:20:16 v #21198 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:16 v #21199 > > nominal td =
00:20:16 v #21200 > >     `(
00:20:16 v #21201 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:20:16 v #21202 > > Fable.Core.Emit(\"leptos::html::Td\")>]]\n#endif\ntype leptos_html_Td = class
00:20:16 v #21203 > > end"
00:20:16 v #21204 > >         $'' : $'leptos_html_Td'
00:20:16 v #21205 > >     )
00:20:16 v #21206 > >
00:20:16 v #21207 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:16 v #21208 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:16 v #21209 > > │ ### svg                                                                      │
00:20:16 v #21210 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:16 v #21211 > >
00:20:16 v #21212 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:16 v #21213 > > nominal svg =
00:20:16 v #21214 > >     `(
00:20:16 v #21215 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:20:16 v #21216 > > Fable.Core.Emit(\"leptos::svg::Svg\")>]]\n#endif\ntype leptos_svg_Svg = class
00:20:16 v #21217 > > end"
00:20:16 v #21218 > >         $'' : $'leptos_svg_Svg'
00:20:16 v #21219 > >     )
00:20:17 v #21220 > >
00:20:17 v #21221 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:17 v #21222 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:17 v #21223 > > │ ### path                                                                     │
00:20:17 v #21224 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:17 v #21225 > >
00:20:17 v #21226 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:17 v #21227 > > nominal path =
00:20:17 v #21228 > >     `(
00:20:17 v #21229 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:20:17 v #21230 > > Fable.Core.Emit(\"leptos::svg::Path\")>]]\n#endif\ntype leptos_svg_Path = class
00:20:17 v #21231 > > end"
00:20:17 v #21232 > >         $'' : $'leptos_svg_Path'
00:20:17 v #21233 > >     )
00:20:17 v #21234 > >
00:20:17 v #21235 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:17 v #21236 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:17 v #21237 > > │ ### circle                                                                   │
00:20:17 v #21238 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:17 v #21239 > >
00:20:17 v #21240 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:17 v #21241 > > nominal circle =
00:20:17 v #21242 > >     `(
00:20:17 v #21243 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:20:17 v #21244 > > Fable.Core.Emit(\"leptos::svg::Circle\")>]]\n#endif\ntype leptos_svg_Circle =
00:20:17 v #21245 > > class end"
00:20:17 v #21246 > >         $'' : $'leptos_svg_Circle'
00:20:17 v #21247 > >     )
00:20:17 v #21248 > >
00:20:17 v #21249 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:17 v #21250 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:17 v #21251 > > │ ### rect                                                                     │
00:20:17 v #21252 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:17 v #21253 > >
00:20:17 v #21254 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:17 v #21255 > > nominal rect =
00:20:17 v #21256 > >     `(
00:20:17 v #21257 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:20:17 v #21258 > > Fable.Core.Emit(\"leptos::svg::Rect\")>]]\n#endif\ntype leptos_svg_Rect = class
00:20:17 v #21259 > > end"
00:20:17 v #21260 > >         $'' : $'leptos_svg_Rect'
00:20:17 v #21261 > >     )
00:20:18 v #21262 > >
00:20:18 v #21263 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:18 v #21264 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:18 v #21265 > > │ ### animate                                                                  │
00:20:18 v #21266 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:18 v #21267 > >
00:20:18 v #21268 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:18 v #21269 > > nominal animate =
00:20:18 v #21270 > >     `(
00:20:18 v #21271 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:20:18 v #21272 > > Fable.Core.Emit(\"leptos::svg::Animate\")>]]\n#endif\ntype leptos_svg_Animate =
00:20:18 v #21273 > > class end"
00:20:18 v #21274 > >         $'' : $'leptos_svg_Animate'
00:20:18 v #21275 > >     )
00:20:18 v #21276 > >
00:20:18 v #21277 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:18 v #21278 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:18 v #21279 > > │ ### action                                                                   │
00:20:18 v #21280 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:18 v #21281 > >
00:20:18 v #21282 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:18 v #21283 > > nominal action t u =
00:20:18 v #21284 > >     `(
00:20:18 v #21285 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:20:18 v #21286 > > Fable.Core.Emit(\"leptos::prelude::Action<$0, $1>\")>]]\n#endif\ntype
00:20:18 v #21287 > > leptos_prelude_Action<'T, 'U> = class end"
00:20:18 v #21288 > >         $'' : $'leptos_prelude_Action<`t, `u>'
00:20:18 v #21289 > >     )
00:20:19 v #21290 > >
00:20:19 v #21291 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:19 v #21292 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:19 v #21293 > > │ ### for                                                                      │
00:20:19 v #21294 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:19 v #21295 > >
00:20:19 v #21296 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:19 v #21297 > > nominal for =
00:20:19 v #21298 > >     `(
00:20:19 v #21299 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:20:19 v #21300 > > Fable.Core.Emit(\"leptos::prelude::For\")>]]\n#endif\ntype leptos_prelude_For =
00:20:19 v #21301 > > class end"
00:20:19 v #21302 > >         $'' : $'leptos_prelude_For'
00:20:19 v #21303 > >     )
00:20:19 v #21304 > >
00:20:19 v #21305 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:19 v #21306 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:19 v #21307 > > │ ### show                                                                     │
00:20:19 v #21308 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:19 v #21309 > >
00:20:19 v #21310 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:19 v #21311 > > nominal show =
00:20:19 v #21312 > >     `(
00:20:19 v #21313 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:20:19 v #21314 > > Fable.Core.Emit(\"leptos::prelude::Show\")>]]\n#endif\ntype leptos_prelude_Show
00:20:19 v #21315 > > = class end"
00:20:19 v #21316 > >         $'' : $'leptos_prelude_Show'
00:20:19 v #21317 > >     )
00:20:19 v #21318 > >
00:20:19 v #21319 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:19 v #21320 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:19 v #21321 > > │ ### fragment                                                                 │
00:20:19 v #21322 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:19 v #21323 > >
00:20:19 v #21324 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:19 v #21325 > > nominal fragment =
00:20:19 v #21326 > >     `(
00:20:19 v #21327 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:20:19 v #21328 > > Fable.Core.Emit(\"leptos::prelude::Fragment\")>]]\n#endif\ntype
00:20:19 v #21329 > > leptos_dom_Fragment = class end"
00:20:19 v #21330 > >         $'' : $'leptos_dom_Fragment'
00:20:19 v #21331 > >     )
00:20:20 v #21332 > >
00:20:20 v #21333 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:20 v #21334 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:20 v #21335 > > │ ### interval_handle                                                          │
00:20:20 v #21336 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:20 v #21337 > >
00:20:20 v #21338 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:20 v #21339 > > nominal interval_handle =
00:20:20 v #21340 > >     `(
00:20:20 v #21341 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:20:20 v #21342 > > Fable.Core.Emit(\"leptos::leptos_dom::helpers::IntervalHandle\")>]]\n#endif\ntyp
00:20:20 v #21343 > > e leptos_dom_IntervalHandle = class end"
00:20:20 v #21344 > >         $'' : $'leptos_dom_IntervalHandle'
00:20:20 v #21345 > >     )
00:20:20 v #21346 > >
00:20:20 v #21347 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:20 v #21348 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:20 v #21349 > > │ ### text                                                                     │
00:20:20 v #21350 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:20 v #21351 > >
00:20:20 v #21352 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:20 v #21353 > > nominal text =
00:20:20 v #21354 > >     `(
00:20:20 v #21355 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:20:20 v #21356 > > Fable.Core.Emit(\"leptos::tachys::renderer::dom::Text\")>]]\n#endif\ntype
00:20:20 v #21357 > > leptos_dom_Text = class end"
00:20:20 v #21358 > >         $'' : $'leptos_dom_Text'
00:20:20 v #21359 > >     )
00:20:21 v #21360 > >
00:20:21 v #21361 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:21 v #21362 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:21 v #21363 > > │ ### transparent                                                              │
00:20:21 v #21364 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:21 v #21365 > >
00:20:21 v #21366 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:21 v #21367 > > nominal transparent =
00:20:21 v #21368 > >     `(
00:20:21 v #21369 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:20:21 v #21370 > > Fable.Core.Emit(\"leptos::leptos_dom::Transparent\")>]]\n#endif\ntype
00:20:21 v #21371 > > leptos_dom_Transparent = class end"
00:20:21 v #21372 > >         $'' : $'leptos_dom_Transparent'
00:20:21 v #21373 > >     )
00:20:21 v #21374 > >
00:20:21 v #21375 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:21 v #21376 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:21 v #21377 > > │ ### route                                                                    │
00:20:21 v #21378 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:21 v #21379 > >
00:20:21 v #21380 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:21 v #21381 > > nominal route =
00:20:21 v #21382 > >     `(
00:20:21 v #21383 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:20:21 v #21384 > > Fable.Core.Emit(\"leptos_router::Route\")>]]\n#endif\ntype leptos_router_Route =
00:20:21 v #21385 > > class end"
00:20:21 v #21386 > >         $'' : $'leptos_router_Route'
00:20:21 v #21387 > >     )
00:20:21 v #21388 > >
00:20:21 v #21389 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:21 v #21390 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:21 v #21391 > > │ ### nested_route                                                             │
00:20:21 v #21392 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:21 v #21393 > >
00:20:21 v #21394 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:21 v #21395 > > nominal nested_route =
00:20:21 v #21396 > >     `(
00:20:21 v #21397 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:20:21 v #21398 > > Fable.Core.Emit(\"leptos_router::NestedRoute<_, _, _, _>\")>]]\n#endif\ntype
00:20:21 v #21399 > > leptos_router_NestedRoute = class end"
00:20:21 v #21400 > >         $'' : $'leptos_router_NestedRoute'
00:20:21 v #21401 > >     )
00:20:22 v #21402 > >
00:20:22 v #21403 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:22 v #21404 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:22 v #21405 > > │ ### route_definition                                                         │
00:20:22 v #21406 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:22 v #21407 > >
00:20:22 v #21408 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:22 v #21409 > > nominal route_definition =
00:20:22 v #21410 > >     `(
00:20:22 v #21411 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:20:22 v #21412 > > Fable.Core.Emit(\"leptos_router::RouteDefinition\")>]]\n#endif\ntype
00:20:22 v #21413 > > leptos_router_RouteDefinition = class end"
00:20:22 v #21414 > >         $'' : $'leptos_router_RouteDefinition'
00:20:22 v #21415 > >     )
00:20:22 v #21416 > >
00:20:22 v #21417 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:22 v #21418 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:22 v #21419 > > │ ### router                                                                   │
00:20:22 v #21420 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:22 v #21421 > >
00:20:22 v #21422 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:22 v #21423 > > nominal router =
00:20:22 v #21424 > >     `(
00:20:22 v #21425 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:20:22 v #21426 > > Fable.Core.Emit(\"leptos_router::Router\")>]]\n#endif\ntype leptos_router_Router
00:20:22 v #21427 > > = class end"
00:20:22 v #21428 > >         $'' : $'leptos_router_Router'
00:20:22 v #21429 > >     )
00:20:23 v #21430 > >
00:20:23 v #21431 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:23 v #21432 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:23 v #21433 > > │ ### routes                                                                   │
00:20:23 v #21434 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:23 v #21435 > >
00:20:23 v #21436 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:23 v #21437 > > nominal routes =
00:20:23 v #21438 > >     `(
00:20:23 v #21439 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:20:23 v #21440 > > Fable.Core.Emit(\"leptos_router::Routes\")>]]\n#endif\ntype leptos_router_Routes
00:20:23 v #21441 > > = class end"
00:20:23 v #21442 > >         $'' : $'leptos_router_Routes'
00:20:23 v #21443 > >     )
00:20:23 v #21444 > >
00:20:23 v #21445 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:23 v #21446 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:23 v #21447 > > │ ### html_element                                                             │
00:20:23 v #21448 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:23 v #21449 > >
00:20:23 v #21450 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:23 v #21451 > > nominal html_element t =
00:20:23 v #21452 > >     `(
00:20:23 v #21453 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:20:23 v #21454 > > Fable.Core.Emit(\"leptos::html::HtmlElement<$0, _, _>\")>]]\n#endif\ntype
00:20:23 v #21455 > > leptos_dom_html_HtmlElement<'T> = class end"
00:20:23 v #21456 > >         $'' : $'leptos_dom_html_HtmlElement<`t>'
00:20:23 v #21457 > >     )
00:20:23 v #21458 > >
00:20:23 v #21459 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:23 v #21460 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:23 v #21461 > > │ ### into_view                                                                │
00:20:23 v #21462 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:23 v #21463 > >
00:20:23 v #21464 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:23 v #21465 > > nominal into_view =
00:20:23 v #21466 > >     `(
00:20:23 v #21467 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:20:23 v #21468 > > Fable.Core.Emit(\"leptos::IntoView\")>]]\n#endif\ntype leptos_IntoView = class
00:20:23 v #21469 > > end"
00:20:23 v #21470 > >         $'' : $'leptos_IntoView'
00:20:23 v #21471 > >     )
00:20:24 v #21472 > >
00:20:24 v #21473 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:24 v #21474 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:24 v #21475 > > │ ### location                                                                 │
00:20:24 v #21476 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:24 v #21477 > >
00:20:24 v #21478 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:24 v #21479 > > nominal location =
00:20:24 v #21480 > >     `(
00:20:24 v #21481 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:20:24 v #21482 > > Fable.Core.Emit(\"leptos_router::location::Location\")>]]\n#endif\ntype
00:20:24 v #21483 > > leptos_router_location_Location = class end"
00:20:24 v #21484 > >         $'' : $'leptos_router_location_Location'
00:20:24 v #21485 > >     )
00:20:24 v #21486 > >
00:20:24 v #21487 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:24 v #21488 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:24 v #21489 > > │ ### navigate_options                                                         │
00:20:24 v #21490 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:24 v #21491 > >
00:20:24 v #21492 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:24 v #21493 > > nominal navigate_options =
00:20:24 v #21494 > >     `(
00:20:24 v #21495 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:20:24 v #21496 > > Fable.Core.Emit(\"leptos_router::NavigateOptions\")>]]\n#endif\ntype
00:20:24 v #21497 > > leptos_router_NavigateOptions = class end"
00:20:24 v #21498 > >         $'' : $'leptos_router_NavigateOptions'
00:20:24 v #21499 > >     )
00:20:25 v #21500 > >
00:20:25 v #21501 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:25 v #21502 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:25 v #21503 > > │ ### url                                                                      │
00:20:25 v #21504 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:25 v #21505 > >
00:20:25 v #21506 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:25 v #21507 > > nominal url =
00:20:25 v #21508 > >     `(
00:20:25 v #21509 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:20:25 v #21510 > > Fable.Core.Emit(\"leptos_router::location::Url\")>]]\n#endif\ntype
00:20:25 v #21511 > > leptos_router_Url = class end"
00:20:25 v #21512 > >         $'' : $'leptos_router_Url'
00:20:25 v #21513 > >     )
00:20:25 v #21514 > >
00:20:25 v #21515 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:25 v #21516 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:25 v #21517 > > │ ### memo                                                                     │
00:20:25 v #21518 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:25 v #21519 > >
00:20:25 v #21520 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:25 v #21521 > > nominal memo t =
00:20:25 v #21522 > >     `(
00:20:25 v #21523 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:20:25 v #21524 > > Fable.Core.Emit(\"leptos::prelude::Memo<$0>\")>]]\n#endif\ntype
00:20:25 v #21525 > > leptos_prelude_Memo<'T> = class end"
00:20:25 v #21526 > >         $'' : $'leptos_prelude_Memo<`t>'
00:20:25 v #21527 > >     )
00:20:25 v #21528 > >
00:20:25 v #21529 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:25 v #21530 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:25 v #21531 > > │ ### rw_signal                                                                │
00:20:25 v #21532 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:25 v #21533 > >
00:20:25 v #21534 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:25 v #21535 > > nominal rw_signal t =
00:20:25 v #21536 > >     `(
00:20:25 v #21537 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:20:25 v #21538 > > Fable.Core.Emit(\"leptos::prelude::RwSignal<$0>\")>]]\n#endif\ntype
00:20:25 v #21539 > > leptos_prelude_RwSignal<'T> = class end"
00:20:25 v #21540 > >         $'' : $'leptos_prelude_RwSignal<`t>'
00:20:25 v #21541 > >     )
00:20:26 v #21542 > >
00:20:26 v #21543 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:26 v #21544 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:26 v #21545 > > │ ### signal                                                                   │
00:20:26 v #21546 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:26 v #21547 > >
00:20:26 v #21548 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:26 v #21549 > > nominal signal t =
00:20:26 v #21550 > >     `(
00:20:26 v #21551 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:20:26 v #21552 > > Fable.Core.Emit(\"leptos::prelude::Signal<$0>\")>]]\n#endif\ntype
00:20:26 v #21553 > > leptos_prelude_Signal<'T> = class end"
00:20:26 v #21554 > >         $'' : $'leptos_prelude_Signal<`t>'
00:20:26 v #21555 > >     )
00:20:26 v #21556 > >
00:20:26 v #21557 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:26 v #21558 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:26 v #21559 > > │ ### read_signal                                                              │
00:20:26 v #21560 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:26 v #21561 > >
00:20:26 v #21562 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:26 v #21563 > > nominal read_signal t =
00:20:26 v #21564 > >     `(
00:20:26 v #21565 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:20:26 v #21566 > > Fable.Core.Emit(\"leptos::prelude::ReadSignal<$0>\")>]]\n#endif\ntype
00:20:26 v #21567 > > leptos_prelude_ReadSignal<'T> = class end"
00:20:26 v #21568 > >         $'' : $'leptos_prelude_ReadSignal<`t>'
00:20:26 v #21569 > >     )
00:20:27 v #21570 > >
00:20:27 v #21571 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:27 v #21572 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:27 v #21573 > > │ ### write_signal                                                             │
00:20:27 v #21574 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:27 v #21575 > >
00:20:27 v #21576 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:27 v #21577 > > nominal write_signal t =
00:20:27 v #21578 > >     `(
00:20:27 v #21579 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:20:27 v #21580 > > Fable.Core.Emit(\"leptos::prelude::WriteSignal<$0>\")>]]\n#endif\ntype
00:20:27 v #21581 > > leptos_prelude_WriteSignal<'T> = class end"
00:20:27 v #21582 > >         $'' : $'leptos_prelude_WriteSignal<`t>'
00:20:27 v #21583 > >     )
00:20:27 v #21584 > >
00:20:27 v #21585 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:27 v #21586 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:27 v #21587 > > │ ### resource                                                                 │
00:20:27 v #21588 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:27 v #21589 > >
00:20:27 v #21590 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:27 v #21591 > > nominal resource t u =
00:20:27 v #21592 > >     `(
00:20:27 v #21593 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:20:27 v #21594 > > Fable.Core.Emit(\"leptos::prelude::Resource<$0, $1>\")>]]\n#endif\ntype
00:20:27 v #21595 > > leptos_prelude_Resource<'T, 'U> = class end"
00:20:27 v #21596 > >         $'' : $'leptos_prelude_Resource<`t, `u>'
00:20:27 v #21597 > >     )
00:20:27 v #21598 > >
00:20:27 v #21599 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:27 v #21600 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:27 v #21601 > > │ ### any_view                                                                 │
00:20:27 v #21602 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:27 v #21603 > >
00:20:27 v #21604 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:27 v #21605 > > nominal any_view =
00:20:27 v #21606 > >     `(
00:20:27 v #21607 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:20:27 v #21608 > > Fable.Core.Emit(\"leptos::prelude::AnyView\")>]]\n#endif\ntype
00:20:27 v #21609 > > leptos_prelude_AnyView = class end"
00:20:27 v #21610 > >         $'' : $'leptos_prelude_AnyView'
00:20:27 v #21611 > >     )
00:20:28 v #21612 > >
00:20:28 v #21613 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:28 v #21614 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:28 v #21615 > > │ ### view'                                                                    │
00:20:28 v #21616 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:28 v #21617 > >
00:20:28 v #21618 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:28 v #21619 > > nominal view' t =
00:20:28 v #21620 > >     `(
00:20:28 v #21621 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:20:28 v #21622 > > Fable.Core.Emit(\"leptos::prelude::View<$0>\")>]]\n#endif\ntype
00:20:28 v #21623 > > leptos_prelude_View<'T> = class end"
00:20:28 v #21624 > >         $'' : $'leptos_prelude_View<`t>'
00:20:28 v #21625 > >     )
00:20:28 v #21626 > >
00:20:28 v #21627 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:28 v #21628 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:28 v #21629 > > │ ### view                                                                     │
00:20:28 v #21630 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:28 v #21631 > >
00:20:28 v #21632 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:28 v #21633 > > nominal view =
00:20:28 v #21634 > >     `(
00:20:28 v #21635 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:20:28 v #21636 > > Fable.Core.Emit(\"leptos::prelude::AnyView\")>]]\n#endif\ntype
00:20:28 v #21637 > > leptos_prelude_AnyView_ = class end"
00:20:28 v #21638 > >         $'' : $'leptos_prelude_AnyView_'
00:20:28 v #21639 > >     )
00:20:29 v #21640 > >
00:20:29 v #21641 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:29 v #21642 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:29 v #21643 > > │ ### signal_get                                                               │
00:20:29 v #21644 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:29 v #21645 > >
00:20:29 v #21646 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:29 v #21647 > > prototype signal_get signal t : signal t -> t
00:20:29 v #21648 > >
00:20:29 v #21649 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:29 v #21650 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:29 v #21651 > > │ ### signal_get_untracked                                                     │
00:20:29 v #21652 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:29 v #21653 > >
00:20:29 v #21654 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:29 v #21655 > > prototype signal_get_untracked signal t : signal t -> t
00:20:29 v #21656 > >
00:20:29 v #21657 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:29 v #21658 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:29 v #21659 > > │ ### signal_update                                                            │
00:20:29 v #21660 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:29 v #21661 > >
00:20:29 v #21662 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:29 v #21663 > > prototype signal_update signal t : (t -> t) -> signal t -> ()
00:20:30 v #21664 > >
00:20:30 v #21665 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:30 v #21666 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:30 v #21667 > > │ ### signal_set                                                               │
00:20:30 v #21668 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:30 v #21669 > >
00:20:30 v #21670 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:30 v #21671 > > prototype signal_set signal t : t -> signal t -> ()
00:20:30 v #21672 > >
00:20:30 v #21673 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:30 v #21674 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:30 v #21675 > > │ ### log_string                                                               │
00:20:30 v #21676 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:30 v #21677 > >
00:20:30 v #21678 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:30 v #21679 > > inl log_string (text : string) =
00:20:30 v #21680 > >     (!\($'@@"true; leptos::logging::log\!(""" + !text + @@""");"') : bool) |>
00:20:30 v #21681 > > ignore
00:20:31 v #21682 > >
00:20:31 v #21683 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:31 v #21684 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:31 v #21685 > > │ ### log                                                                      │
00:20:31 v #21686 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:31 v #21687 > >
00:20:31 v #21688 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:31 v #21689 > > inl log (text : string) =
00:20:31 v #21690 > >     (!\\(text, $'@@$"true; leptos::logging::log\!(""{{}}"", $0)"') : bool) |>
00:20:31 v #21691 > > ignore
00:20:31 v #21692 > >
00:20:31 v #21693 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:31 v #21694 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:31 v #21695 > > │ ### log_debug                                                                │
00:20:31 v #21696 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:31 v #21697 > >
00:20:31 v #21698 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:31 v #21699 > > inl log_debug (text : string) =
00:20:31 v #21700 > >     (!\\(text, $'@@$"true; leptos::logging::log\!(""{{:?}}"", $0)"') : bool) |>
00:20:31 v #21701 > > ignore
00:20:31 v #21702 > >
00:20:31 v #21703 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:31 v #21704 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:31 v #21705 > > │ ### log_pretty                                                               │
00:20:31 v #21706 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:31 v #21707 > >
00:20:31 v #21708 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:31 v #21709 > > inl log_pretty (text : string) =
00:20:31 v #21710 > >     (!\\(text, $'@@$"true; leptos::logging::log\!(""{{:#?}}"", $0)"') : bool) |>
00:20:31 v #21711 > > ignore
00:20:32 v #21712 > >
00:20:32 v #21713 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:32 v #21714 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:32 v #21715 > > │ ### log_format                                                               │
00:20:32 v #21716 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:32 v #21717 > >
00:20:32 v #21718 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:32 v #21719 > > inl log_format fn obj =
00:20:32 v #21720 > >     inl obj_log = obj |> sm'.format_debug
00:20:32 v #21721 > >     inl text = fn obj_log |> sm'.ellipsis_end 200
00:20:32 v #21722 > >     log text
00:20:32 v #21723 > >     obj
00:20:32 v #21724 > >
00:20:32 v #21725 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:32 v #21726 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:32 v #21727 > > │ ### mount_to_body                                                            │
00:20:32 v #21728 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:32 v #21729 > >
00:20:32 v #21730 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:32 v #21731 > > inl mount_to_body (view_fn : () -> rust.impl into_view) : () =
00:20:32 v #21732 > >     (!\\(view_fn, $'"true; leptos::prelude::mount_to_body(|| $0()); //"') :
00:20:32 v #21733 > > bool) |> ignore
00:20:33 v #21734 > >
00:20:33 v #21735 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:33 v #21736 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:33 v #21737 > > │ ### view_vec_to_fragment                                                     │
00:20:33 v #21738 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:33 v #21739 > >
00:20:33 v #21740 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:33 v #21741 > > inl view_vec_to_fragment (view : am'.vec view) : fragment =
00:20:33 v #21742 > >     !\\(view, $'"leptos::prelude::Fragment::new($0)"')
00:20:33 v #21743 > >
00:20:33 v #21744 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:33 v #21745 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:33 v #21746 > > │ ### view_list_to_fragment                                                    │
00:20:33 v #21747 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:33 v #21748 > >
00:20:33 v #21749 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:33 v #21750 > > inl view_list_to_fragment (view : list view) : fragment =
00:20:33 v #21751 > >     view |> am'.new_vec |> view_vec_to_fragment
00:20:33 v #21752 > >
00:20:33 v #21753 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:33 v #21754 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:33 v #21755 > > │ ### element_to_view                                                          │
00:20:33 v #21756 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:33 v #21757 > >
00:20:33 v #21758 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:33 v #21759 > > inl element_to_view (view : view' (html_element _)) : view =
00:20:33 v #21760 > >     !\\(view, $'"leptos::prelude::IntoAny::into_any($0)"')
00:20:34 v #21761 > >
00:20:34 v #21762 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:34 v #21763 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:34 v #21764 > > │ ### view_to_fragment                                                         │
00:20:34 v #21765 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:34 v #21766 > >
00:20:34 v #21767 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:34 v #21768 > > inl view_to_fragment (view : view) : fragment =
00:20:34 v #21769 > >     [[ view ]] |> view_list_to_fragment
00:20:34 v #21770 > >
00:20:34 v #21771 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:34 v #21772 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:34 v #21773 > > │ ### fragment_to_view                                                         │
00:20:34 v #21774 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:34 v #21775 > >
00:20:34 v #21776 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:34 v #21777 > > inl fragment_to_view (fragment : fragment) : view =
00:20:34 v #21778 > >     inl fragment = join fragment
00:20:34 v #21779 > >     !\($'"leptos::prelude::AnyView::from(!fragment)"')
00:20:35 v #21780 > >
00:20:35 v #21781 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:35 v #21782 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:35 v #21783 > > │ ### fragment_to_view'                                                        │
00:20:35 v #21784 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:35 v #21785 > >
00:20:35 v #21786 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:35 v #21787 > > inl fragment_to_view' (fragment : rust.ref fragment) : view =
00:20:35 v #21788 > >     !\\(fragment, $'"leptos::prelude::AnyView::from(*$0.clone())"')
00:20:35 v #21789 > >
00:20:35 v #21790 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:35 v #21791 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:35 v #21792 > > │ ### element_to_fragment                                                      │
00:20:35 v #21793 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:35 v #21794 > >
00:20:35 v #21795 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:35 v #21796 > > inl element_to_fragment (view : view' (html_element _)) : fragment =
00:20:35 v #21797 > >     view
00:20:35 v #21798 > >     |> element_to_view
00:20:35 v #21799 > >     |> view_to_fragment
00:20:35 v #21800 > >
00:20:35 v #21801 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:35 v #21802 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:35 v #21803 > > │ ### (~:>) fragment                                                           │
00:20:35 v #21804 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:35 v #21805 > >
00:20:35 v #21806 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:35 v #21807 > > instance (~:>) fragment = fun x =>
00:20:35 v #21808 > >     real
00:20:35 v #21809 > >         typecase t with
00:20:35 v #21810 > >         | array_base (view' (html_element ~el)) =>
00:20:35 v #21811 > >             inl x = am'.to_vec `(view' (html_element el)) x
00:20:35 v #21812 > >             inl x = am'.vec_map' `(view' (html_element el)) `view
00:20:35 v #21813 > > (element_to_view `el) x
00:20:35 v #21814 > >             inl x : a i32 view = am'.from_vec `i32 `view x
00:20:35 v #21815 > >             inl x = am.toList `a `i32 `view x
00:20:35 v #21816 > >             view_list_to_fragment x
00:20:35 v #21817 > >         | list (view' (html_element ~el)) =>
00:20:35 v #21818 > >             inl x = listm.map `(view' (html_element el)) `view (element_to_view
00:20:35 v #21819 > > `el) x
00:20:35 v #21820 > >             view_list_to_fragment x
00:20:35 v #21821 > >         | list view =>
00:20:35 v #21822 > >             view_list_to_fragment x
00:20:35 v #21823 > >         | _ => x
00:20:36 v #21824 > >
00:20:36 v #21825 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:36 v #21826 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:36 v #21827 > > │ ### (~:>) view                                                               │
00:20:36 v #21828 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:36 v #21829 > >
00:20:36 v #21830 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:36 v #21831 > > instance (~:>) view = fun x =>
00:20:36 v #21832 > >     real
00:20:36 v #21833 > >         typecase t with
00:20:36 v #21834 > >         | view' (html_element _) => element_to_view x
00:20:36 v #21835 > >         | _ => x
00:20:36 v #21836 > >
00:20:36 v #21837 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:36 v #21838 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:36 v #21839 > > │ ### view_trait_to_element                                                    │
00:20:36 v #21840 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:36 v #21841 > >
00:20:36 v #21842 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:36 v #21843 > > inl view_trait_to_element (view : rust.impl into_view) : view' (html_element _)
00:20:36 v #21844 > > =
00:20:36 v #21845 > >     $'!view |> unbox'
00:20:37 v #21846 > >
00:20:37 v #21847 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:37 v #21848 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:37 v #21849 > > │ ### view_trait_to_route_definition                                           │
00:20:37 v #21850 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:37 v #21851 > >
00:20:37 v #21852 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:37 v #21853 > > inl view_trait_to_route_definition (view : rust.impl into_view) :
00:20:37 v #21854 > > route_definition =
00:20:37 v #21855 > >     $'!view |> unbox'
00:20:37 v #21856 > >
00:20:37 v #21857 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:37 v #21858 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:37 v #21859 > > │ ### to_element_view                                                          │
00:20:37 v #21860 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:37 v #21861 > >
00:20:37 v #21862 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:37 v #21863 > > inl to_element_view (view : view' (html_element _)) : rust.impl into_view =
00:20:37 v #21864 > >     $'!view |> unbox'
00:20:37 v #21865 > >
00:20:37 v #21866 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:37 v #21867 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:37 v #21868 > > │ ### to_view_trait                                                            │
00:20:37 v #21869 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:37 v #21870 > >
00:20:37 v #21871 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:37 v #21872 > > inl to_view_trait (view : view) : rust.impl into_view =
00:20:37 v #21873 > >     $'!view |> unbox'
00:20:38 v #21874 > >
00:20:38 v #21875 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:38 v #21876 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:38 v #21877 > > │ ### to_fragment_unbox                                                        │
00:20:38 v #21878 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:38 v #21879 > >
00:20:38 v #21880 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:38 v #21881 > > inl to_fragment_unbox view : fragment =
00:20:38 v #21882 > >     $'!view |> unbox'
00:20:38 v #21883 > >
00:20:38 v #21884 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:38 v #21885 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:38 v #21886 > > │ ### from_fragment_unbox                                                      │
00:20:38 v #21887 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:38 v #21888 > >
00:20:38 v #21889 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:38 v #21890 > > inl from_fragment_unbox (fragment : fragment) =
00:20:38 v #21891 > >     $'!fragment |> unbox'
00:20:39 v #21892 > >
00:20:39 v #21893 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:39 v #21894 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:39 v #21895 > > │ ### element_to_view_trait                                                    │
00:20:39 v #21896 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:39 v #21897 > >
00:20:39 v #21898 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:39 v #21899 > > inl element_to_view_trait (macro : view' (html_element _)) : rust.impl into_view
00:20:39 v #21900 > > =
00:20:39 v #21901 > >     global "Fable.Core.RustInterop.emitRustExpr () \");\nuse
00:20:39 v #21902 > > leptos::prelude::ElementChild;\n//\""
00:20:39 v #21903 > >     !\($'"leptos::prelude::view\! { {!macro} }"')
00:20:39 v #21904 > >
00:20:39 v #21905 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:39 v #21906 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:39 v #21907 > > │ ### macro_to_view_trait                                                      │
00:20:39 v #21908 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:39 v #21909 > >
00:20:39 v #21910 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:39 v #21911 > > inl macro_to_view_trait (macro : string) : rust.impl into_view =
00:20:39 v #21912 > >     global "Fable.Core.RustInterop.emitRustExpr () \");\nuse
00:20:39 v #21913 > > leptos::prelude::ElementChild;\n//\""
00:20:39 v #21914 > >     global "Fable.Core.RustInterop.emitRustExpr () \");\nuse
00:20:39 v #21915 > > leptos::prelude::ClassAttribute;\n//\""
00:20:39 v #21916 > >     !\($'"leptos::prelude::view\! { " + !macro + " }"')
00:20:39 v #21917 > >
00:20:39 v #21918 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:39 v #21919 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:39 v #21920 > > │ ### macro_to_fragment                                                        │
00:20:39 v #21921 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:39 v #21922 > >
00:20:39 v #21923 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:39 v #21924 > > inl macro_to_fragment (macro : string) : fragment =
00:20:39 v #21925 > >     global "Fable.Core.RustInterop.emitRustExpr () \");\nuse
00:20:39 v #21926 > > leptos::prelude::ElementChild;\n//\""
00:20:39 v #21927 > >     !\($'"leptos::prelude::view\! { " + !macro + " }"')
00:20:40 v #21928 > >
00:20:40 v #21929 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:40 v #21930 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:40 v #21931 > > │ ### new_transparent                                                          │
00:20:40 v #21932 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:40 v #21933 > >
00:20:40 v #21934 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:40 v #21935 > > inl new_transparent x : transparent =
00:20:40 v #21936 > >     !\\(x, $'"leptos::leptos_dom::Transparent::new($0)"')
00:20:40 v #21937 > >
00:20:40 v #21938 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:40 v #21939 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:40 v #21940 > > │ ### closure_to_view                                                          │
00:20:40 v #21941 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:40 v #21942 > >
00:20:40 v #21943 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:40 v #21944 > > inl closure_to_view (closure : rust.func0 view) : view =
00:20:40 v #21945 > >     !\($'"leptos::prelude::IntoAny::into_any(move || !closure())"')
00:20:41 v #21946 > >
00:20:41 v #21947 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:41 v #21948 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:41 v #21949 > > │ ### batch                                                                    │
00:20:41 v #21950 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:41 v #21951 > >
00:20:41 v #21952 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:41 v #21953 > > inl batch (fn : () -> ()) : () =
00:20:41 v #21954 > >     (!\\(fn, $'"true; leptos::prelude::batch(move || $0());"') : bool) |> ignore
00:20:41 v #21955 > >
00:20:41 v #21956 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:41 v #21957 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:41 v #21958 > > │ ### closure_to_fragment                                                      │
00:20:41 v #21959 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:41 v #21960 > >
00:20:41 v #21961 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:41 v #21962 > > inl closure_to_fragment (closure : rust.func0 fragment) : fragment =
00:20:41 v #21963 > >     inl closure = closure |> rust.func0_move
00:20:41 v #21964 > >     !\($'"leptos::prelude::IntoAny::into_any(!closure)"')
00:20:41 v #21965 > >     |> view_to_fragment
00:20:41 v #21966 > >
00:20:41 v #21967 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:41 v #21968 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:41 v #21969 > > │ ### array_to_view                                                            │
00:20:41 v #21970 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:41 v #21971 > >
00:20:41 v #21972 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:41 v #21973 > > inl array_to_view (view : a _ view) : view =
00:20:41 v #21974 > >     inl view = view |> am'.base
00:20:41 v #21975 > >     !\\(view, $'"leptos::prelude::CollectView::collect_view($0)"')
00:20:42 v #21976 > >
00:20:42 v #21977 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:42 v #21978 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:42 v #21979 > > │ ### to_fragment                                                              │
00:20:42 v #21980 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:42 v #21981 > >
00:20:42 v #21982 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:42 v #21983 > > inl to_fragment x : fragment =
00:20:42 v #21984 > >     $'!x |> unbox'
00:20:42 v #21985 > >
00:20:42 v #21986 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:42 v #21987 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:42 v #21988 > > │ ### text_to_view                                                             │
00:20:42 v #21989 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:42 v #21990 > >
00:20:42 v #21991 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:42 v #21992 > > inl text_to_view (text : string) : view =
00:20:42 v #21993 > >     inl text = text |> sm'.to_std_string
00:20:42 v #21994 > >     !\\(text,
00:20:42 v #21995 > > $'"leptos::prelude::IntoAny::into_any(leptos::prelude::IntoView::into_view($0))"
00:20:42 v #21996 > > ')
00:20:43 v #21997 > >
00:20:43 v #21998 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:43 v #21999 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:43 v #22000 > > │ ### text_to_fragment                                                         │
00:20:43 v #22001 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:43 v #22002 > >
00:20:43 v #22003 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:43 v #22004 > > inl text_to_fragment (text : string) : fragment =
00:20:43 v #22005 > >     text
00:20:43 v #22006 > >     |> text_to_view
00:20:43 v #22007 > >     |> view_to_fragment
00:20:43 v #22008 > >
00:20:43 v #22009 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:43 v #22010 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:43 v #22011 > > │ ### macro_to_view                                                            │
00:20:43 v #22012 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:43 v #22013 > >
00:20:43 v #22014 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:43 v #22015 > > inl macro_to_view (macro : string) : view =
00:20:43 v #22016 > >     global "Fable.Core.RustInterop.emitRustExpr () \");\nuse
00:20:43 v #22017 > > leptos::prelude::ElementChild;\n//\""
00:20:43 v #22018 > >     !\($'"leptos::prelude::IntoAny::into_any(leptos::prelude::view\! { " +
00:20:43 v #22019 > > !macro + " })"')
00:20:43 v #22020 > >
00:20:43 v #22021 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:43 v #22022 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:43 v #22023 > > │ ### macro_to_view'                                                           │
00:20:43 v #22024 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:43 v #22025 > >
00:20:43 v #22026 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:43 v #22027 > > inl macro_to_view' (macro : string) : view' infer =
00:20:43 v #22028 > >     global "Fable.Core.RustInterop.emitRustExpr () \");\nuse
00:20:43 v #22029 > > leptos::prelude::ElementChild;\n//\""
00:20:43 v #22030 > >     !\($'"leptos::IntoView::into_view(leptos::prelude::view\! { " + !macro + "
00:20:43 v #22031 > > })"')
00:20:44 v #22032 > >
00:20:44 v #22033 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:44 v #22034 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:44 v #22035 > > │ ### macro_to_view''                                                          │
00:20:44 v #22036 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:44 v #22037 > >
00:20:44 v #22038 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:44 v #22039 > > inl macro_to_view'' (macro : string) : view' infer =
00:20:44 v #22040 > >     global "Fable.Core.RustInterop.emitRustExpr () \");\nuse
00:20:44 v #22041 > > leptos::prelude::ElementChild;\n//\""
00:20:44 v #22042 > >     !\($'"leptos::prelude::view\! { " + !macro + " }"')
00:20:44 v #22043 > >
00:20:44 v #22044 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:44 v #22045 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:44 v #22046 > > │ ### macro_to_view'''                                                         │
00:20:44 v #22047 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:44 v #22048 > >
00:20:44 v #22049 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:44 v #22050 > > inl macro_to_view''' (macro : string) : view' _ =
00:20:44 v #22051 > >     global "Fable.Core.RustInterop.emitRustExpr () \");\nuse
00:20:44 v #22052 > > leptos::prelude::ElementChild;\n//\""
00:20:44 v #22053 > >     !\($'"leptos::IntoView::into_view(leptos::prelude::view\! { " + !macro + "
00:20:44 v #22054 > > })"')
00:20:45 v #22055 > >
00:20:45 v #22056 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:45 v #22057 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:45 v #22058 > > │ ### into_any_view                                                            │
00:20:45 v #22059 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:45 v #22060 > >
00:20:45 v #22061 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:45 v #22062 > > inl into_any_view (view : view' _) : view =
00:20:45 v #22063 > >     !\\(view, $'"leptos::prelude::IntoAny::into_any($0)"')
00:20:45 v #22064 > >
00:20:45 v #22065 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:45 v #22066 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:45 v #22067 > > │ ### into_any_view'                                                           │
00:20:45 v #22068 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:45 v #22069 > >
00:20:45 v #22070 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:45 v #22071 > > inl into_any_view' (view : view' _) : view =
00:20:45 v #22072 > >     !\\(view, $'"&leptos::prelude::IntoAny::into_any($0)"')
00:20:45 v #22073 > >
00:20:45 v #22074 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:45 v #22075 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:45 v #22076 > > │ ### transparent_to_view                                                      │
00:20:45 v #22077 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:45 v #22078 > >
00:20:45 v #22079 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:45 v #22080 > > inl transparent_to_view (transparent : transparent) : view =
00:20:45 v #22081 > >     !\\(transparent, $'"leptos::prelude::IntoAny::into_any($0)"')
00:20:46 v #22082 > >
00:20:46 v #22083 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:46 v #22084 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:46 v #22085 > > │ ### transparent_to_fragment                                                  │
00:20:46 v #22086 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:46 v #22087 > >
00:20:46 v #22088 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:46 v #22089 > > inl transparent_to_fragment (transparent : transparent) : fragment =
00:20:46 v #22090 > >     transparent
00:20:46 v #22091 > >     |> transparent_to_view
00:20:46 v #22092 > >     |> view_to_fragment
00:20:46 v #22093 > >
00:20:46 v #22094 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:46 v #22095 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:46 v #22096 > > │ ### macro_to_element                                                         │
00:20:46 v #22097 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:46 v #22098 > >
00:20:46 v #22099 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:46 v #22100 > > inl macro_to_element (view : string) : view' (html_element _) =
00:20:46 v #22101 > >     view |> macro_to_view_trait |> view_trait_to_element
00:20:47 v #22102 > >
00:20:47 v #22103 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:47 v #22104 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:47 v #22105 > > │ ### transparents_fragment                                                    │
00:20:47 v #22106 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:47 v #22107 > >
00:20:47 v #22108 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:47 v #22109 > > inl transparents_fragment (items : array_base transparent) : fragment =
00:20:47 v #22110 > >     inl items = items |> am'.to_vec
00:20:47 v #22111 > >     !\\((items, transparent_to_view), $'"$0.iter().map(|x|
00:20:47 v #22112 > > $1(x.clone())).collect::<Fragment>()"')
00:20:47 v #22113 > >
00:20:47 v #22114 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:47 v #22115 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:47 v #22116 > > │ ### views_to_view                                                            │
00:20:47 v #22117 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:47 v #22118 > >
00:20:47 v #22119 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:47 v #22120 > > inl views_to_view (items : array_base view) : view =
00:20:47 v #22121 > >     inl items = join items
00:20:47 v #22122 > >     items
00:20:47 v #22123 > >     // |> fun x => a (join x) : a u64 _
00:20:47 v #22124 > >     |> fun x => a x : a u64 _
00:20:47 v #22125 > >     |> array_to_view
00:20:47 v #22126 > >
00:20:47 v #22127 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:47 v #22128 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:47 v #22129 > > │ ### new_text                                                                 │
00:20:47 v #22130 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:47 v #22131 > >
00:20:47 v #22132 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:47 v #22133 > > inl new_text (text : string) : text =
00:20:47 v #22134 > >     !\\(text, $'"leptos::tachys::renderer::dom::Dom::create_text_node(&*$0)"')
00:20:48 v #22135 > >
00:20:48 v #22136 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:48 v #22137 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:48 v #22138 > > │ ### text_view                                                                │
00:20:48 v #22139 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:48 v #22140 > >
00:20:48 v #22141 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:48 v #22142 > > inl text_view (text : string) : view =
00:20:48 v #22143 > >     text
00:20:48 v #22144 > >     |> text_to_view
00:20:48 v #22145 > >
00:20:48 v #22146 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:48 v #22147 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:48 v #22148 > > │ ### text_fragment                                                            │
00:20:48 v #22149 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:48 v #22150 > >
00:20:48 v #22151 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:48 v #22152 > > inl text_fragment (text : string) : fragment =
00:20:48 v #22153 > >     text
00:20:48 v #22154 > >     |> text_view
00:20:48 v #22155 > >     |> view_to_fragment
00:20:49 v #22156 > >
00:20:49 v #22157 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:49 v #22158 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:49 v #22159 > > │ ### provide_meta_context                                                     │
00:20:49 v #22160 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:49 v #22161 > >
00:20:49 v #22162 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:49 v #22163 > > inl provide_meta_context () =
00:20:49 v #22164 > >     (!\($'"true; leptos_meta::provide_meta_context()"') : bool) |> ignore
00:20:49 v #22165 > >
00:20:49 v #22166 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:49 v #22167 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:49 v #22168 > > │ ### provide_context                                                          │
00:20:49 v #22169 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:49 v #22170 > >
00:20:49 v #22171 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:49 v #22172 > > inl provide_context forall t. (x : t) =
00:20:49 v #22173 > >     (!\\(x, $'$"true;
00:20:49 v #22174 > > leptos::context::provide_context::<std::sync::Arc<`t>>($0)"') : bool) |> ignore
00:20:49 v #22175 > >
00:20:49 v #22176 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:49 v #22177 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:49 v #22178 > > │ ### create_signal                                                            │
00:20:49 v #22179 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:49 v #22180 > >
00:20:49 v #22181 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:49 v #22182 > > inl create_signal forall t. (value : t) : read_signal t * write_signal t =
00:20:49 v #22183 > >     !\\(value, $'$"leptos::prelude::signal($0)"')
00:20:50 v #22184 > >
00:20:50 v #22185 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:50 v #22186 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:50 v #22187 > > │ ### create_rw_signal                                                         │
00:20:50 v #22188 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:50 v #22189 > >
00:20:50 v #22190 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:50 v #22191 > > inl create_rw_signal forall t. (value : t) : rw_signal t =
00:20:50 v #22192 > >     !\\(value, $'$"leptos::prelude::RwSignal::new($0)"')
00:20:50 v #22193 > >
00:20:50 v #22194 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:50 v #22195 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:50 v #22196 > > │ ### read_only                                                                │
00:20:50 v #22197 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:50 v #22198 > >
00:20:50 v #22199 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:50 v #22200 > > inl read_only forall t. (value : rw_signal t) : read_signal t =
00:20:50 v #22201 > >     !\\(value, $'$"leptos::prelude::RwSignal::read_only(&$0)"')
00:20:51 v #22202 > >
00:20:51 v #22203 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:51 v #22204 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:51 v #22205 > > │ ### write_only                                                               │
00:20:51 v #22206 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:51 v #22207 > >
00:20:51 v #22208 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:51 v #22209 > > inl write_only forall t. (value : rw_signal t) : write_signal t =
00:20:51 v #22210 > >     !\\(value, $'$"leptos::prelude::RwSignal::write_only(&$0)"')
00:20:51 v #22211 > >
00:20:51 v #22212 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:51 v #22213 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:51 v #22214 > > │ ### typecheck_signal                                                         │
00:20:51 v #22215 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:51 v #22216 > >
00:20:51 v #22217 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:51 v #22218 > > inl typecheck_signal forall (t : * -> *) u. (signal : t u) : () =
00:20:51 v #22219 > >     real
00:20:51 v #22220 > >         typecase t with
00:20:51 v #22221 > >         | signal => ()
00:20:51 v #22222 > >         | rw_signal => ()
00:20:51 v #22223 > >         | read_signal => ()
00:20:51 v #22224 > >         | write_signal => ()
00:20:51 v #22225 > >         | memo => ()
00:20:51 v #22226 > >         | _ => error_type `(()) ("invalid signal", ``(t u))
00:20:52 v #22227 > >
00:20:52 v #22228 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:52 v #22229 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:52 v #22230 > > │ ### memo_get'                                                                │
00:20:52 v #22231 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:52 v #22232 > >
00:20:52 v #22233 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:52 v #22234 > > inl memo_get' forall t. (memo : memo t) : t =
00:20:52 v #22235 > >     !\\(memo, $'$"$0()"')
00:20:52 v #22236 > >
00:20:52 v #22237 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:52 v #22238 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:52 v #22239 > > │ ### signal_get'                                                              │
00:20:52 v #22240 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:52 v #22241 > >
00:20:52 v #22242 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:52 v #22243 > > inl signal_get' forall (t : * -> *) u. (signal : t u) : u =
00:20:52 v #22244 > >     signal |> typecheck_signal
00:20:52 v #22245 > >     !\\(signal, $'$"leptos::prelude::SignalGet::get(&$0)"')
00:20:52 v #22246 > >
00:20:52 v #22247 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:52 v #22248 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:52 v #22249 > > │ ### signal_get signal                                                        │
00:20:52 v #22250 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:52 v #22251 > >
00:20:52 v #22252 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:52 v #22253 > > instance signal_get signal = signal_get'
00:20:53 v #22254 > >
00:20:53 v #22255 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:53 v #22256 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:53 v #22257 > > │ ### signal_get rw_signal                                                     │
00:20:53 v #22258 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:53 v #22259 > >
00:20:53 v #22260 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:53 v #22261 > > instance signal_get rw_signal = signal_get'
00:20:53 v #22262 > >
00:20:53 v #22263 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:53 v #22264 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:53 v #22265 > > │ ### signal_get read_signal                                                   │
00:20:53 v #22266 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:53 v #22267 > >
00:20:53 v #22268 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:53 v #22269 > > instance signal_get read_signal = signal_get'
00:20:54 v #22270 > >
00:20:54 v #22271 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:54 v #22272 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:54 v #22273 > > │ ### signal_get memo                                                          │
00:20:54 v #22274 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:54 v #22275 > >
00:20:54 v #22276 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:54 v #22277 > > instance signal_get memo = memo_get'
00:20:54 v #22278 > >
00:20:54 v #22279 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:54 v #22280 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:54 v #22281 > > │ ### signal_update'                                                           │
00:20:54 v #22282 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:54 v #22283 > >
00:20:54 v #22284 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:54 v #22285 > > inl signal_update' forall (t : * -> *) u. (fn : u -> u) (signal : t u) : () =
00:20:54 v #22286 > >     signal |> typecheck_signal
00:20:54 v #22287 > >     (!\\((signal, fn), $'"true; leptos::prelude::SignalUpdate::update(&$0, |x| {
00:20:54 v #22288 > > *x = $1(x.clone()) });"') : bool) |> ignore
00:20:54 v #22289 > >
00:20:54 v #22290 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:54 v #22291 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:54 v #22292 > > │ ### signal_update rw_signal                                                  │
00:20:54 v #22293 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:54 v #22294 > >
00:20:54 v #22295 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:54 v #22296 > > instance signal_update rw_signal = signal_update'
00:20:55 v #22297 > >
00:20:55 v #22298 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:55 v #22299 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:55 v #22300 > > │ ### signal_update write_signal                                               │
00:20:55 v #22301 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:55 v #22302 > >
00:20:55 v #22303 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:55 v #22304 > > instance signal_update write_signal = signal_update'
00:20:55 v #22305 > >
00:20:55 v #22306 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:55 v #22307 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:55 v #22308 > > │ ### signal_get_untracked'                                                    │
00:20:55 v #22309 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:55 v #22310 > >
00:20:55 v #22311 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:55 v #22312 > > inl signal_get_untracked' forall (t : * -> *) u. (signal : t u) : u =
00:20:55 v #22313 > >     signal |> typecheck_signal
00:20:55 v #22314 > >     !\\(signal, $'$"leptos::prelude::SignalGetUntracked::get_untracked(&$0)"')
00:20:56 v #22315 > >
00:20:56 v #22316 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:56 v #22317 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:56 v #22318 > > │ ### signal_get_untracked rw_signal                                           │
00:20:56 v #22319 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:56 v #22320 > >
00:20:56 v #22321 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:56 v #22322 > > instance signal_get_untracked rw_signal = signal_get_untracked'
00:20:56 v #22323 > >
00:20:56 v #22324 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:56 v #22325 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:56 v #22326 > > │ ### signal_get_untracked read_signal                                         │
00:20:56 v #22327 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:56 v #22328 > >
00:20:56 v #22329 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:56 v #22330 > > instance signal_get_untracked read_signal = signal_get_untracked'
00:20:56 v #22331 > >
00:20:56 v #22332 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:56 v #22333 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:56 v #22334 > > │ ### signal_get_untracked memo                                                │
00:20:56 v #22335 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:56 v #22336 > >
00:20:56 v #22337 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:56 v #22338 > > instance signal_get_untracked memo = signal_get_untracked'
00:20:57 v #22339 > >
00:20:57 v #22340 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:57 v #22341 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:57 v #22342 > > │ ### signal_set'                                                              │
00:20:57 v #22343 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:57 v #22344 > >
00:20:57 v #22345 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:57 v #22346 > > inl signal_set' forall (t : * -> *) u. (value : u) (signal : t u) =
00:20:57 v #22347 > >     signal |> typecheck_signal
00:20:57 v #22348 > >     (!\\((signal, value), $'$"true; leptos::prelude::SignalSet::set(&$0, $1);"')
00:20:57 v #22349 > > : bool) |> ignore
00:20:57 v #22350 > >
00:20:57 v #22351 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:57 v #22352 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:57 v #22353 > > │ ### signal_set rw_signal                                                     │
00:20:57 v #22354 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:57 v #22355 > >
00:20:57 v #22356 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:57 v #22357 > > instance signal_set rw_signal = signal_set'
00:20:58 v #22358 > >
00:20:58 v #22359 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:58 v #22360 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:58 v #22361 > > │ ### signal_set write_signal                                                  │
00:20:58 v #22362 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:58 v #22363 > >
00:20:58 v #22364 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:58 v #22365 > > instance signal_set write_signal = signal_set'
00:20:58 v #22366 > >
00:20:58 v #22367 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:58 v #22368 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:58 v #22369 > > │ ### create_local_resource                                                    │
00:20:58 v #22370 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:58 v #22371 > >
00:20:58 v #22372 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:58 v #22373 > > inl create_local_resource forall t u.
00:20:58 v #22374 > >     (source : () -> t)
00:20:58 v #22375 > >     (fetcher : t -> async.future_pin u)
00:20:58 v #22376 > >     : resource t u
00:20:58 v #22377 > >     =
00:20:58 v #22378 > >     // inl fetcher x = rust.move fun () =>
00:20:58 v #22379 > >     //    fetcher x
00:20:58 v #22380 > >     // inl fetcher = join fetcher
00:20:58 v #22381 > >     // !\($'"leptos::create_local_resource(move || !source(), move |x| async
00:20:58 v #22382 > > move { !fetcher(x)().await })"')
00:20:58 v #22383 > >
00:20:58 v #22384 > >     // ---
00:20:58 v #22385 > >
00:20:58 v #22386 > >     // inl fn x = async.new_future fun () =>
00:20:58 v #22387 > >     //     inl x' = fetcher x
00:20:58 v #22388 > >     //     x' |> async.await
00:20:58 v #22389 > >
00:20:58 v #22390 > >     // !\\((source, fn), $'"leptos::create_local_resource(move || $0(), |x|
00:20:58 v #22391 > > async move { $1(x).await })"')
00:20:58 v #22392 > >
00:20:58 v #22393 > >
00:20:58 v #22394 > >     join
00:20:58 v #22395 > >         !\\(source, $'"let __create_local_resource =
00:20:58 v #22396 > > leptos::prelude::create_local_resource(move || $0(), |x| async move { //"')
00:20:58 v #22397 > >
00:20:58 v #22398 > >         inl x = !\($'"x"')
00:20:58 v #22399 > >         inl x' = fetcher x
00:20:58 v #22400 > >         inl x' = join x'
00:20:58 v #22401 > >         inl x' = x' |> async.await
00:20:58 v #22402 > >
00:20:58 v #22403 > >         inl closure_fix = 2u8, 1u8
00:20:58 v #22404 > >         x' |> rust.fix_closure closure_fix
00:20:58 v #22405 > >
00:20:58 v #22406 > >         !\($'"__create_local_resource"')
00:20:59 v #22407 > >
00:20:59 v #22408 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:59 v #22409 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:59 v #22410 > > │ ### create_resource                                                          │
00:20:59 v #22411 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:59 v #22412 > >
00:20:59 v #22413 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:59 v #22414 > > // inl create_resource forall t u. (source : () -> t) (fetcher : t ->
00:20:59 v #22415 > > async.future_pin u) : resource t u =
00:20:59 v #22416 > > //     inl source = join source
00:20:59 v #22417 > > //     !\\(fetcher, $'"leptos::create_resource(move || !source(), |x| async move
00:20:59 v #22418 > > { $0(x).await })"')
00:20:59 v #22419 > >
00:20:59 v #22420 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:59 v #22421 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:59 v #22422 > > │ ### create_action                                                            │
00:20:59 v #22423 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:59 v #22424 > >
00:20:59 v #22425 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:59 v #22426 > > inl create_action forall t u. (action_fn : t -> async.future_pin u) : action t u
00:20:59 v #22427 > > =
00:20:59 v #22428 > >     !\\(action_fn |> rust.box_pin,
00:20:59 v #22429 > > $'"leptos::prelude::Action::new(*std::sync::Arc::new(move |value:
00:20:59 v #22430 > > &std::sync::Arc<`t>| $0(value.clone())))"')
00:20:59 v #22431 > >
00:20:59 v #22432 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:59 v #22433 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:59 v #22434 > > │ ### action_dispatch                                                          │
00:20:59 v #22435 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:59 v #22436 > >
00:20:59 v #22437 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:59 v #22438 > > inl action_dispatch forall t u. (value : heap t) (action : action (heap t) u) :
00:20:59 v #22439 > > () =
00:20:59 v #22440 > >     (!\\((action, value), $'"true; leptos::prelude::Action::dispatch(&$0,
00:20:59 v #22441 > > $1.clone())"') : bool) |> ignore
00:21:00 v #22442 > >
00:21:00 v #22443 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:00 v #22444 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:21:00 v #22445 > > │ ### action_input                                                             │
00:21:00 v #22446 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:21:00 v #22447 > >
00:21:00 v #22448 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:00 v #22449 > > inl action_input forall t u. (action : action (heap t) u) : rw_signal
00:21:00 v #22450 > > (optionm'.option' t) =
00:21:00 v #22451 > >     !\\(action, $'"leptos::prelude::Action::input(&$0)"')
00:21:00 v #22452 > >
00:21:00 v #22453 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:00 v #22454 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:21:00 v #22455 > > │ ### action_pending                                                           │
00:21:00 v #22456 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:21:00 v #22457 > >
00:21:00 v #22458 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:00 v #22459 > > inl action_pending forall t u. (action : action (heap t) u) : read_signal bool =
00:21:00 v #22460 > >     !\\(action, $'"leptos::prelude::Action::pending(&$0)"')
00:21:01 v #22461 > >
00:21:01 v #22462 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:01 v #22463 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:21:01 v #22464 > > │ ### action_value                                                             │
00:21:01 v #22465 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:21:01 v #22466 > >
00:21:01 v #22467 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:01 v #22468 > > inl action_value forall t u. (action : action (heap t) u) : rw_signal
00:21:01 v #22469 > > (optionm'.option' u) =
00:21:01 v #22470 > >     !\\(action, $'"leptos::prelude::Action::value(&$0)"')
00:21:01 v #22471 > >
00:21:01 v #22472 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:01 v #22473 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:21:01 v #22474 > > │ ### use_context                                                              │
00:21:01 v #22475 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:21:01 v #22476 > >
00:21:01 v #22477 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:01 v #22478 > > inl use_context forall t. () : optionm'.option' t =
00:21:01 v #22479 > >     !\($'"leptos::context::use_context::<std::sync::Arc<`t>>()"')
00:21:01 v #22480 > >
00:21:01 v #22481 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:01 v #22482 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:21:01 v #22483 > > │ ### resource_loading                                                         │
00:21:01 v #22484 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:21:01 v #22485 > >
00:21:01 v #22486 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:01 v #22487 > > inl resource_loading forall t u. (resource : resource t u) : signal bool =
00:21:01 v #22488 > >     !\\(resource, $'$"leptos::prelude::loading(&$0)"')
00:21:02 v #22489 > >
00:21:02 v #22490 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:02 v #22491 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:21:02 v #22492 > > │ ### resource_get                                                             │
00:21:02 v #22493 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:21:02 v #22494 > >
00:21:02 v #22495 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:02 v #22496 > > inl resource_get forall t u. (resource : resource t u) : optionm'.option' u =
00:21:02 v #22497 > >     !\\(resource, $'$"leptos::prelude::SignalGet::get(&$0)"')
00:21:02 v #22498 > >
00:21:02 v #22499 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:02 v #22500 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:21:02 v #22501 > > │ ### resource_with                                                            │
00:21:02 v #22502 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:21:02 v #22503 > >
00:21:02 v #22504 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:02 v #22505 > > inl resource_with forall t u v. (resource : resource t u) (fn : optionm'.option'
00:21:02 v #22506 > > u -> v) : v =
00:21:02 v #22507 > >     !\\((resource, fn), $'$"leptos::prelude::SignalWith::with(&$0, |x|
00:21:02 v #22508 > > $1(x.clone()))"')
00:21:03 v #22509 > >
00:21:03 v #22510 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:03 v #22511 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:21:03 v #22512 > > │ ### create_effect                                                            │
00:21:03 v #22513 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:21:03 v #22514 > >
00:21:03 v #22515 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:03 v #22516 > > inl create_effect (fn : () -> ()) : () =
00:21:03 v #22517 > >     inl fn = fn |> rust.emit
00:21:03 v #22518 > >     (!\($'"true; leptos::prelude::Effect::new(move |_| { !fn(()) })"') : bool)
00:21:03 v #22519 > > |> ignore
00:21:03 v #22520 > >
00:21:03 v #22521 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:03 v #22522 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:21:03 v #22523 > > │ ### create_effect'                                                           │
00:21:03 v #22524 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:21:03 v #22525 > >
00:21:03 v #22526 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:03 v #22527 > > inl create_effect' forall t. (fn : optionm'.option' t -> t) : () =
00:21:03 v #22528 > >     (!\\(fn, $'"true; leptos::prelude::Effect::new(move |x| { $0(x) })"') :
00:21:03 v #22529 > > bool) |> ignore
00:21:03 v #22530 > >
00:21:03 v #22531 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:03 v #22532 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:21:03 v #22533 > > │ ### interval_handle_clear                                                    │
00:21:03 v #22534 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:21:03 v #22535 > >
00:21:03 v #22536 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:03 v #22537 > > inl interval_handle_clear (interval_handle : interval_handle) =
00:21:03 v #22538 > >     (!\\(interval_handle, $'$"true;
00:21:03 v #22539 > > leptos::leptos_dom::helpers::IntervalHandle::clear(&$0)"') : bool) |> ignore
00:21:04 v #22540 > >
00:21:04 v #22541 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:04 v #22542 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:21:04 v #22543 > > │ ### set_interval_with_handle                                                 │
00:21:04 v #22544 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:21:04 v #22545 > >
00:21:04 v #22546 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:04 v #22547 > > inl set_interval_with_handle
00:21:04 v #22548 > >     (fn : () -> ())
00:21:04 v #22549 > >     (interval_millis : date_time.duration)
00:21:04 v #22550 > >     : resultm.result' interval_handle wasm.js_value
00:21:04 v #22551 > >     =
00:21:04 v #22552 > >     !\\((fn, interval_millis), $'$"leptos::set_interval_with_handle(move ||
00:21:04 v #22553 > > $0(), $1)"')
00:21:04 v #22554 > >
00:21:04 v #22555 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:04 v #22556 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:21:04 v #22557 > > │ ### create_memo                                                              │
00:21:04 v #22558 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:21:04 v #22559 > >
00:21:04 v #22560 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:04 v #22561 > > inl create_memo forall t. (fn : () -> t) : memo t =
00:21:04 v #22562 > >     inl fn = fn |> rust.emit
00:21:04 v #22563 > >     !\($'"leptos::prelude::Memo::new(move |_| { !fn(()) })"')
00:21:05 v #22564 > >
00:21:05 v #22565 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:05 v #22566 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:21:05 v #22567 > > │ ### window                                                                   │
00:21:05 v #22568 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:21:05 v #22569 > >
00:21:05 v #22570 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:05 v #22571 > > let window () : wasm.window =
00:21:05 v #22572 > >     !\($'"leptos::leptos_dom::window()"')
00:21:05 v #22573 > >
00:21:05 v #22574 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:05 v #22575 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:21:05 v #22576 > > │ ### bool_prop                                                                │
00:21:05 v #22577 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:21:05 v #22578 > >
00:21:05 v #22579 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:05 v #22580 > > inl bool_prop (prop : string) (fn : () -> bool) : string =
00:21:05 v #22581 > >     inl fn = join fn
00:21:05 v #22582 > >     $'"" + !prop + "={move || !fn()}"'
00:21:05 v #22583 > >
00:21:05 v #22584 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:05 v #22585 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:21:05 v #22586 > > │ ### concat_props                                                             │
00:21:05 v #22587 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:21:05 v #22588 > >
00:21:05 v #22589 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:05 v #22590 > > inl concat_props props =
00:21:05 v #22591 > >     ("", props)
00:21:05 v #22592 > >     ||> listm.fold fun acc (x : string) =>
00:21:05 v #22593 > >         $'" " + !x + !acc + ""'
00:21:06 v #22594 > >
00:21:06 v #22595 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:06 v #22596 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:21:06 v #22597 > > │ ### move_to_fragment                                                         │
00:21:06 v #22598 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:21:06 v #22599 > >
00:21:06 v #22600 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:06 v #22601 > > inl move_to_fragment fn =
00:21:06 v #22602 > >     rust.move fn
00:21:06 v #22603 > >     |> closure_to_fragment
00:21:06 v #22604 > >
00:21:06 v #22605 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:06 v #22606 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:21:06 v #22607 > > │ ### tag_raw                                                                  │
00:21:06 v #22608 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:21:06 v #22609 > >
00:21:06 v #22610 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:06 v #22611 > > inl tag_raw tag props children =
00:21:06 v #22612 > >     global "Fable.Core.RustInterop.emitRustExpr () \");\nuse
00:21:06 v #22613 > > leptos::prelude::*;\n//\""
00:21:06 v #22614 > >     inl tag : string = tag
00:21:06 v #22615 > >     inl props = props |> concat_props
00:21:06 v #22616 > >     // inl children = children |> rust.move
00:21:06 v #22617 > >     inl children () =
00:21:06 v #22618 > >         children () |> rust.to_ref |> fragment_to_view'
00:21:06 v #22619 > >     inl children = join children
00:21:06 v #22620 > >     $'"<" + !tag + " " + !props + ">move || { !children() }</" + !tag + ">"'
00:21:07 v #22621 > >
00:21:07 v #22622 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:07 v #22623 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:21:07 v #22624 > > │ ### tag_element                                                              │
00:21:07 v #22625 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:21:07 v #22626 > >
00:21:07 v #22627 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:07 v #22628 > > inl tag_element tag props children : view' (html_element _) =
00:21:07 v #22629 > >     tag_raw tag props children
00:21:07 v #22630 > >     |> macro_to_element
00:21:07 v #22631 > >
00:21:07 v #22632 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:07 v #22633 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:21:07 v #22634 > > │ ### tag_closed_raw                                                           │
00:21:07 v #22635 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:21:07 v #22636 > >
00:21:07 v #22637 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:07 v #22638 > > inl tag_closed_raw tag props =
00:21:07 v #22639 > >     inl tag : string = tag
00:21:07 v #22640 > >     inl props = props |> concat_props
00:21:07 v #22641 > >     $'"<" + !tag + " " + !props + " />"'
00:21:08 v #22642 > >
00:21:08 v #22643 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:08 v #22644 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:21:08 v #22645 > > │ ### tag_closed                                                               │
00:21:08 v #22646 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:21:08 v #22647 > >
00:21:08 v #22648 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:08 v #22649 > > inl tag_closed tag props : view' (html_element _) =
00:21:08 v #22650 > >     tag_closed_raw tag props
00:21:08 v #22651 > >     |> macro_to_element
00:21:08 v #22652 > >
00:21:08 v #22653 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:08 v #22654 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:21:08 v #22655 > > │ ### for                                                                      │
00:21:08 v #22656 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:21:08 v #22657 > >
00:21:08 v #22658 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:08 v #22659 > > inl for props : view =
00:21:08 v #22660 > >     tag_closed_raw "leptos::prelude::For" props
00:21:08 v #22661 > >     |> macro_to_view
00:21:08 v #22662 > >
00:21:08 v #22663 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:08 v #22664 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:21:08 v #22665 > > │ ### for                                                                      │
00:21:08 v #22666 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:21:08 v #22667 > >
00:21:08 v #22668 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:08 v #22669 > > inl for forall t u (signal : * -> *).
00:21:08 v #22670 > >     (signal : signal (am'.vec t))
00:21:08 v #22671 > >     (key_fn : t -> u)
00:21:08 v #22672 > >     (children' : t -> fragment)
00:21:08 v #22673 > >     : view
00:21:08 v #22674 > >     =
00:21:08 v #22675 > >     inl signal = join signal
00:21:08 v #22676 > >     signal |> typecheck_signal
00:21:08 v #22677 > >     inl key_fn = join key_fn
00:21:08 v #22678 > >     inl children' = join children'
00:21:08 v #22679 > >     for [[
00:21:08 v #22680 > >         $'"each=!signal"'
00:21:08 v #22681 > >         $'"key=move |x| !key_fn(x.to_owned())"'
00:21:08 v #22682 > >         $'"let:x"'
00:21:08 v #22683 > >         $'"children=move |x| !children'(x)"'
00:21:08 v #22684 > >     ]]
00:21:09 v #22685 > >
00:21:09 v #22686 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:09 v #22687 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:21:09 v #22688 > > │ ### show                                                                     │
00:21:09 v #22689 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:21:09 v #22690 > >
00:21:09 v #22691 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:09 v #22692 > > inl show props : view =
00:21:09 v #22693 > >     tag_closed_raw "leptos::prelude::Show" props
00:21:09 v #22694 > >     |> macro_to_view
00:21:09 v #22695 > >
00:21:09 v #22696 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:09 v #22697 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:21:09 v #22698 > > │ ### show                                                                     │
00:21:09 v #22699 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:21:09 v #22700 > >
00:21:09 v #22701 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:09 v #22702 > > inl show (when_fn : () -> bool) (fallback : () -> view) (children : () ->
00:21:09 v #22703 > > fragment) : view =
00:21:09 v #22704 > >     inl when_fn = join when_fn
00:21:09 v #22705 > >     inl when_fn = join when_fn
00:21:09 v #22706 > >     inl fallback = join fallback
00:21:09 v #22707 > >     inl children = join children
00:21:09 v #22708 > >     show [[
00:21:09 v #22709 > >         $'"when=move || !when_fn()"'
00:21:09 v #22710 > >         $'"fallback=move || !fallback()"'
00:21:09 v #22711 > >         $'"children=std::rc::Rc::new(move || !children())"'
00:21:09 v #22712 > >     ]]
00:21:10 v #22713 > >
00:21:10 v #22714 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:10 v #22715 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:21:10 v #22716 > > │ ### use_location                                                             │
00:21:10 v #22717 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:21:10 v #22718 > >
00:21:10 v #22719 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:10 v #22720 > > inl use_location () : location =
00:21:10 v #22721 > >     !\($'"leptos_router::hooks::use_location()"')
00:21:10 v #22722 > >
00:21:10 v #22723 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:10 v #22724 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:21:10 v #22725 > > │ ### use_navigate                                                             │
00:21:10 v #22726 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:21:10 v #22727 > >
00:21:10 v #22728 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:10 v #22729 > > inl use_navigate () : string -> () =
00:21:10 v #22730 > >     inl navigate : threading.arc (rust.dyn' (rust.action_fn2 (rust.ref sm'.str)
00:21:10 v #22731 > > navigate_options)) =
00:21:10 v #22732 > >         !\($'"std::sync::Arc::new(leptos_router::hooks::use_navigate())"')
00:21:10 v #22733 > >     fun url =>
00:21:10 v #22734 > >         inl url = url |> sm'.as_str
00:21:10 v #22735 > >         !\\((navigate, url), $'"$0($1, Default::default())"')
00:21:10 v #22736 > >
00:21:10 v #22737 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:10 v #22738 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:21:10 v #22739 > > │ ### location_hash                                                            │
00:21:10 v #22740 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:21:10 v #22741 > >
00:21:10 v #22742 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:10 v #22743 > > inl location_hash (location : location) : memo sm'.std_string =
00:21:10 v #22744 > >     !\\(location, $'"$0.hash"')
00:21:11 v #22745 > >
00:21:11 v #22746 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:11 v #22747 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:21:11 v #22748 > > │ ### location_pathname                                                        │
00:21:11 v #22749 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:21:11 v #22750 > >
00:21:11 v #22751 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:11 v #22752 > > inl location_pathname (location : location) : memo sm'.std_string =
00:21:11 v #22753 > >     !\\(location, $'"$0.pathname"')
00:21:11 v #22754 > >
00:21:11 v #22755 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:11 v #22756 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:21:11 v #22757 > > │ ### location_search                                                          │
00:21:11 v #22758 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:21:11 v #22759 > >
00:21:11 v #22760 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:11 v #22761 > > inl location_search (location : location) : memo sm'.std_string =
00:21:11 v #22762 > >     !\\(location, $'"$0.search"')
00:21:12 v #22763 > >
00:21:12 v #22764 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:12 v #22765 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:21:12 v #22766 > > │ ### url_try_from                                                             │
00:21:12 v #22767 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:21:12 v #22768 > >
00:21:12 v #22769 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:12 v #22770 > > inl url_try_from (s : rust.ref sm'.str) : resultm.result' url sm'.std_string =
00:21:12 v #22771 > >     !\\(s, $'"leptos_router::location::Url::try_from($0)"')
00:21:12 v #22772 > >
00:21:12 v #22773 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:12 v #22774 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:21:12 v #22775 > > │ ### url_pathname                                                             │
00:21:12 v #22776 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:21:12 v #22777 > >
00:21:12 v #22778 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:12 v #22779 > > inl url_pathname (url : url) : sm'.std_string =
00:21:12 v #22780 > >     !\\(url, $'"$0.pathname"')
00:21:12 v #22781 > >
00:21:12 v #22782 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:12 v #22783 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:21:12 v #22784 > > │ ### use_url                                                                  │
00:21:12 v #22785 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:21:12 v #22786 > >
00:21:12 v #22787 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:12 v #22788 > > inl use_url () =
00:21:12 v #22789 > >     inl location = use_location ()
00:21:12 v #22790 > >
00:21:12 v #22791 > >     create_memo fun () =>
00:21:12 v #22792 > >         inl url_pathname = location |> location_pathname |> signal_get |>
00:21:12 v #22793 > > sm'.from_std_string
00:21:12 v #22794 > >         inl url_search = location |> location_search |> signal_get |>
00:21:12 v #22795 > > sm'.from_std_string
00:21:12 v #22796 > >         inl url_search =
00:21:12 v #22797 > >             if url_search = ""
00:21:12 v #22798 > >             then ""
00:21:12 v #22799 > >             else $'$"?{!url_search}"'
00:21:12 v #22800 > >         url_pathname +. url_search
00:21:13 v #22801 > >
00:21:13 v #22802 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:13 v #22803 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:21:13 v #22804 > > │ ### route                                                                    │
00:21:13 v #22805 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:21:13 v #22806 > >
00:21:13 v #22807 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:13 v #22808 > > inl route path view children : view' nested_route =
00:21:13 v #22809 > >     inl path = path |> sm'.to_std_string
00:21:13 v #22810 > >     inl path = join path
00:21:13 v #22811 > >     // inl view = view |> rust.move
00:21:13 v #22812 > >     inl view () =
00:21:13 v #22813 > >         view () |> fragment_to_view
00:21:13 v #22814 > >     inl view = join view
00:21:13 v #22815 > >     tag_closed_raw "leptos_router::components::ParentRoute" [[
00:21:13 v #22816 > >         $'"path=leptos_router_macro::path\!(!path)"'
00:21:13 v #22817 > >         $'"view= move || !view()"'
00:21:13 v #22818 > >         $'"children=Box::new(move || !children())"'
00:21:13 v #22819 > >     ]]
00:21:13 v #22820 > >     |> macro_to_view'''
00:21:13 v #22821 > >
00:21:13 v #22822 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:13 v #22823 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:21:13 v #22824 > > │ ### macro_to_view                                                            │
00:21:13 v #22825 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:21:13 v #22826 > >
00:21:13 v #22827 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:13 v #22828 > > inl macro_to_view (macro : string) : view =
00:21:13 v #22829 > >     global "Fable.Core.RustInterop.emitRustExpr () \");\nuse
00:21:13 v #22830 > > leptos::prelude::ElementChild;\n//\""
00:21:13 v #22831 > >     !\($'"leptos::prelude::IntoAny::into_any(leptos::prelude::view\! { " +
00:21:13 v #22832 > > !macro + " })"')
00:21:14 v #22833 > >
00:21:14 v #22834 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:14 v #22835 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:21:14 v #22836 > > │ ### router                                                                   │
00:21:14 v #22837 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:21:14 v #22838 > >
00:21:14 v #22839 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:14 v #22840 > > inl router children : view =
00:21:14 v #22841 > >     inl children : () -> fragment = join children
00:21:14 v #22842 > >     tag_closed_raw "leptos_router::components::Router" [[
00:21:14 v #22843 > >         $'"children=Box::new(move || !children())"'
00:21:14 v #22844 > >     ]]
00:21:14 v #22845 > >     |> macro_to_view'
00:21:14 v #22846 > >     |> into_any_view
00:21:14 v #22847 > >
00:21:14 v #22848 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:14 v #22849 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:21:14 v #22850 > > │ ### routes                                                                   │
00:21:14 v #22851 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:21:14 v #22852 > >
00:21:14 v #22853 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:14 v #22854 > > inl routes children : view =
00:21:14 v #22855 > >     inl children : () -> am'.vec (view' nested_route) = join children
00:21:14 v #22856 > >     inl children = join children
00:21:14 v #22857 > >     inl fallback = "leptos.routes / fallback" |> text_view
00:21:14 v #22858 > >     tag_closed_raw "leptos_router::components::Routes" [[
00:21:14 v #22859 > >         $'"fallback=move || !fallback"'
00:21:14 v #22860 > >         $'"children=leptos::children::ToChildren::to_children(move ||
00:21:14 v #22861 > > !children())"'
00:21:14 v #22862 > >     ]]
00:21:14 v #22863 > >     |> macro_to_view'
00:21:14 v #22864 > >     |> into_any_view
00:21:15 v #22865 > >
00:21:15 v #22866 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:15 v #22867 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:21:15 v #22868 > > │ ### a'                                                                       │
00:21:15 v #22869 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:21:15 v #22870 > >
00:21:15 v #22871 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:15 v #22872 > > inl a' props children : _ (_ a') =
00:21:15 v #22873 > >     tag_element "a" props children
00:21:15 v #22874 > >
00:21:15 v #22875 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:15 v #22876 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:21:15 v #22877 > > │ ### button                                                                   │
00:21:15 v #22878 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:21:15 v #22879 > >
00:21:15 v #22880 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:15 v #22881 > > inl button props children : _ (_ button) =
00:21:15 v #22882 > >     tag_element "button" props children
00:21:16 v #22883 > >
00:21:16 v #22884 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:16 v #22885 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:21:16 v #22886 > > │ ### details                                                                  │
00:21:16 v #22887 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:21:16 v #22888 > >
00:21:16 v #22889 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:16 v #22890 > > inl details props children : _ (_ details) =
00:21:16 v #22891 > >     tag_element "details" props children
00:21:16 v #22892 > >
00:21:16 v #22893 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:16 v #22894 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:21:16 v #22895 > > │ ### div                                                                      │
00:21:16 v #22896 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:21:16 v #22897 > >
00:21:16 v #22898 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:16 v #22899 > > inl div props children : _ (_ div) =
00:21:16 v #22900 > >     tag_element "div" props children
00:21:16 v #22901 > >
00:21:16 v #22902 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:16 v #22903 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:21:16 v #22904 > > │ ### footer                                                                   │
00:21:16 v #22905 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:21:16 v #22906 > >
00:21:16 v #22907 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:16 v #22908 > > inl footer props children : _ (_ footer) =
00:21:16 v #22909 > >     tag_element "footer" props children
00:21:17 v #22910 > >
00:21:17 v #22911 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:17 v #22912 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:21:17 v #22913 > > │ ### header                                                                   │
00:21:17 v #22914 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:21:17 v #22915 > >
00:21:17 v #22916 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:17 v #22917 > > inl header props children : _ (_ header) =
00:21:17 v #22918 > >     tag_element "header" props children
00:21:17 v #22919 > >
00:21:17 v #22920 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:17 v #22921 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:21:17 v #22922 > > │ ### label                                                                    │
00:21:17 v #22923 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:21:17 v #22924 > >
00:21:17 v #22925 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:17 v #22926 > > inl label props children : _ (_ label) =
00:21:17 v #22927 > >     tag_element "label" props children
00:21:18 v #22928 > >
00:21:18 v #22929 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:18 v #22930 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:21:18 v #22931 > > │ ### main                                                                     │
00:21:18 v #22932 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:21:18 v #22933 > >
00:21:18 v #22934 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:18 v #22935 > > inl main props children : _ (_ main) =
00:21:18 v #22936 > >     tag_element "main" props children
00:21:18 v #22937 > >
00:21:18 v #22938 > > inl main' () = ()
00:21:18 v #22939 > >
00:21:18 v #22940 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:18 v #22941 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:21:18 v #22942 > > │ ### nav                                                                      │
00:21:18 v #22943 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:21:18 v #22944 > >
00:21:18 v #22945 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:18 v #22946 > > inl nav props children : _ (_ nav) =
00:21:18 v #22947 > >     tag_element "nav" props children
00:21:18 v #22948 > >
00:21:18 v #22949 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:18 v #22950 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:21:18 v #22951 > > │ ### option'                                                                  │
00:21:18 v #22952 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:21:18 v #22953 > >
00:21:18 v #22954 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:18 v #22955 > > inl option' props children : _ (_ option') =
00:21:18 v #22956 > >     tag_element "option" props children
00:21:19 v #22957 > >
00:21:19 v #22958 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:19 v #22959 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:21:19 v #22960 > > │ ### option'                                                                  │
00:21:19 v #22961 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:21:19 v #22962 > >
00:21:19 v #22963 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:19 v #22964 > > inl option' selected children : _ (_ option') =
00:21:19 v #22965 > >     inl selected : () -> bool = join selected
00:21:19 v #22966 > >     option' [[
00:21:19 v #22967 > >         $'"selected=!selected()"'
00:21:19 v #22968 > >     ]] fun () =>
00:21:19 v #22969 > >         children |> text_to_fragment
00:21:19 v #22970 > >
00:21:19 v #22971 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:19 v #22972 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:21:19 v #22973 > > │ ### pre                                                                      │
00:21:19 v #22974 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:21:19 v #22975 > >
00:21:19 v #22976 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:19 v #22977 > > inl pre props children : _ (_ pre) =
00:21:19 v #22978 > >     tag_element "pre" props children
00:21:20 v #22979 > >
00:21:20 v #22980 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:20 v #22981 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:21:20 v #22982 > > │ ### select                                                                   │
00:21:20 v #22983 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:21:20 v #22984 > >
00:21:20 v #22985 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:20 v #22986 > > inl select props children : _ (_ select) =
00:21:20 v #22987 > >     tag_element "select" props children
00:21:20 v #22988 > >
00:21:20 v #22989 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:20 v #22990 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:21:20 v #22991 > > │ ### span                                                                     │
00:21:20 v #22992 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:21:20 v #22993 > >
00:21:20 v #22994 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:20 v #22995 > > inl span props children : _ (_ span) =
00:21:20 v #22996 > >     tag_element "span" props children
00:21:21 v #22997 > >
00:21:21 v #22998 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:21 v #22999 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:21:21 v #23000 > > │ ### summary                                                                  │
00:21:21 v #23001 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:21:21 v #23002 > >
00:21:21 v #23003 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:21 v #23004 > > inl summary props children : _ (_ summary) =
00:21:21 v #23005 > >     tag_element "summary" props children
00:21:21 v #23006 > >
00:21:21 v #23007 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:21 v #23008 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:21:21 v #23009 > > │ ### table                                                                    │
00:21:21 v #23010 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:21:21 v #23011 > >
00:21:21 v #23012 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:21 v #23013 > > inl table props children : _ (_ table) =
00:21:21 v #23014 > >     tag_element "table" props children
00:21:21 v #23015 > >
00:21:21 v #23016 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:21 v #23017 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:21:21 v #23018 > > │ ### thead                                                                    │
00:21:21 v #23019 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:21:21 v #23020 > >
00:21:21 v #23021 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:21 v #23022 > > inl thead props children : _ (_ thead) =
00:21:21 v #23023 > >     tag_element "thead" props children
00:21:22 v #23024 > >
00:21:22 v #23025 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:22 v #23026 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:21:22 v #23027 > > │ ### tbody                                                                    │
00:21:22 v #23028 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:21:22 v #23029 > >
00:21:22 v #23030 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:22 v #23031 > > inl tbody props children : _ (_ tbody) =
00:21:22 v #23032 > >     tag_element "tbody" props children
00:21:22 v #23033 > >
00:21:22 v #23034 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:22 v #23035 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:21:22 v #23036 > > │ ### tr                                                                       │
00:21:22 v #23037 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:21:22 v #23038 > >
00:21:22 v #23039 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:22 v #23040 > > inl tr props children : _ (_ tr) =
00:21:22 v #23041 > >     tag_element "tr" props children
00:21:23 v #23042 > >
00:21:23 v #23043 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:23 v #23044 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:21:23 v #23045 > > │ ### th                                                                       │
00:21:23 v #23046 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:21:23 v #23047 > >
00:21:23 v #23048 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:23 v #23049 > > inl th props children : _ (_ th) =
00:21:23 v #23050 > >     tag_element "th" props children
00:21:23 v #23051 > >
00:21:23 v #23052 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:23 v #23053 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:21:23 v #23054 > > │ ### td                                                                       │
00:21:23 v #23055 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:21:23 v #23056 > >
00:21:23 v #23057 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:23 v #23058 > > inl td props children : _ (_ td) =
00:21:23 v #23059 > >     tag_element "td" props children
00:21:24 v #23060 > >
00:21:24 v #23061 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:24 v #23062 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:21:24 v #23063 > > │ ### svg                                                                      │
00:21:24 v #23064 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:21:24 v #23065 > >
00:21:24 v #23066 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:24 v #23067 > > inl svg props children : _ (_ svg) =
00:21:24 v #23068 > >     tag_element "svg" props children
00:21:24 v #23069 > >
00:21:24 v #23070 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:24 v #23071 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:21:24 v #23072 > > │ ### path                                                                     │
00:21:24 v #23073 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:21:24 v #23074 > >
00:21:24 v #23075 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:24 v #23076 > > inl path props : _ (_ path) =
00:21:24 v #23077 > >     tag_element "path" props (fun () => [[]] |> view_list_to_fragment)
00:21:24 v #23078 > >
00:21:24 v #23079 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:24 v #23080 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:21:24 v #23081 > > │ ### circle                                                                   │
00:21:24 v #23082 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:21:24 v #23083 > >
00:21:24 v #23084 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:24 v #23085 > > inl circle props : _ (_ circle) =
00:21:24 v #23086 > >     tag_element "circle" props (fun () => [[]] |> view_list_to_fragment)
00:21:25 v #23087 > >
00:21:25 v #23088 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:25 v #23089 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:21:25 v #23090 > > │ ### rect                                                                     │
00:21:25 v #23091 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:21:25 v #23092 > >
00:21:25 v #23093 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:25 v #23094 > > inl rect props children : _ (_ rect) =
00:21:25 v #23095 > >     tag_element "rect" props children
00:21:25 v #23096 > >
00:21:25 v #23097 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:25 v #23098 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:21:25 v #23099 > > │ ### animate                                                                  │
00:21:25 v #23100 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:21:25 v #23101 > >
00:21:25 v #23102 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:25 v #23103 > > inl animate props : _ (_ animate) =
00:21:25 v #23104 > >     tag_element "animate" props (fun () => [[]] |> view_list_to_fragment)
00:21:26 v #23105 > >
00:21:26 v #23106 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:26 v #23107 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:21:26 v #23108 > > │ ### input                                                                    │
00:21:26 v #23109 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:21:26 v #23110 > >
00:21:26 v #23111 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:26 v #23112 > > inl input props : _ (_ input) =
00:21:26 v #23113 > >     tag_closed "input" props
00:21:26 v #23114 > >
00:21:26 v #23115 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:26 v #23116 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:21:26 v #23117 > > │ ### dd                                                                       │
00:21:26 v #23118 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:21:26 v #23119 > >
00:21:26 v #23120 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:26 v #23121 > > inl dd props children : _ (_ dd) =
00:21:26 v #23122 > >     tag_element "dd" props children
00:21:27 v #23123 > >
00:21:27 v #23124 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:27 v #23125 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:21:27 v #23126 > > │ ### dl                                                                       │
00:21:27 v #23127 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:21:27 v #23128 > >
00:21:27 v #23129 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:27 v #23130 > > inl dl props children : _ (_ dl) =
00:21:27 v #23131 > >     tag_element "dl" props children
00:21:27 v #23132 > >
00:21:27 v #23133 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:27 v #23134 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:21:27 v #23135 > > │ ### dt                                                                       │
00:21:27 v #23136 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:21:27 v #23137 > >
00:21:27 v #23138 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:27 v #23139 > > inl dt props children : _ (_ dt) =
00:21:27 v #23140 > >     tag_element "dt" props children
00:21:28 v #23141 > 00:01:27 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 114912 }
00:21:28 v #23142 > 00:01:27 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/polyglot/lib/spiral/leptos/leptos.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/polyglot/lib/spiral/leptos/leptos.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:21:29 v #23143 > 00:01:28 v #5 ! [NbConvertApp] Converting notebook c:/home/git/polyglot/lib/spiral/leptos/leptos.dib.ipynb to html
00:21:29 v #23144 > 00:01:28 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:21:29 v #23145 > 00:01:28 v #7 !   validate(nb)
00:21:30 v #23146 > 00:01:29 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:21:30 v #23147 > 00:01:29 v #9 !   return _pygments_highlight(
00:21:31 v #23148 > 00:01:31 v #10 ! [NbConvertApp] Writing 617516 bytes to c:\home\git\polyglot\lib\spiral\leptos\leptos.dib.html
00:21:31 v #23149 > 00:01:31 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 868 }
00:21:31 v #23150 > 00:01:31 d #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 868 }
00:21:31 v #23151 > 00:01:31 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/leptos/leptos.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/leptos/leptos.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:21:32 v #23152 > 00:01:31 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:21:32 v #23153 > 00:01:31 d #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:21:32 v #23154 > 00:01:31 d #16 spiral_builder.run / dib / { exit_code = 0; result_length = 115839 }
00:21:32 d #23155 runtime.execute_with_options_async / { exit_code = 0; output_length = 123087 }
00:21:32 d #28 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder.exe dib --path leptos/leptos.dib --retries 3
00:21:32 d #23156 runtime.execute_with_options_async / { file_name = ../../workspace/target/release/spiral_builder.exe; arguments = US5_0 "dib --path util.dib --retries 3"; options = { command = ../../workspace/target/release/spiral_builder.exe dib --path util.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:21:32 v #23157 > 00:00:00 d #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "util.dib", "--retries", "3"])) }
00:21:32 v #23158 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/polyglot/lib/spiral/util.dib", "--output-path", "c:/home/git/polyglot/lib/spiral/util.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/polyglot/lib/spiral/util.dib" --output-path "c:/home/git/polyglot/lib/spiral/util.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:21:33 v #23159 > >
00:21:33 v #23160 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:33 v #23161 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:21:33 v #23162 > > │ # util                                                                       │
00:21:33 v #23163 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:21:36 v #23164 > >
00:21:36 v #23165 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:36 v #23166 > > //// test
00:21:36 v #23167 > >
00:21:36 v #23168 > > open testing
00:21:38 v #23169 > >
00:21:38 v #23170 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:38 v #23171 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:21:38 v #23172 > > │ ### ski                                                                      │
00:21:38 v #23173 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:21:38 v #23174 > >
00:21:38 v #23175 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:38 v #23176 > > union rec ski =
00:21:38 v #23177 > >     | I
00:21:38 v #23178 > >     | K
00:21:38 v #23179 > >     | S
00:21:38 v #23180 > >     | App : ski * ski
00:21:38 v #23181 > >
00:21:38 v #23182 > > inl rec eval ski =
00:21:38 v #23183 > >     match ski with
00:21:38 v #23184 > >     | App (App (K, x), y) => x |> eval
00:21:38 v #23185 > >     | App (App (App (S, x), y), z) => App (App (x, z), App (y, z)) |> eval
00:21:38 v #23186 > >     | App (I, x) => x |> eval
00:21:38 v #23187 > >     | App (K, x) => App (K, eval x)
00:21:38 v #23188 > >     | App (f, x) => App (eval f, x) |> eval
00:21:38 v #23189 > >     | _ => ski
00:21:38 v #23190 > >
00:21:38 v #23191 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:38 v #23192 > > //// test
00:21:38 v #23193 > >
00:21:38 v #23194 > > eval I
00:21:38 v #23195 > > |> _assert_eq I
00:21:38 v #23196 > >
00:21:38 v #23197 > > App (I, I)
00:21:38 v #23198 > > |> eval
00:21:38 v #23199 > > |> _assert_eq I
00:21:38 v #23200 > >
00:21:38 v #23201 > > App (I, App (I, I))
00:21:38 v #23202 > > |> eval
00:21:38 v #23203 > > |> _assert_eq I
00:21:38 v #23204 > >
00:21:38 v #23205 > > App (App (I, I), I)
00:21:38 v #23206 > > |> eval
00:21:38 v #23207 > > |> _assert_eq I
00:21:38 v #23208 > >
00:21:38 v #23209 > > App (App (App (I, I), I), I)
00:21:38 v #23210 > > |> eval
00:21:38 v #23211 > > |> _assert_eq I
00:21:38 v #23212 > >
00:21:38 v #23213 > > eval K
00:21:38 v #23214 > > |> _assert_eq K
00:21:38 v #23215 > >
00:21:38 v #23216 > > App (K, I)
00:21:38 v #23217 > > |> eval
00:21:38 v #23218 > > |> _assert_eq (App (K, I))
00:21:38 v #23219 > >
00:21:38 v #23220 > > App (K, K)
00:21:38 v #23221 > > |> eval
00:21:38 v #23222 > > |> _assert_eq (App (K, K))
00:21:38 v #23223 > >
00:21:38 v #23224 > > App (App (K, I), K)
00:21:38 v #23225 > > |> eval
00:21:38 v #23226 > > |> _assert_eq I
00:21:38 v #23227 > >
00:21:38 v #23228 > > App (App (K, K), I)
00:21:38 v #23229 > > |> eval
00:21:38 v #23230 > > |> _assert_eq K
00:21:38 v #23231 > >
00:21:38 v #23232 > > App (App (App (App (K, K), I), S), K)
00:21:38 v #23233 > > |> eval
00:21:38 v #23234 > > |> _assert_eq S
00:21:38 v #23235 > >
00:21:38 v #23236 > > eval S
00:21:38 v #23237 > > |> _assert_eq S
00:21:38 v #23238 > >
00:21:38 v #23239 > > App (App (App (S, I), I), I)
00:21:38 v #23240 > > |> eval
00:21:38 v #23241 > > |> _assert_eq I
00:21:38 v #23242 > >
00:21:38 v #23243 > > App (App (App (S, K), K), I)
00:21:38 v #23244 > > |> eval
00:21:38 v #23245 > > |> _assert_eq I
00:21:38 v #23246 > >
00:21:38 v #23247 > > App (App (App (S, K), I), (App (App (K, I), S)))
00:21:38 v #23248 > > |> eval
00:21:38 v #23249 > > |> _assert_eq I
00:21:38 v #23250 > >
00:21:38 v #23251 > > App (App (K, S), App (I, App (App (App (S, K), S), I)))
00:21:38 v #23252 > > |> eval
00:21:38 v #23253 > > |> _assert_eq S
00:21:38 v #23254 > >
00:21:38 v #23255 > > App (App (App (S, K), I), K)
00:21:38 v #23256 > > |> eval
00:21:38 v #23257 > > |> _assert_eq K
00:21:39 v #23258 > >
00:21:39 v #23259 > > ╭─[ 1.52s - stdout ]───────────────────────────────────────────────────────────╮
00:21:39 v #23260 > > │ __assert_eq / actual: UH0_0 / expected: UH0_0                                │
00:21:39 v #23261 > > │ __assert_eq / actual: UH0_0 / expected: UH0_0                                │
00:21:39 v #23262 > > │ __assert_eq / actual: UH0_0 / expected: UH0_0                                │
00:21:39 v #23263 > > │ __assert_eq / actual: UH0_0 / expected: UH0_0                                │
00:21:39 v #23264 > > │ __assert_eq / actual: UH0_0 / expected: UH0_0                                │
00:21:39 v #23265 > > │ __assert_eq / actual: UH0_1 / expected: UH0_1                                │
00:21:39 v #23266 > > │ __assert_eq / actual: UH0_3 (UH0_1, UH0_0) / expected: UH0_3 (UH0_1, UH0_0)  │
00:21:39 v #23267 > > │ __assert_eq / actual: UH0_3 (UH0_1, UH0_1) / expected: UH0_3 (UH0_1, UH0_1)  │
00:21:39 v #23268 > > │ __assert_eq / actual: UH0_0 / expected: UH0_0                                │
00:21:39 v #23269 > > │ __assert_eq / actual: UH0_1 / expected: UH0_1                                │
00:21:39 v #23270 > > │ __assert_eq / actual: UH0_2 / expected: UH0_2                                │
00:21:39 v #23271 > > │ __assert_eq / actual: UH0_2 / expected: UH0_2                                │
00:21:39 v #23272 > > │ __assert_eq / actual: UH0_0 / expected: UH0_0                                │
00:21:39 v #23273 > > │ __assert_eq / actual: UH0_0 / expected: UH0_0                                │
00:21:39 v #23274 > > │ __assert_eq / actual: UH0_0 / expected: UH0_0                                │
00:21:39 v #23275 > > │ __assert_eq / actual: UH0_2 / expected: UH0_2                                │
00:21:39 v #23276 > > │ __assert_eq / actual: UH0_1 / expected: UH0_1                                │
00:21:39 v #23277 > > │                                                                              │
00:21:39 v #23278 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:21:40 v #23279 > 00:00:07 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 3706 }
00:21:40 v #23280 > 00:00:07 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/polyglot/lib/spiral/util.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/polyglot/lib/spiral/util.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:21:41 v #23281 > 00:00:08 v #5 ! [NbConvertApp] Converting notebook c:/home/git/polyglot/lib/spiral/util.dib.ipynb to html
00:21:41 v #23282 > 00:00:08 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:21:41 v #23283 > 00:00:08 v #7 !   validate(nb)
00:21:41 v #23284 > 00:00:09 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:21:41 v #23285 > 00:00:09 v #9 !   return _pygments_highlight(
00:21:41 v #23286 > 00:00:09 v #10 ! [NbConvertApp] Writing 284347 bytes to c:\home\git\polyglot\lib\spiral\util.dib.html
00:21:42 v #23287 > 00:00:09 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 850 }
00:21:42 v #23288 > 00:00:09 d #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 850 }
00:21:42 v #23289 > 00:00:09 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/util.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/util.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:21:42 v #23290 > 00:00:10 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:21:42 v #23291 > 00:00:10 d #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:21:42 v #23292 > 00:00:10 d #16 spiral_builder.run / dib / { exit_code = 0; result_length = 4615 }
00:21:42 d #23293 runtime.execute_with_options_async / { exit_code = 0; output_length = 7402 }
00:21:42 d #29 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder.exe dib --path util.dib --retries 3
00:21:42 d #23294 runtime.execute_with_options_async / { file_name = ../../workspace/target/release/spiral_builder.exe; arguments = US5_0 "dib --path platform.dib --retries 3"; options = { command = ../../workspace/target/release/spiral_builder.exe dib --path platform.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:21:42 v #23295 > 00:00:00 d #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "platform.dib", "--retries", "3"])) }
00:21:42 v #23296 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/polyglot/lib/spiral/platform.dib", "--output-path", "c:/home/git/polyglot/lib/spiral/platform.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/polyglot/lib/spiral/platform.dib" --output-path "c:/home/git/polyglot/lib/spiral/platform.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:21:44 v #23297 > >
00:21:44 v #23298 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:44 v #23299 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:21:44 v #23300 > > │ # platform                                                                   │
00:21:44 v #23301 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:21:47 v #23302 > >
00:21:47 v #23303 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:47 v #23304 > > open rust.rust_operators
00:21:48 v #23305 > >
00:21:48 v #23306 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:48 v #23307 > > //// test
00:21:48 v #23308 > >
00:21:48 v #23309 > > open testing
00:21:48 v #23310 > >
00:21:48 v #23311 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:48 v #23312 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:21:48 v #23313 > > │ ## fsharp                                                                    │
00:21:48 v #23314 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:21:48 v #23315 > >
00:21:48 v #23316 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:48 v #23317 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:21:48 v #23318 > > │ ### os_platform                                                              │
00:21:48 v #23319 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:21:48 v #23320 > >
00:21:48 v #23321 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:48 v #23322 > > nominal os_platform' = $'System.Runtime.InteropServices.OSPlatform'
00:21:48 v #23323 > >
00:21:48 v #23324 > > union os_platform =
00:21:48 v #23325 > >     | FreeBSD
00:21:48 v #23326 > >     | Linux
00:21:48 v #23327 > >     | OSX
00:21:48 v #23328 > >     | Windows
00:21:48 v #23329 > >
00:21:48 v #23330 > > inl os_platform = function
00:21:48 v #23331 > >     | FreeBSD => $'`os_platform'.FreeBSD' : os_platform'
00:21:48 v #23332 > >     | Linux => $'`os_platform'.Linux' : os_platform'
00:21:48 v #23333 > >     | OSX => $'`os_platform'.OSX' : os_platform'
00:21:48 v #23334 > >     | Windows => $'`os_platform'.Windows' : os_platform'
00:21:49 v #23335 > >
00:21:49 v #23336 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:49 v #23337 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:21:49 v #23338 > > │ ### run_platform                                                             │
00:21:49 v #23339 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:21:49 v #23340 > >
00:21:49 v #23341 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:49 v #23342 > > inl run_platform forall t. (fn : os_platform -> (() -> t)) : t =
00:21:49 v #23343 > >     inl result = dyn true
00:21:49 v #23344 > >     $'let mutable _!result : `t option = None '
00:21:49 v #23345 > >     $'\n#if _FREEBSD'
00:21:49 v #23346 > >     fn FreeBSD () |> emit_unit
00:21:49 v #23347 > >     $'#endif\n#if _LINUX'
00:21:49 v #23348 > >     fn Linux () |> emit_unit
00:21:49 v #23349 > >     $'#endif\n#if _OSX'
00:21:49 v #23350 > >     fn OSX () |> emit_unit
00:21:49 v #23351 > >     $'#endif\n#if _WINDOWS'
00:21:49 v #23352 > >     fn Windows () |> emit_unit
00:21:49 v #23353 > >     $'#endif'
00:21:49 v #23354 > >     $'|> fun x -> _!result <- Some x'
00:21:49 v #23355 > >     $'match _!result with Some x -> x | None -> failwith "runtime.run_platform
00:21:49 v #23356 > > _!result=None"'
00:21:49 v #23357 > >
00:21:49 v #23358 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:49 v #23359 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:21:49 v #23360 > > │ ### is_os_platform                                                           │
00:21:49 v #23361 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:21:49 v #23362 > >
00:21:49 v #23363 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:49 v #23364 > > inl is_os_platform (x : os_platform') : bool =
00:21:49 v #23365 > >     x |> $'System.Runtime.InteropServices.RuntimeInformation.IsOSPlatform'
00:21:49 v #23366 > >
00:21:49 v #23367 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:49 v #23368 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:21:49 v #23369 > > │ ### is_windows'                                                              │
00:21:49 v #23370 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:21:49 v #23371 > >
00:21:49 v #23372 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:49 v #23373 > > inl is_windows' () : bool =
00:21:49 v #23374 > >     run_platform function
00:21:49 v #23375 > >         | Windows => fun () => true
00:21:49 v #23376 > >         | _ => fun () => false
00:21:50 v #23377 > >
00:21:50 v #23378 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:50 v #23379 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:21:50 v #23380 > > │ ## platform                                                                  │
00:21:50 v #23381 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:21:50 v #23382 > >
00:21:50 v #23383 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:50 v #23384 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:21:50 v #23385 > > │ ### is_windows                                                               │
00:21:50 v #23386 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:21:50 v #23387 > >
00:21:50 v #23388 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:50 v #23389 > > inl is_windows () : bool =
00:21:50 v #23390 > >     run_target function
00:21:50 v #23391 > >         | Rust _ => fun () =>
00:21:50 v #23392 > >             !\($'"cfg\!(windows)"')
00:21:50 v #23393 > >         | Fsharp _ => fun () =>
00:21:50 v #23394 > >             Windows |> os_platform |> is_os_platform
00:21:50 v #23395 > >         | target => fun () => failwith $'$"platform.is_windows / target:
00:21:50 v #23396 > > {!target}"'
00:21:50 v #23397 > >
00:21:50 v #23398 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:50 v #23399 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:21:50 v #23400 > > │ ### get_executable_suffix                                                    │
00:21:50 v #23401 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:21:50 v #23402 > >
00:21:50 v #23403 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:50 v #23404 > > inl get_executable_suffix () =
00:21:50 v #23405 > >     if is_windows ()
00:21:50 v #23406 > >     then ".exe"
00:21:50 v #23407 > >     else ""
00:21:51 v #23408 > >
00:21:51 v #23409 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:51 v #23410 > > //// test
00:21:51 v #23411 > >
00:21:51 v #23412 > > get_executable_suffix ()
00:21:52 v #23413 > >
00:21:52 v #23414 > > ╭─[ 1.35s - return value ]─────────────────────────────────────────────────────╮
00:21:52 v #23415 > > │ .exe                                                                         │
00:21:52 v #23416 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:21:52 v #23417 > >
00:21:52 v #23418 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:52 v #23419 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:21:52 v #23420 > > │ ## main                                                                      │
00:21:52 v #23421 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:21:52 v #23422 > >
00:21:52 v #23423 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:52 v #23424 > > inl main () =
00:21:52 v #23425 > >     $'let is_windows () = !is_windows ()' : ()
00:21:52 v #23426 > >     $'let get_executable_suffix () = !get_executable_suffix ()' : ()
00:21:52 v #23427 > 00:00:10 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 6028 }
00:21:52 v #23428 > 00:00:10 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/polyglot/lib/spiral/platform.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/polyglot/lib/spiral/platform.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:21:54 v #23429 > 00:00:11 v #5 ! [NbConvertApp] Converting notebook c:/home/git/polyglot/lib/spiral/platform.dib.ipynb to html
00:21:54 v #23430 > 00:00:11 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:21:54 v #23431 > 00:00:11 v #7 !   validate(nb)
00:21:54 v #23432 > 00:00:12 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:21:54 v #23433 > 00:00:12 v #9 !   return _pygments_highlight(
00:21:54 v #23434 > 00:00:12 v #10 ! [NbConvertApp] Writing 288028 bytes to c:\home\git\polyglot\lib\spiral\platform.dib.html
00:21:55 v #23435 > 00:00:12 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 858 }
00:21:55 v #23436 > 00:00:12 d #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 858 }
00:21:55 v #23437 > 00:00:12 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/platform.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/platform.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:21:55 v #23438 > 00:00:13 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:21:55 v #23439 > 00:00:13 d #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:21:55 v #23440 > 00:00:13 d #16 spiral_builder.run / dib / { exit_code = 0; result_length = 6945 }
00:21:55 d #23441 runtime.execute_with_options_async / { exit_code = 0; output_length = 9788 }
00:21:55 d #30 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder.exe dib --path platform.dib --retries 3
00:21:55 d #23442 runtime.execute_with_options_async / { file_name = ../../workspace/target/release/spiral_builder.exe; arguments = US5_0 "dib --path stream.dib --retries 3"; options = { command = ../../workspace/target/release/spiral_builder.exe dib --path stream.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:21:55 v #23443 > 00:00:00 d #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "stream.dib", "--retries", "3"])) }
00:21:55 v #23444 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/polyglot/lib/spiral/stream.dib", "--output-path", "c:/home/git/polyglot/lib/spiral/stream.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/polyglot/lib/spiral/stream.dib" --output-path "c:/home/git/polyglot/lib/spiral/stream.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:21:57 v #23445 > >
00:21:57 v #23446 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:57 v #23447 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:21:57 v #23448 > > │ # stream                                                                     │
00:21:57 v #23449 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:22:00 v #23450 > >
00:22:00 v #23451 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:00 v #23452 > > open rust.rust_operators
00:22:01 v #23453 > >
00:22:01 v #23454 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:01 v #23455 > > //// test
00:22:01 v #23456 > >
00:22:01 v #23457 > > open testing
00:22:01 v #23458 > >
00:22:01 v #23459 > > ── markdown ────────────────────────────────────────────────────────────────────
00:22:01 v #23460 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:22:01 v #23461 > > │ ## stream                                                                    │
00:22:01 v #23462 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:22:01 v #23463 > >
00:22:01 v #23464 > > ── markdown ────────────────────────────────────────────────────────────────────
00:22:01 v #23465 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:22:01 v #23466 > > │ ### stream                                                                   │
00:22:01 v #23467 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:22:01 v #23468 > >
00:22:01 v #23469 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:01 v #23470 > > union rec stream t =
00:22:01 v #23471 > >     | StreamCons : t * (() -> stream t)
00:22:01 v #23472 > >     | StreamNil
00:22:02 v #23473 > >
00:22:02 v #23474 > > ── markdown ────────────────────────────────────────────────────────────────────
00:22:02 v #23475 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:22:02 v #23476 > > │ ### fold                                                                     │
00:22:02 v #23477 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:22:02 v #23478 > >
00:22:02 v #23479 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:02 v #23480 > > inl fold fn init s =
00:22:02 v #23481 > >     inl rec body acc = function
00:22:02 v #23482 > >         | StreamCons (st, fn') => loop (fn acc st) (fn' ())
00:22:02 v #23483 > >         | StreamNil => acc
00:22:02 v #23484 > >     and inl loop acc = join_body body acc
00:22:02 v #23485 > >     loop init s
00:22:02 v #23486 > >
00:22:02 v #23487 > > ── markdown ────────────────────────────────────────────────────────────────────
00:22:02 v #23488 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:22:02 v #23489 > > │ ### fold_back                                                                │
00:22:02 v #23490 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:22:02 v #23491 > >
00:22:02 v #23492 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:02 v #23493 > > inl fold_back fn s init =
00:22:02 v #23494 > >     inl rec body acc = function
00:22:02 v #23495 > >         | StreamCons (st, fn') => fn st (loop acc (fn' ()))
00:22:02 v #23496 > >         | StreamNil => acc
00:22:02 v #23497 > >     and inl loop acc = join_body body acc
00:22:02 v #23498 > >     loop init s
00:22:02 v #23499 > >
00:22:02 v #23500 > > ── markdown ────────────────────────────────────────────────────────────────────
00:22:02 v #23501 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:22:02 v #23502 > > │ ### to_list                                                                  │
00:22:02 v #23503 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:22:02 v #23504 > >
00:22:02 v #23505 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:02 v #23506 > > inl to_list s =
00:22:02 v #23507 > >     (s, [[]])
00:22:02 v #23508 > >     ||> fold_back fun x acc =>
00:22:02 v #23509 > >         x :: acc
00:22:03 v #23510 > >
00:22:03 v #23511 > > ── markdown ────────────────────────────────────────────────────────────────────
00:22:03 v #23512 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:22:03 v #23513 > > │ ### rev                                                                      │
00:22:03 v #23514 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:22:03 v #23515 > >
00:22:03 v #23516 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:03 v #23517 > > inl rev s =
00:22:03 v #23518 > >     (StreamNil, s)
00:22:03 v #23519 > >     ||> fold fun s x =>
00:22:03 v #23520 > >         StreamCons (x, fun () => s)
00:22:03 v #23521 > >
00:22:03 v #23522 > > ── markdown ────────────────────────────────────────────────────────────────────
00:22:03 v #23523 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:22:03 v #23524 > > │ ### from_list                                                                │
00:22:03 v #23525 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:22:03 v #23526 > >
00:22:03 v #23527 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:03 v #23528 > > inl from_list list =
00:22:03 v #23529 > >     (list, StreamNil)
00:22:03 v #23530 > >     ||> listm.foldBack fun x acc =>
00:22:03 v #23531 > >         StreamCons (x, fun () => acc)
00:22:04 v #23532 > >
00:22:04 v #23533 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:04 v #23534 > > //// test
00:22:04 v #23535 > >
00:22:04 v #23536 > > listm.init 3i32 id
00:22:04 v #23537 > > |> from_list
00:22:04 v #23538 > > |> rev
00:22:04 v #23539 > > |> to_list
00:22:04 v #23540 > > |> _assert_eq [[ 2; 1; 0 ]]
00:22:05 v #23541 > >
00:22:05 v #23542 > > ╭─[ 1.29s - stdout ]───────────────────────────────────────────────────────────╮
00:22:05 v #23543 > > │ __assert_eq / actual: UH0_1 (2, UH0_1 (1, UH0_1 (0, UH0_0))) / expected:     │
00:22:05 v #23544 > > │ UH0_1 (2, UH0_1 (1, UH0_1 (0, UH0_0)))                                       │
00:22:05 v #23545 > > │                                                                              │
00:22:05 v #23546 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:22:05 v #23547 > >
00:22:05 v #23548 > > ── markdown ────────────────────────────────────────────────────────────────────
00:22:05 v #23549 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:22:05 v #23550 > > │ ### try_item                                                                 │
00:22:05 v #23551 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:22:05 v #23552 > >
00:22:05 v #23553 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:05 v #23554 > > inl try_item i s =
00:22:05 v #23555 > >     inl rec body i = function
00:22:05 v #23556 > >         | StreamCons (x, _) when i <= 0 => Some x
00:22:05 v #23557 > >         | StreamCons (_, fn) => loop (i - 1) (fn ())
00:22:05 v #23558 > >         | StreamNil => None
00:22:05 v #23559 > >     and inl loop acc s' =
00:22:05 v #23560 > >         match var_is acc, var_is s' with
00:22:05 v #23561 > >         | false, false => body acc s'
00:22:05 v #23562 > >         | _ =>
00:22:05 v #23563 > >             inl acc = dyn acc
00:22:05 v #23564 > >             inl s' = dyn s'
00:22:05 v #23565 > >             join body acc s'
00:22:05 v #23566 > >     loop i s
00:22:05 v #23567 > >
00:22:05 v #23568 > > inl item i =
00:22:05 v #23569 > >     try_item i >> optionm.value
00:22:05 v #23570 > >
00:22:05 v #23571 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:05 v #23572 > > //// test
00:22:05 v #23573 > >
00:22:05 v #23574 > > listm.init 10i32 id
00:22:05 v #23575 > > |> from_list
00:22:05 v #23576 > > |> item 9i32
00:22:05 v #23577 > > |> _assert_eq 9
00:22:06 v #23578 > >
00:22:06 v #23579 > > ╭─[ 387.38ms - stdout ]────────────────────────────────────────────────────────╮
00:22:06 v #23580 > > │ __assert_eq / actual: 9 / expected: 9                                        │
00:22:06 v #23581 > > │                                                                              │
00:22:06 v #23582 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:22:06 v #23583 > >
00:22:06 v #23584 > > ── markdown ────────────────────────────────────────────────────────────────────
00:22:06 v #23585 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:22:06 v #23586 > > │ ### new_infinite_stream                                                      │
00:22:06 v #23587 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:22:06 v #23588 > >
00:22:06 v #23589 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:06 v #23590 > > inl new_infinite_stream fn =
00:22:06 v #23591 > >     inl rec loop n =
00:22:06 v #23592 > >         StreamCons (fn n, fun () => loop (n + 1))
00:22:06 v #23593 > >     loop 0
00:22:06 v #23594 > >
00:22:06 v #23595 > > inl new_infinite_stream_ fn =
00:22:06 v #23596 > >     let rec loop n =
00:22:06 v #23597 > >         StreamCons (fn n, fun () => loop (n + 1))
00:22:06 v #23598 > >     loop 0
00:22:06 v #23599 > >
00:22:06 v #23600 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:06 v #23601 > > //// test
00:22:06 v #23602 > >
00:22:06 v #23603 > > new_infinite_stream print_and_return
00:22:06 v #23604 > > |> item 4i32
00:22:06 v #23605 > > |> _assert_eq 4i32
00:22:06 v #23606 > >
00:22:06 v #23607 > > ╭─[ 381.47ms - stdout ]────────────────────────────────────────────────────────╮
00:22:06 v #23608 > > │ print_and_return / x: 0                                                      │
00:22:06 v #23609 > > │ print_and_return / x: 1                                                      │
00:22:06 v #23610 > > │ print_and_return / x: 2                                                      │
00:22:06 v #23611 > > │ print_and_return / x: 3                                                      │
00:22:06 v #23612 > > │ print_and_return / x: 4                                                      │
00:22:06 v #23613 > > │ __assert_eq / actual: 4 / expected: 4                                        │
00:22:06 v #23614 > > │                                                                              │
00:22:06 v #23615 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:22:06 v #23616 > >
00:22:06 v #23617 > > ── markdown ────────────────────────────────────────────────────────────────────
00:22:06 v #23618 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:22:06 v #23619 > > │ ### new_finite_stream                                                        │
00:22:06 v #23620 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:22:06 v #23621 > >
00:22:06 v #23622 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:06 v #23623 > > inl new_finite_stream fn max =
00:22:06 v #23624 > >     inl rec loop n =
00:22:06 v #23625 > >         if n >= max
00:22:06 v #23626 > >         then StreamNil
00:22:06 v #23627 > >         else StreamCons (fn n, fun () => loop (n + 1))
00:22:06 v #23628 > >     loop 0
00:22:07 v #23629 > >
00:22:07 v #23630 > > ── markdown ────────────────────────────────────────────────────────────────────
00:22:07 v #23631 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:22:07 v #23632 > > │ ### memoize                                                                  │
00:22:07 v #23633 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:22:07 v #23634 > >
00:22:07 v #23635 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:07 v #23636 > > union memoized_stream t =
00:22:07 v #23637 > >     | NotComputed : () -> stream t
00:22:07 v #23638 > >     | Computed : stream t
00:22:07 v #23639 > >
00:22:07 v #23640 > > inl memoize s =
00:22:07 v #23641 > >     inl rec body s =
00:22:07 v #23642 > >         inl state = mut (NotComputed s)
00:22:07 v #23643 > >         fun () =>
00:22:07 v #23644 > >             match *state with
00:22:07 v #23645 > >             | Computed x => x
00:22:07 v #23646 > >             | NotComputed fn =>
00:22:07 v #23647 > >                 inl new_state =
00:22:07 v #23648 > >                     match fn () with
00:22:07 v #23649 > >                     | StreamNil => StreamNil
00:22:07 v #23650 > >                     | StreamCons (x, fn) => StreamCons (x, loop fn)
00:22:07 v #23651 > >                 state <- Computed new_state
00:22:07 v #23652 > >                 new_state
00:22:07 v #23653 > >     and inl loop s' = join_body_unit body s s'
00:22:07 v #23654 > >     loop (fun () => s)
00:22:07 v #23655 > >
00:22:07 v #23656 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:07 v #23657 > > //// test
00:22:07 v #23658 > >
00:22:07 v #23659 > > inl memo_stream = new_finite_stream print_and_return 10 |> memoize
00:22:07 v #23660 > >
00:22:07 v #23661 > > memo_stream ()
00:22:07 v #23662 > > |> item 3i32
00:22:07 v #23663 > > |> _assert_eq 3i32
00:22:07 v #23664 > >
00:22:07 v #23665 > > memo_stream ()
00:22:07 v #23666 > > |> item 5i32
00:22:07 v #23667 > > |> _assert_eq 5i32
00:22:08 v #23668 > >
00:22:08 v #23669 > > ╭─[ 818.98ms - stdout ]────────────────────────────────────────────────────────╮
00:22:08 v #23670 > > │ print_and_return / x: 0                                                      │
00:22:08 v #23671 > > │ print_and_return / x: 1                                                      │
00:22:08 v #23672 > > │ print_and_return / x: 2                                                      │
00:22:08 v #23673 > > │ print_and_return / x: 3                                                      │
00:22:08 v #23674 > > │ __assert_eq / actual: 3 / expected: 3                                        │
00:22:08 v #23675 > > │ print_and_return / x: 4                                                      │
00:22:08 v #23676 > > │ print_and_return / x: 5                                                      │
00:22:08 v #23677 > > │ __assert_eq / actual: 5 / expected: 5                                        │
00:22:08 v #23678 > > │                                                                              │
00:22:08 v #23679 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:22:08 v #23680 > >
00:22:08 v #23681 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:08 v #23682 > > //// test
00:22:08 v #23683 > >
00:22:08 v #23684 > > inl memo_stream = new_infinite_stream_ print_and_return |> memoize
00:22:08 v #23685 > >
00:22:08 v #23686 > > memo_stream ()
00:22:08 v #23687 > > |> item 3i32
00:22:08 v #23688 > > |> _assert_eq 3i32
00:22:08 v #23689 > >
00:22:08 v #23690 > > memo_stream ()
00:22:08 v #23691 > > |> item 5i32
00:22:08 v #23692 > > |> _assert_eq 5i32
00:22:09 v #23693 > >
00:22:09 v #23694 > > ╭─[ 445.78ms - stdout ]────────────────────────────────────────────────────────╮
00:22:09 v #23695 > > │ print_and_return / x: 0                                                      │
00:22:09 v #23696 > > │ print_and_return / x: 1                                                      │
00:22:09 v #23697 > > │ print_and_return / x: 2                                                      │
00:22:09 v #23698 > > │ print_and_return / x: 3                                                      │
00:22:09 v #23699 > > │ __assert_eq / actual: 3 / expected: 3                                        │
00:22:09 v #23700 > > │ print_and_return / x: 4                                                      │
00:22:09 v #23701 > > │ print_and_return / x: 5                                                      │
00:22:09 v #23702 > > │ __assert_eq / actual: 5 / expected: 5                                        │
00:22:09 v #23703 > > │                                                                              │
00:22:09 v #23704 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:22:09 v #23705 > >
00:22:09 v #23706 > > ── markdown ────────────────────────────────────────────────────────────────────
00:22:09 v #23707 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:22:09 v #23708 > > │ ### unfold                                                                   │
00:22:09 v #23709 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:22:09 v #23710 > >
00:22:09 v #23711 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:09 v #23712 > > inl unfold f x0 =
00:22:09 v #23713 > >     inl rec body x =
00:22:09 v #23714 > >         match f x with
00:22:09 v #23715 > >         | Some (x', y) => StreamCons (x', fun () => loop y)
00:22:09 v #23716 > >         | None => StreamNil
00:22:09 v #23717 > >     and inl loop x = join_body_unit body x0 x
00:22:09 v #23718 > >     loop x0
00:22:09 v #23719 > >
00:22:09 v #23720 > > ── markdown ────────────────────────────────────────────────────────────────────
00:22:09 v #23721 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:22:09 v #23722 > > │ ### iterate                                                                  │
00:22:09 v #23723 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:22:09 v #23724 > >
00:22:09 v #23725 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:09 v #23726 > > inl iterate f =
00:22:09 v #23727 > >     fun x => Some (x, f x)
00:22:09 v #23728 > >     |> unfold
00:22:09 v #23729 > >
00:22:09 v #23730 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:09 v #23731 > > //// test
00:22:09 v #23732 > >
00:22:09 v #23733 > > iterate ((*) 2) 1i32
00:22:09 v #23734 > > |> item 10i32
00:22:09 v #23735 > > |> _assert_eq 1024
00:22:10 v #23736 > >
00:22:10 v #23737 > > ╭─[ 394.82ms - stdout ]────────────────────────────────────────────────────────╮
00:22:10 v #23738 > > │ __assert_eq / actual: 1024 / expected: 1024                                  │
00:22:10 v #23739 > > │                                                                              │
00:22:10 v #23740 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:22:10 v #23741 > >
00:22:10 v #23742 > > ── markdown ────────────────────────────────────────────────────────────────────
00:22:10 v #23743 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:22:10 v #23744 > > │ ### iterate'                                                                 │
00:22:10 v #23745 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:22:10 v #23746 > >
00:22:10 v #23747 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:10 v #23748 > > inl iterate_map f m =
00:22:10 v #23749 > >     fun x =>
00:22:10 v #23750 > >         m x
00:22:10 v #23751 > >         |> optionm.map fun x =>
00:22:10 v #23752 > >             x, f x
00:22:10 v #23753 > >     |> unfold
00:22:10 v #23754 > >
00:22:10 v #23755 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:10 v #23756 > > //// test
00:22:10 v #23757 > >
00:22:10 v #23758 > > iterate_map ((*) 2) Some 1i32
00:22:10 v #23759 > > |> item 10i32
00:22:10 v #23760 > > |> _assert_eq 1024
00:22:10 v #23761 > >
00:22:10 v #23762 > > ╭─[ 371.07ms - stdout ]────────────────────────────────────────────────────────╮
00:22:10 v #23763 > > │ __assert_eq / actual: 1024 / expected: 1024                                  │
00:22:10 v #23764 > > │                                                                              │
00:22:10 v #23765 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:22:10 v #23766 > >
00:22:10 v #23767 > > ── markdown ────────────────────────────────────────────────────────────────────
00:22:10 v #23768 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:22:10 v #23769 > > │ ### take_while                                                               │
00:22:10 v #23770 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:22:10 v #23771 > >
00:22:10 v #23772 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:10 v #23773 > > inl take_while cond s =
00:22:10 v #23774 > >     inl rec body i = function
00:22:10 v #23775 > >         | StreamCons (st, fn) when cond st i => StreamCons (st, fun () => loop
00:22:10 v #23776 > > (i + 1) (fn ()))
00:22:10 v #23777 > >         | _ => StreamNil
00:22:10 v #23778 > >     and inl loop i = join_body body i
00:22:10 v #23779 > >     loop 0 s
00:22:11 v #23780 > >
00:22:11 v #23781 > > ── markdown ────────────────────────────────────────────────────────────────────
00:22:11 v #23782 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:22:11 v #23783 > > │ ### sum                                                                      │
00:22:11 v #23784 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:22:11 v #23785 > >
00:22:11 v #23786 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:11 v #23787 > > inl sum seq =
00:22:11 v #23788 > >     seq |> fold (+) 0
00:22:11 v #23789 > >
00:22:11 v #23790 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:11 v #23791 > > //// test
00:22:11 v #23792 > >
00:22:11 v #23793 > > listm.init 10i32 id
00:22:11 v #23794 > > |> from_list
00:22:11 v #23795 > > |> sum
00:22:11 v #23796 > > |> _assert_eq 45
00:22:12 v #23797 > >
00:22:12 v #23798 > > ╭─[ 405.20ms - stdout ]────────────────────────────────────────────────────────╮
00:22:12 v #23799 > > │ __assert_eq / actual: 45 / expected: 45                                      │
00:22:12 v #23800 > > │                                                                              │
00:22:12 v #23801 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:22:12 v #23802 > >
00:22:12 v #23803 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:12 v #23804 > > //// test
00:22:12 v #23805 > >
00:22:12 v #23806 > > new_finite_stream print_and_return 10i32
00:22:12 v #23807 > > |> take_while (fun n (_ : i32) => n < 5)
00:22:12 v #23808 > > |> sum
00:22:12 v #23809 > > |> _assert_eq 10
00:22:12 v #23810 > >
00:22:12 v #23811 > > ╭─[ 441.39ms - stdout ]────────────────────────────────────────────────────────╮
00:22:12 v #23812 > > │ print_and_return / x: 0                                                      │
00:22:12 v #23813 > > │ print_and_return / x: 1                                                      │
00:22:12 v #23814 > > │ print_and_return / x: 2                                                      │
00:22:12 v #23815 > > │ print_and_return / x: 3                                                      │
00:22:12 v #23816 > > │ print_and_return / x: 4                                                      │
00:22:12 v #23817 > > │ print_and_return / x: 5                                                      │
00:22:12 v #23818 > > │ __assert_eq / actual: 10 / expected: 10                                      │
00:22:12 v #23819 > > │                                                                              │
00:22:12 v #23820 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:22:12 v #23821 > >
00:22:12 v #23822 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:12 v #23823 > > //// test
00:22:12 v #23824 > >
00:22:12 v #23825 > > new_infinite_stream print_and_return
00:22:12 v #23826 > > |> take_while (fun n (_ : i32) => n < 5i32)
00:22:12 v #23827 > > |> sum
00:22:12 v #23828 > > |> _assert_eq 10
00:22:13 v #23829 > >
00:22:13 v #23830 > > ╭─[ 417.74ms - stdout ]────────────────────────────────────────────────────────╮
00:22:13 v #23831 > > │ print_and_return / x: 0                                                      │
00:22:13 v #23832 > > │ print_and_return / x: 1                                                      │
00:22:13 v #23833 > > │ print_and_return / x: 2                                                      │
00:22:13 v #23834 > > │ print_and_return / x: 3                                                      │
00:22:13 v #23835 > > │ print_and_return / x: 4                                                      │
00:22:13 v #23836 > > │ print_and_return / x: 5                                                      │
00:22:13 v #23837 > > │ __assert_eq / actual: 10 / expected: 10                                      │
00:22:13 v #23838 > > │                                                                              │
00:22:13 v #23839 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:22:13 v #23840 > >
00:22:13 v #23841 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:13 v #23842 > > //// test
00:22:13 v #23843 > >
00:22:13 v #23844 > > iterate ((*) 6) 1i32
00:22:13 v #23845 > > |> take_while (fun _ i => i <= 7i32)
00:22:13 v #23846 > > |> to_list
00:22:13 v #23847 > > |> _assert_eq [[ 1i32; 6; 36; 216; 1296; 7776; 46656; 279936 ]]
00:22:13 v #23848 > >
00:22:13 v #23849 > > ╭─[ 491.18ms - stdout ]────────────────────────────────────────────────────────╮
00:22:13 v #23850 > > │ __assert_eq / actual: UH0_1                                                  │
00:22:13 v #23851 > > │   (1,                                                                        │
00:22:13 v #23852 > > │    UH0_1                                                                     │
00:22:13 v #23853 > > │      (6,                                                                     │
00:22:13 v #23854 > > │       UH0_1                                                                  │
00:22:13 v #23855 > > │         (36,                                                                 │
00:22:13 v #23856 > > │          UH0_1                                                               │
00:22:13 v #23857 > > │            (216,                                                             │
00:22:13 v #23858 > > │             UH0_1 (1296, UH0_1 (7776, UH0_1 (46656, UH0_1 (279936,           │
00:22:13 v #23859 > > │ UH0_0)))))))) / expected: UH0_1                                              │
00:22:13 v #23860 > > │   (1,                                                                        │
00:22:13 v #23861 > > │    UH0_1                                                                     │
00:22:13 v #23862 > > │      (6,                                                                     │
00:22:13 v #23863 > > │       UH0_1                                                                  │
00:22:13 v #23864 > > │         (36,                                                                 │
00:22:13 v #23865 > > │          UH0_1                                                               │
00:22:13 v #23866 > > │            (216,                                                             │
00:22:13 v #23867 > > │             UH0_1 (1296, UH0_1 (7776, UH0_1 (46656, UH0_1 (279936,           │
00:22:13 v #23868 > > │ UH0_0))))))))                                                                │
00:22:13 v #23869 > > │                                                                              │
00:22:13 v #23870 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:22:13 v #23871 > >
00:22:13 v #23872 > > ── markdown ────────────────────────────────────────────────────────────────────
00:22:13 v #23873 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:22:13 v #23874 > > │ ### indexed                                                                  │
00:22:13 v #23875 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:22:13 v #23876 > >
00:22:13 v #23877 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:13 v #23878 > > inl indexed s =
00:22:13 v #23879 > >     ((StreamNil, 0), s)
00:22:13 v #23880 > >     ||> fold fun (acc, i) x =>
00:22:13 v #23881 > >         StreamCons ((i, x), fun () => acc), i + 1
00:22:13 v #23882 > >     |> fst
00:22:13 v #23883 > >     |> rev
00:22:13 v #23884 > >
00:22:13 v #23885 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:13 v #23886 > > //// test
00:22:13 v #23887 > >
00:22:13 v #23888 > > listm.init 10i32 ((*) 2)
00:22:13 v #23889 > > |> from_list
00:22:13 v #23890 > > |> indexed
00:22:13 v #23891 > > |> item 5i32
00:22:13 v #23892 > > |> _assert_eq (5i32, 10i32)
00:22:14 v #23893 > >
00:22:14 v #23894 > > ╭─[ 434.21ms - stdout ]────────────────────────────────────────────────────────╮
00:22:14 v #23895 > > │ __assert_eq / actual: struct (5, 10) / expected: struct (5, 10)              │
00:22:14 v #23896 > > │                                                                              │
00:22:14 v #23897 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:22:14 v #23898 > >
00:22:14 v #23899 > > ── markdown ────────────────────────────────────────────────────────────────────
00:22:14 v #23900 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:22:14 v #23901 > > │ ### map                                                                      │
00:22:14 v #23902 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:22:14 v #23903 > >
00:22:14 v #23904 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:14 v #23905 > > inl map fn s =
00:22:14 v #23906 > >     (s, StreamNil)
00:22:14 v #23907 > >     ||> fold_back fun x acc =>
00:22:14 v #23908 > >         StreamCons (fn x, fun () => acc)
00:22:14 v #23909 > >
00:22:14 v #23910 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:14 v #23911 > > //// test
00:22:14 v #23912 > >
00:22:14 v #23913 > > listm.init 10i32 id
00:22:14 v #23914 > > |> from_list
00:22:14 v #23915 > > |> map ((*) 2)
00:22:14 v #23916 > > |> item 5i32
00:22:14 v #23917 > > |> _assert_eq 10i32
00:22:15 v #23918 > >
00:22:15 v #23919 > > ╭─[ 405.58ms - stdout ]────────────────────────────────────────────────────────╮
00:22:15 v #23920 > > │ __assert_eq / actual: 10 / expected: 10                                      │
00:22:15 v #23921 > > │                                                                              │
00:22:15 v #23922 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:22:15 v #23923 > >
00:22:15 v #23924 > > ── markdown ────────────────────────────────────────────────────────────────────
00:22:15 v #23925 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:22:15 v #23926 > > │ ### zip_with                                                                 │
00:22:15 v #23927 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:22:15 v #23928 > >
00:22:15 v #23929 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:15 v #23930 > > inl zip_with fn s1 s2 =
00:22:15 v #23931 > >     inl rec loop s1 s2 =
00:22:15 v #23932 > >         match s1, s2 with
00:22:15 v #23933 > >         | StreamCons (st1, fn1), StreamCons (st2, fn2) =>
00:22:15 v #23934 > >             StreamCons (fn st1 st2, fun () => loop (fn1 ()) (fn2 ()))
00:22:15 v #23935 > >         | StreamNil, _ | _, StreamNil => StreamNil
00:22:15 v #23936 > >     loop s1 s2
00:22:15 v #23937 > >
00:22:15 v #23938 > > inl zip_with_ fn s1 s2 =
00:22:15 v #23939 > >     let rec loop s1 s2 =
00:22:15 v #23940 > >         match s1, s2 with
00:22:15 v #23941 > >         | StreamCons (st1, fn1), StreamCons (st2, fn2) =>
00:22:15 v #23942 > >             StreamCons (fn st1 st2, fun () => loop (fn1 ()) (fn2 ()))
00:22:15 v #23943 > >         | StreamNil, _ | _, StreamNil => StreamNil
00:22:15 v #23944 > >     loop s1 s2
00:22:15 v #23945 > >
00:22:15 v #23946 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:15 v #23947 > > //// test
00:22:15 v #23948 > >
00:22:15 v #23949 > > ((listm.init 10i32 id |> from_list), (listm.init 10i32 ((*) 2) |> from_list))
00:22:15 v #23950 > > ||> zip_with (+)
00:22:15 v #23951 > > |> item 2i32
00:22:15 v #23952 > > |> _assert_eq 6
00:22:15 v #23953 > >
00:22:15 v #23954 > > ╭─[ 397.97ms - stdout ]────────────────────────────────────────────────────────╮
00:22:15 v #23955 > > │ __assert_eq / actual: 6 / expected: 6                                        │
00:22:15 v #23956 > > │                                                                              │
00:22:15 v #23957 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:22:15 v #23958 > >
00:22:15 v #23959 > > ── markdown ────────────────────────────────────────────────────────────────────
00:22:15 v #23960 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:22:15 v #23961 > > │ ### zip                                                                      │
00:22:15 v #23962 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:22:15 v #23963 > >
00:22:15 v #23964 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:15 v #23965 > > inl zip s1 s2 =
00:22:15 v #23966 > >     zip_with pair s1 s2
00:22:15 v #23967 > >
00:22:15 v #23968 > > inl zip_ s1 s2 =
00:22:15 v #23969 > >     zip_with_ pair s1 s2
00:22:16 v #23970 > >
00:22:16 v #23971 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:16 v #23972 > > //// test
00:22:16 v #23973 > >
00:22:16 v #23974 > > ((listm.init 10i32 id |> from_list), (listm.init 10i32 ((*) 2) |> from_list))
00:22:16 v #23975 > > ||> zip
00:22:16 v #23976 > > |> item 5i32
00:22:16 v #23977 > > |> _assert_eq (5, 10)
00:22:16 v #23978 > >
00:22:16 v #23979 > > ╭─[ 414.79ms - stdout ]────────────────────────────────────────────────────────╮
00:22:16 v #23980 > > │ __assert_eq / actual: struct (5, 10) / expected: struct (5, 10)              │
00:22:16 v #23981 > > │                                                                              │
00:22:16 v #23982 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:22:16 v #23983 > >
00:22:16 v #23984 > > ── markdown ────────────────────────────────────────────────────────────────────
00:22:16 v #23985 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:22:16 v #23986 > > │ ### unzip                                                                    │
00:22:16 v #23987 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:22:16 v #23988 > >
00:22:16 v #23989 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:16 v #23990 > > inl unzip s =
00:22:16 v #23991 > >     inl rec body s =
00:22:16 v #23992 > >         match s with
00:22:16 v #23993 > >         | StreamCons ((x, y), fn) =>
00:22:16 v #23994 > >             inl xs, ys = loop (fn ())
00:22:16 v #23995 > >             StreamCons (x, fun () => xs), StreamCons (y, fun () => ys)
00:22:16 v #23996 > >         | StreamNil => pair StreamNil StreamNil
00:22:16 v #23997 > >     and inl loop x =
00:22:16 v #23998 > >         if var_is x |> not
00:22:16 v #23999 > >         then body x
00:22:16 v #24000 > >         else
00:22:16 v #24001 > >             inl x = dyn x
00:22:16 v #24002 > >             join body x
00:22:16 v #24003 > >     loop s
00:22:17 v #24004 > >
00:22:17 v #24005 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:17 v #24006 > > //// test
00:22:17 v #24007 > >
00:22:17 v #24008 > > listm.init 10i32 id
00:22:17 v #24009 > > |> listm.map (fun x => x, x)
00:22:17 v #24010 > > |> from_list
00:22:17 v #24011 > > |> unzip
00:22:17 v #24012 > > |> fun x, y =>
00:22:17 v #24013 > >     x |> sum
00:22:17 v #24014 > >     |> _assert_eq 45
00:22:17 v #24015 > >
00:22:17 v #24016 > >     y |> sum
00:22:17 v #24017 > >     |> _assert_eq 45
00:22:17 v #24018 > >
00:22:17 v #24019 > > ╭─[ 416.28ms - stdout ]────────────────────────────────────────────────────────╮
00:22:17 v #24020 > > │ __assert_eq / actual: 45 / expected: 45                                      │
00:22:17 v #24021 > > │ __assert_eq / actual: 45 / expected: 45                                      │
00:22:17 v #24022 > > │                                                                              │
00:22:17 v #24023 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:22:17 v #24024 > >
00:22:17 v #24025 > > ── markdown ────────────────────────────────────────────────────────────────────
00:22:17 v #24026 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:22:17 v #24027 > > │ ## rust                                                                      │
00:22:17 v #24028 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:22:17 v #24029 > >
00:22:17 v #24030 > > ── markdown ────────────────────────────────────────────────────────────────────
00:22:17 v #24031 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:22:17 v #24032 > > │ ### io_error                                                                 │
00:22:17 v #24033 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:22:17 v #24034 > >
00:22:17 v #24035 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:17 v #24036 > > nominal io_error =
00:22:17 v #24037 > >     `(
00:22:17 v #24038 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:22:17 v #24039 > > Fable.Core.Emit(\"std::io::Error\")>]]\ntype std_io_Error = class
00:22:17 v #24040 > > end\n#else\ntype std_io_Error = string\n#endif\n"
00:22:17 v #24041 > >         $'' : $'std_io_Error'
00:22:17 v #24042 > >     )
00:22:17 v #24043 > >
00:22:17 v #24044 > > ── markdown ────────────────────────────────────────────────────────────────────
00:22:17 v #24045 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:22:17 v #24046 > > │ ### new_io_error                                                             │
00:22:17 v #24047 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:22:17 v #24048 > >
00:22:17 v #24049 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:17 v #24050 > > inl new_io_error (text : string) : io_error =
00:22:17 v #24051 > >     run_target_args (fun () => text) function
00:22:17 v #24052 > >         | Rust _ => fun text =>
00:22:17 v #24053 > >             !\\(text, $'"std::io::Error::new(std::io::ErrorKind::Other, &*$0)"')
00:22:17 v #24054 > >         | _ => fun text => text |> unbox
00:22:18 v #24055 > >
00:22:18 v #24056 > > ── markdown ────────────────────────────────────────────────────────────────────
00:22:18 v #24057 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:22:18 v #24058 > > │ ### buf_reader                                                               │
00:22:18 v #24059 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:22:18 v #24060 > >
00:22:18 v #24061 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:18 v #24062 > > nominal buf_reader t =
00:22:18 v #24063 > >     `(
00:22:18 v #24064 > >         backend_switch `(()) `({}) {
00:22:18 v #24065 > >             Fsharp =
00:22:18 v #24066 > >                 (fun () =>
00:22:18 v #24067 > >                     global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:22:18 v #24068 > > Fable.Core.Emit(\"std::io::BufReader<$0>\")>]]\n#endif\ntype
00:22:18 v #24069 > > std_io_BufReader<'T> = class end"
00:22:18 v #24070 > >                 ) : () -> ()
00:22:18 v #24071 > >         }
00:22:18 v #24072 > >         $'' : $'std_io_BufReader<`t>'
00:22:18 v #24073 > >     )
00:22:18 v #24074 > >
00:22:18 v #24075 > > ── markdown ────────────────────────────────────────────────────────────────────
00:22:18 v #24076 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:22:18 v #24077 > > │ ### cursor                                                                   │
00:22:18 v #24078 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:22:18 v #24079 > >
00:22:18 v #24080 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:18 v #24081 > > nominal cursor t =
00:22:18 v #24082 > >     `(
00:22:18 v #24083 > >         backend_switch `(()) `({}) {
00:22:18 v #24084 > >             Fsharp =
00:22:18 v #24085 > >                 (fun () =>
00:22:18 v #24086 > >                     global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:22:18 v #24087 > > Fable.Core.Emit(\"std::io::Cursor<$0>\")>]]\n#endif\ntype std_io_Cursor<'T> =
00:22:18 v #24088 > > class end"
00:22:18 v #24089 > >                 ) : () -> ()
00:22:18 v #24090 > >         }
00:22:18 v #24091 > >         $'' : $'std_io_Cursor<`t>'
00:22:18 v #24092 > >     )
00:22:19 v #24093 > >
00:22:19 v #24094 > > ── markdown ────────────────────────────────────────────────────────────────────
00:22:19 v #24095 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:22:19 v #24096 > > │ ### buf_reader_tokio                                                         │
00:22:19 v #24097 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:22:19 v #24098 > >
00:22:19 v #24099 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:19 v #24100 > > nominal buf_reader_tokio t =
00:22:19 v #24101 > >     `(
00:22:19 v #24102 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:22:19 v #24103 > > Fable.Core.Emit(\"tokio::io::BufReader<$0>\")>]]\n#endif\ntype
00:22:19 v #24104 > > tokio_io_BufReader<'T> = class end"
00:22:19 v #24105 > >         $'' : $'tokio_io_BufReader<`t>'
00:22:19 v #24106 > >     )
00:22:19 v #24107 > >
00:22:19 v #24108 > > ── markdown ────────────────────────────────────────────────────────────────────
00:22:19 v #24109 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:22:19 v #24110 > > │ ### new_buf_reader                                                           │
00:22:19 v #24111 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:22:19 v #24112 > >
00:22:19 v #24113 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:19 v #24114 > > inl new_buf_reader forall t. (x : t) : buf_reader t =
00:22:19 v #24115 > >     !\\(x, $'"std::io::BufReader::new($0)"')
00:22:19 v #24116 > >
00:22:19 v #24117 > > ── markdown ────────────────────────────────────────────────────────────────────
00:22:19 v #24118 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:22:19 v #24119 > > │ ### new_cursor                                                               │
00:22:19 v #24120 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:22:19 v #24121 > >
00:22:19 v #24122 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:19 v #24123 > > inl new_cursor forall t. (x : t) : cursor t =
00:22:19 v #24124 > >     !\($'"std::io::Cursor::new(!x)"')
00:22:20 v #24125 > >
00:22:20 v #24126 > > ── markdown ────────────────────────────────────────────────────────────────────
00:22:20 v #24127 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:22:20 v #24128 > > │ ### lines                                                                    │
00:22:20 v #24129 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:22:20 v #24130 > >
00:22:20 v #24131 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:20 v #24132 > > nominal lines t =
00:22:20 v #24133 > >     `(
00:22:20 v #24134 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:22:20 v #24135 > > Fable.Core.Emit(\"std::io::Lines<$0>\")>]]\n#endif\ntype std_io_Lines<'T> =
00:22:20 v #24136 > > class end"
00:22:20 v #24137 > >         $'' : $'std_io_Lines<`t>'
00:22:20 v #24138 > >     )
00:22:20 v #24139 > >
00:22:20 v #24140 > > ── markdown ────────────────────────────────────────────────────────────────────
00:22:20 v #24141 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:22:20 v #24142 > > │ ### buf_read_lines                                                           │
00:22:20 v #24143 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:22:20 v #24144 > >
00:22:20 v #24145 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:20 v #24146 > > inl buf_read_lines forall t. (buf_reader : buf_reader t) : lines (buf_reader t)
00:22:20 v #24147 > > =
00:22:20 v #24148 > >     !\($'"std::io::BufRead::lines(!buf_reader)"')
00:22:21 v #24149 > >
00:22:21 v #24150 > > ── markdown ────────────────────────────────────────────────────────────────────
00:22:21 v #24151 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:22:21 v #24152 > > │ ### decode_reader_bytes                                                      │
00:22:21 v #24153 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:22:21 v #24154 > >
00:22:21 v #24155 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:21 v #24156 > > nominal decode_reader_bytes t u =
00:22:21 v #24157 > >     `(
00:22:21 v #24158 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:22:21 v #24159 > > Fable.Core.Emit(\"encoding_rs_io::DecodeReaderBytes<$0, $1>\")>]]\n#endif\ntype
00:22:21 v #24160 > > encoding_rs_io_DecodeReaderBytes<'T, 'U> = class end"
00:22:21 v #24161 > >         $'' : $'encoding_rs_io_DecodeReaderBytes<`t, `u>'
00:22:21 v #24162 > >     )
00:22:21 v #24163 > >
00:22:21 v #24164 > > ── markdown ────────────────────────────────────────────────────────────────────
00:22:21 v #24165 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:22:21 v #24166 > > │ ### decode_reader_bytes_build                                                │
00:22:21 v #24167 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:22:21 v #24168 > >
00:22:21 v #24169 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:21 v #24170 > > inl decode_reader_bytes_build forall t. (x : t) : decode_reader_bytes t (am'.vec
00:22:21 v #24171 > > u8) =
00:22:21 v #24172 > >
00:22:21 v #24173 > > !\($'"encoding_rs_io::DecodeReaderBytesBuilder::new().encoding(Some(encoding_rs:
00:22:21 v #24174 > > :UTF_8)).build(!x)"')
00:22:21 v #24175 > >
00:22:21 v #24176 > > !\($'"encoding_rs_io::DecodeReaderBytesBuilder::new().encoding(Some(encoding_rs:
00:22:21 v #24177 > > :UTF_8)).utf8_passthru(true).build(!x)"')
00:22:21 v #24178 > >     !\\(x,
00:22:21 v #24179 > > $'"encoding_rs_io::DecodeReaderBytesBuilder::new().utf8_passthru(true).build($0)
00:22:21 v #24180 > > "')
00:22:21 v #24181 > >     // !\($'"encoding_rs_io::DecodeReaderBytes::new(!x)"')
00:22:21 v #24182 > >
00:22:21 v #24183 > > ── markdown ────────────────────────────────────────────────────────────────────
00:22:21 v #24184 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:22:21 v #24185 > > │ ### buf_reader_read                                                          │
00:22:21 v #24186 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:22:21 v #24187 > >
00:22:21 v #24188 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:21 v #24189 > > inl buf_reader_read forall el dim. (slice : am'.slice' el dim) (buf_reader :
00:22:21 v #24190 > > buf_reader el) : resultm.result' unativeint io_error =
00:22:21 v #24191 > >     (!\($'"true; let mut !slice = !slice"') : bool) |> ignore
00:22:21 v #24192 > >     !\($'"std::io::Read::read(&mut !buf_reader, &mut !slice)"')
00:22:22 v #24193 > >
00:22:22 v #24194 > > ── markdown ────────────────────────────────────────────────────────────────────
00:22:22 v #24195 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:22:22 v #24196 > > │ ### io_read_by_ref                                                           │
00:22:22 v #24197 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:22:22 v #24198 > >
00:22:22 v #24199 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:22 v #24200 > > inl io_read_by_ref forall t. (lines : lines t) : lines t =
00:22:22 v #24201 > >     !\\(lines, $'"std::io::Read::by_ref($0)"')
00:22:22 v #24202 > 00:00:27 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 34270 }
00:22:22 v #24203 > 00:00:27 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/polyglot/lib/spiral/stream.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/polyglot/lib/spiral/stream.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:22:24 v #24204 > 00:00:28 v #5 ! [NbConvertApp] Converting notebook c:/home/git/polyglot/lib/spiral/stream.dib.ipynb to html
00:22:24 v #24205 > 00:00:28 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:22:24 v #24206 > 00:00:28 v #7 !   validate(nb)
00:22:24 v #24207 > 00:00:29 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:22:24 v #24208 > 00:00:29 v #9 !   return _pygments_highlight(
00:22:25 v #24209 > 00:00:29 v #10 ! [NbConvertApp] Writing 372366 bytes to c:\home\git\polyglot\lib\spiral\stream.dib.html
00:22:25 v #24210 > 00:00:30 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 854 }
00:22:25 v #24211 > 00:00:30 d #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 854 }
00:22:25 v #24212 > 00:00:30 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/stream.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/stream.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:22:25 v #24213 > 00:00:30 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:22:25 v #24214 > 00:00:30 d #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:22:25 v #24215 > 00:00:30 d #16 spiral_builder.run / dib / { exit_code = 0; result_length = 35183 }
00:22:25 d #24216 runtime.execute_with_options_async / { exit_code = 0; output_length = 39264 }
00:22:25 d #31 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder.exe dib --path stream.dib --retries 3
00:22:25 d #24217 runtime.execute_with_options_async / { file_name = ../../workspace/target/release/spiral_builder.exe; arguments = US5_0 "dib --path threading.dib --retries 3"; options = { command = ../../workspace/target/release/spiral_builder.exe dib --path threading.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:22:25 v #24218 > 00:00:00 d #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "threading.dib", "--retries", "3"])) }
00:22:25 v #24219 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/polyglot/lib/spiral/threading.dib", "--output-path", "c:/home/git/polyglot/lib/spiral/threading.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/polyglot/lib/spiral/threading.dib" --output-path "c:/home/git/polyglot/lib/spiral/threading.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:22:27 v #24220 > >
00:22:27 v #24221 > > ── markdown ────────────────────────────────────────────────────────────────────
00:22:27 v #24222 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:22:27 v #24223 > > │ # threading                                                                  │
00:22:27 v #24224 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:22:30 v #24225 > >
00:22:30 v #24226 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:30 v #24227 > > open rust
00:22:30 v #24228 > > open rust_operators
00:22:31 v #24229 > >
00:22:31 v #24230 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:31 v #24231 > > //// test
00:22:31 v #24232 > >
00:22:31 v #24233 > > open testing
00:22:32 v #24234 > >
00:22:32 v #24235 > > ── markdown ────────────────────────────────────────────────────────────────────
00:22:32 v #24236 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:22:32 v #24237 > > │ ## rust                                                                      │
00:22:32 v #24238 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:22:32 v #24239 > >
00:22:32 v #24240 > > ── markdown ────────────────────────────────────────────────────────────────────
00:22:32 v #24241 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:22:32 v #24242 > > │ ### sleep                                                                    │
00:22:32 v #24243 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:22:32 v #24244 > >
00:22:32 v #24245 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:32 v #24246 > > inl sleep (duration : date_time.duration) : () =
00:22:32 v #24247 > >     inl duration = join duration
00:22:32 v #24248 > >     !\($'"std::thread::sleep(!duration)"')
00:22:32 v #24249 > >
00:22:32 v #24250 > > ── markdown ────────────────────────────────────────────────────────────────────
00:22:32 v #24251 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:22:32 v #24252 > > │ ### join_handle                                                              │
00:22:32 v #24253 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:22:32 v #24254 > >
00:22:32 v #24255 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:32 v #24256 > > nominal join_handle t =
00:22:32 v #24257 > >     `(
00:22:32 v #24258 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:22:32 v #24259 > > Fable.Core.Emit(\"std::thread::JoinHandle<$0>\")>]]\n#endif\ntype
00:22:32 v #24260 > > std_thread_JoinHandle<'T> = class end"
00:22:32 v #24261 > >         $'' : $'std_thread_JoinHandle<`t>'
00:22:32 v #24262 > >     )
00:22:33 v #24263 > >
00:22:33 v #24264 > > ── markdown ────────────────────────────────────────────────────────────────────
00:22:33 v #24265 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:22:33 v #24266 > > │ ### spawn                                                                    │
00:22:33 v #24267 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:22:33 v #24268 > >
00:22:33 v #24269 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:33 v #24270 > > inl spawn forall t. depth flag (x : () -> t) : join_handle t =
00:22:33 v #24271 > >     if flag = 1u8
00:22:33 v #24272 > >     then (!\($'"true; let __spawn = std::thread::spawn(move || { //"') : bool)
00:22:33 v #24273 > > |> ignore
00:22:33 v #24274 > >     else (!\($'"true; let __spawn = std::thread::spawn(|| { //"') : bool) |>
00:22:33 v #24275 > > ignore
00:22:33 v #24276 > >
00:22:33 v #24277 > >     let x' = x ()
00:22:33 v #24278 > >     inl x' = join x'
00:22:33 v #24279 > >
00:22:33 v #24280 > >     x' |> rust.fix_closure depth
00:22:33 v #24281 > >
00:22:33 v #24282 > >     !\($'"__spawn"')
00:22:33 v #24283 > >
00:22:33 v #24284 > > ── markdown ────────────────────────────────────────────────────────────────────
00:22:33 v #24285 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:22:33 v #24286 > > │ ### join'                                                                    │
00:22:33 v #24287 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:22:33 v #24288 > >
00:22:33 v #24289 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:33 v #24290 > > inl join' forall t.
00:22:33 v #24291 > >     (x : join_handle t)
00:22:33 v #24292 > >     : resultm.result'
00:22:33 v #24293 > >         t
00:22:33 v #24294 > >         (
00:22:33 v #24295 > >             rust.box (
00:22:33 v #24296 > >                 rust.lifetime_ref
00:22:33 v #24297 > >                     rust.dyn'
00:22:33 v #24298 > >                     (
00:22:33 v #24299 > >                         rust.lifetime_join
00:22:33 v #24300 > >                             rust.any
00:22:33 v #24301 > >                             (
00:22:33 v #24302 > >                                 rust.lifetime_ref
00:22:33 v #24303 > >                                     rust.send
00:22:33 v #24304 > >                                     rust.static_lifetime
00:22:33 v #24305 > >                             )
00:22:33 v #24306 > >                     )
00:22:33 v #24307 > >             )
00:22:33 v #24308 > >         ) =
00:22:33 v #24309 > >     !\\(x, $'"std::thread::JoinHandle::join($0)"')
00:22:33 v #24310 > >
00:22:33 v #24311 > > ── markdown ────────────────────────────────────────────────────────────────────
00:22:33 v #24312 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:22:33 v #24313 > > │ ### arc                                                                      │
00:22:33 v #24314 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:22:33 v #24315 > >
00:22:33 v #24316 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:33 v #24317 > > nominal arc t =
00:22:33 v #24318 > >     `(
00:22:33 v #24319 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:22:33 v #24320 > > Fable.Core.Emit(\"std::sync::Arc<$0>\")>]]\n#endif\ntype std_sync_Arc<'T> =
00:22:33 v #24321 > > class end"
00:22:33 v #24322 > >         $'' : $'std_sync_Arc<`t>'
00:22:33 v #24323 > >     )
00:22:34 v #24324 > >
00:22:34 v #24325 > > ── markdown ────────────────────────────────────────────────────────────────────
00:22:34 v #24326 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:22:34 v #24327 > > │ ### new_arc                                                                  │
00:22:34 v #24328 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:22:34 v #24329 > >
00:22:34 v #24330 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:34 v #24331 > > inl new_arc forall t. (x : t) : arc t =
00:22:34 v #24332 > >     !\($'"std::sync::Arc::new(!x)"')
00:22:34 v #24333 > >
00:22:34 v #24334 > > ── markdown ────────────────────────────────────────────────────────────────────
00:22:34 v #24335 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:22:34 v #24336 > > │ ### mutex                                                                    │
00:22:34 v #24337 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:22:34 v #24338 > >
00:22:34 v #24339 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:34 v #24340 > > nominal mutex t =
00:22:34 v #24341 > >     `(
00:22:34 v #24342 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:22:34 v #24343 > > Fable.Core.Emit(\"std::sync::Mutex<$0>\")>]]\n#endif\ntype std_sync_Mutex<'T> =
00:22:34 v #24344 > > class end"
00:22:34 v #24345 > >         $'' : $'std_sync_Mutex<`t>'
00:22:34 v #24346 > >     )
00:22:35 v #24347 > >
00:22:35 v #24348 > > ── markdown ────────────────────────────────────────────────────────────────────
00:22:35 v #24349 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:22:35 v #24350 > > │ ### new_mutex                                                                │
00:22:35 v #24351 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:22:35 v #24352 > >
00:22:35 v #24353 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:35 v #24354 > > inl new_mutex forall t. (x : t) : mutex t =
00:22:35 v #24355 > >     !\($'"std::sync::Mutex::new(!x)"')
00:22:35 v #24356 > >
00:22:35 v #24357 > > ── markdown ────────────────────────────────────────────────────────────────────
00:22:35 v #24358 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:22:35 v #24359 > > │ ### rw_lock                                                                  │
00:22:35 v #24360 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:22:35 v #24361 > >
00:22:35 v #24362 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:35 v #24363 > > nominal rw_lock t =
00:22:35 v #24364 > >     `(
00:22:35 v #24365 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:22:35 v #24366 > > Fable.Core.Emit(\"std::sync::RwLock<$0>\")>]]\n#endif\ntype std_sync_RwLock<'T>
00:22:35 v #24367 > > = class end"
00:22:35 v #24368 > >         $'' : $'std_sync_RwLock<`t>'
00:22:35 v #24369 > >     )
00:22:35 v #24370 > >
00:22:35 v #24371 > > ── markdown ────────────────────────────────────────────────────────────────────
00:22:35 v #24372 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:22:35 v #24373 > > │ ### new_rw_lock                                                              │
00:22:35 v #24374 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:22:35 v #24375 > >
00:22:35 v #24376 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:35 v #24377 > > inl new_rw_lock forall t. (x : t) : rw_lock t =
00:22:35 v #24378 > >     !\\(x, $'"std::sync::RwLock::new($0)"')
00:22:36 v #24379 > >
00:22:36 v #24380 > > ── markdown ────────────────────────────────────────────────────────────────────
00:22:36 v #24381 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:22:36 v #24382 > > │ ### new_arc_mutex                                                            │
00:22:36 v #24383 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:22:36 v #24384 > >
00:22:36 v #24385 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:36 v #24386 > > inl new_arc_mutex forall t. (x : t) : arc (mutex t) =
00:22:36 v #24387 > >     x |> new_mutex |> new_arc
00:22:36 v #24388 > >
00:22:36 v #24389 > > ── markdown ────────────────────────────────────────────────────────────────────
00:22:36 v #24390 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:22:36 v #24391 > > │ ### new_arc_rw_lock                                                          │
00:22:36 v #24392 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:22:36 v #24393 > >
00:22:36 v #24394 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:36 v #24395 > > inl new_arc_rw_lock forall t. (x : t) : arc (rw_lock t) =
00:22:36 v #24396 > >     x |> new_rw_lock |> new_arc
00:22:37 v #24397 > >
00:22:37 v #24398 > > ── markdown ────────────────────────────────────────────────────────────────────
00:22:37 v #24399 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:22:37 v #24400 > > │ ### arc_clone                                                                │
00:22:37 v #24401 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:22:37 v #24402 > >
00:22:37 v #24403 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:37 v #24404 > > inl arc_clone forall t. (x : arc t) : arc t =
00:22:37 v #24405 > >     inl x = join x
00:22:37 v #24406 > >     !\($'"std::sync::Arc::clone(&!x)"')
00:22:37 v #24407 > >
00:22:37 v #24408 > > ── markdown ────────────────────────────────────────────────────────────────────
00:22:37 v #24409 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:22:37 v #24410 > > │ ### arc_ptr_eq                                                               │
00:22:37 v #24411 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:22:37 v #24412 > >
00:22:37 v #24413 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:37 v #24414 > > inl arc_ptr_eq forall t. (a : rust.ref (arc t)) (b : rust.ref (arc t)) : bool =
00:22:37 v #24415 > >     !\\((a, b), $'"std::sync::Arc::ptr_eq($0, $1)"')
00:22:38 v #24416 > >
00:22:38 v #24417 > > ── markdown ────────────────────────────────────────────────────────────────────
00:22:38 v #24418 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:22:38 v #24419 > > │ ### arc_try_unwrap                                                           │
00:22:38 v #24420 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:22:38 v #24421 > >
00:22:38 v #24422 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:38 v #24423 > > inl arc_try_unwrap forall t. (x : arc t) : resultm.result' t (arc t) =
00:22:38 v #24424 > >     !\\(x, $'"std::sync::Arc::try_unwrap($0)"')
00:22:38 v #24425 > >
00:22:38 v #24426 > > ── markdown ────────────────────────────────────────────────────────────────────
00:22:38 v #24427 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:22:38 v #24428 > > │ ### arc_into_raw                                                             │
00:22:38 v #24429 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:22:38 v #24430 > >
00:22:38 v #24431 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:38 v #24432 > > inl arc_into_raw forall t. (x : arc t) : rust.ptr t =
00:22:38 v #24433 > >     !\\(x, $'"std::sync::Arc::into_raw($0)"')
00:22:38 v #24434 > >
00:22:38 v #24435 > > ── markdown ────────────────────────────────────────────────────────────────────
00:22:38 v #24436 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:22:38 v #24437 > > │ ### arc_from_raw                                                             │
00:22:38 v #24438 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:22:38 v #24439 > >
00:22:38 v #24440 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:38 v #24441 > > inl arc_from_raw forall t. (x : rust.ptr t) : arc t =
00:22:38 v #24442 > >     !\\(x, $'"std::sync::Arc::from_raw($0)"')
00:22:39 v #24443 > >
00:22:39 v #24444 > > ── markdown ────────────────────────────────────────────────────────────────────
00:22:39 v #24445 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:22:39 v #24446 > > │ ### partial_eq_wrapper_arc_eq                                                │
00:22:39 v #24447 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:22:39 v #24448 > >
00:22:39 v #24449 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:39 v #24450 > > inl partial_eq_wrapper_arc_eq forall t.
00:22:39 v #24451 > >     (self : rust.ref (rust.partial_eq_wrapper (arc t)))
00:22:39 v #24452 > >     (other : rust.ref (rust.partial_eq_wrapper (arc t)))
00:22:39 v #24453 > >     =
00:22:39 v #24454 > >     self
00:22:39 v #24455 > >     |> rust.unwrap_0_ref
00:22:39 v #24456 > >     |> arc_ptr_eq (
00:22:39 v #24457 > >         other
00:22:39 v #24458 > >         |> rust.unwrap_0_ref
00:22:39 v #24459 > >     )
00:22:39 v #24460 > >
00:22:39 v #24461 > > ── markdown ────────────────────────────────────────────────────────────────────
00:22:39 v #24462 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:22:39 v #24463 > > │ ### new_partial_eq_wrapper_arc                                               │
00:22:39 v #24464 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:22:39 v #24465 > >
00:22:39 v #24466 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:39 v #24467 > > inl new_partial_eq_wrapper_arc forall t. (x : arc t) : rust.partial_eq_wrapper
00:22:39 v #24468 > > (arc t) =
00:22:39 v #24469 > >     x |> rust.new_partial_eq_wrapper partial_eq_wrapper_arc_eq
00:22:40 v #24470 > >
00:22:40 v #24471 > > ── markdown ────────────────────────────────────────────────────────────────────
00:22:40 v #24472 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:22:40 v #24473 > > │ ### mutex_guard                                                              │
00:22:40 v #24474 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:22:40 v #24475 > >
00:22:40 v #24476 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:40 v #24477 > > nominal mutex_guard t =
00:22:40 v #24478 > >     `(
00:22:40 v #24479 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:22:40 v #24480 > > Fable.Core.Emit(\"std::sync::MutexGuard<$0>\")>]]\n#endif\ntype
00:22:40 v #24481 > > std_sync_MutexGuard<'T> = class end"
00:22:40 v #24482 > >         $'' : $'std_sync_MutexGuard<`t>'
00:22:40 v #24483 > >     )
00:22:40 v #24484 > >
00:22:40 v #24485 > > ── markdown ────────────────────────────────────────────────────────────────────
00:22:40 v #24486 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:22:40 v #24487 > > │ ### rw_lock_read_guard                                                       │
00:22:40 v #24488 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:22:40 v #24489 > >
00:22:40 v #24490 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:40 v #24491 > > nominal rw_lock_read_guard t =
00:22:40 v #24492 > >     `(
00:22:40 v #24493 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:22:40 v #24494 > > Fable.Core.Emit(\"std::sync::RwLockReadGuard<$0>\")>]]\n#endif\ntype
00:22:40 v #24495 > > std_sync_RwLockReadGuard<'T> = class end"
00:22:40 v #24496 > >         $'' : $'std_sync_RwLockReadGuard<`t>'
00:22:40 v #24497 > >     )
00:22:40 v #24498 > >
00:22:40 v #24499 > > ── markdown ────────────────────────────────────────────────────────────────────
00:22:40 v #24500 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:22:40 v #24501 > > │ ### rw_lock_write_guard                                                      │
00:22:40 v #24502 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:22:40 v #24503 > >
00:22:40 v #24504 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:40 v #24505 > > nominal rw_lock_write_guard t =
00:22:40 v #24506 > >     `(
00:22:40 v #24507 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:22:40 v #24508 > > Fable.Core.Emit(\"std::sync::RwLockWriteGuard<$0>\")>]]\n#endif\ntype
00:22:40 v #24509 > > std_sync_RwLockWriteGuard<'T> = class end"
00:22:40 v #24510 > >         $'' : $'std_sync_RwLockWriteGuard<`t>'
00:22:40 v #24511 > >     )
00:22:41 v #24512 > >
00:22:41 v #24513 > > ── markdown ────────────────────────────────────────────────────────────────────
00:22:41 v #24514 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:22:41 v #24515 > > │ ### poison_error                                                             │
00:22:41 v #24516 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:22:41 v #24517 > >
00:22:41 v #24518 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:41 v #24519 > > nominal poison_error t =
00:22:41 v #24520 > >     `(
00:22:41 v #24521 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:22:41 v #24522 > > Fable.Core.Emit(\"std::sync::PoisonError<$0>\")>]]\n#endif\ntype
00:22:41 v #24523 > > std_sync_PoisonError<'T> = class end"
00:22:41 v #24524 > >         $'' : $'std_sync_PoisonError<`t>'
00:22:41 v #24525 > >     )
00:22:41 v #24526 > >
00:22:41 v #24527 > > ── markdown ────────────────────────────────────────────────────────────────────
00:22:41 v #24528 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:22:41 v #24529 > > │ ### try_lock_error                                                           │
00:22:41 v #24530 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:22:41 v #24531 > >
00:22:41 v #24532 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:41 v #24533 > > nominal try_lock_error t =
00:22:41 v #24534 > >     `(
00:22:41 v #24535 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:22:41 v #24536 > > Fable.Core.Emit(\"std::sync::TryLockError<$0>\")>]]\n#endif\ntype
00:22:41 v #24537 > > std_sync_TryLockError<'T> = class end"
00:22:41 v #24538 > >         $'' : $'std_sync_TryLockError<`t>'
00:22:41 v #24539 > >     )
00:22:42 v #24540 > >
00:22:42 v #24541 > > ── markdown ────────────────────────────────────────────────────────────────────
00:22:42 v #24542 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:22:42 v #24543 > > │ ### arc_mutex_lock                                                           │
00:22:42 v #24544 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:22:42 v #24545 > >
00:22:42 v #24546 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:42 v #24547 > > inl arc_mutex_lock forall t. (x : arc (mutex t)) : resultm.result' (mutex_guard
00:22:42 v #24548 > > t) (poison_error (mutex_guard t)) =
00:22:42 v #24549 > >     inl x = x |> rust.emit
00:22:42 v #24550 > >     !\($'"!x.lock()"')
00:22:42 v #24551 > >
00:22:42 v #24552 > > ── markdown ────────────────────────────────────────────────────────────────────
00:22:42 v #24553 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:22:42 v #24554 > > │ ### arc_rw_lock_read                                                         │
00:22:42 v #24555 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:22:42 v #24556 > >
00:22:42 v #24557 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:42 v #24558 > > inl arc_rw_lock_read forall t. (x : arc (rw_lock t)) : resultm.result'
00:22:42 v #24559 > > (rw_lock_read_guard t) (poison_error (rw_lock_read_guard t)) =
00:22:42 v #24560 > >     inl x = x |> rust.emit
00:22:42 v #24561 > >     !\($'"!x.read()"')
00:22:42 v #24562 > >
00:22:42 v #24563 > > ── markdown ────────────────────────────────────────────────────────────────────
00:22:42 v #24564 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:22:42 v #24565 > > │ ### arc_rw_lock_write                                                        │
00:22:42 v #24566 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:22:42 v #24567 > >
00:22:42 v #24568 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:42 v #24569 > > inl arc_rw_lock_write forall t. (x : arc (rw_lock t)) : resultm.result'
00:22:42 v #24570 > > (rw_lock_write_guard t) (poison_error (rw_lock_write_guard t)) =
00:22:42 v #24571 > >     inl x = x |> rust.emit
00:22:42 v #24572 > >     !\($'"!x.write()"')
00:22:43 v #24573 > >
00:22:43 v #24574 > > ── markdown ────────────────────────────────────────────────────────────────────
00:22:43 v #24575 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:22:43 v #24576 > > │ ### arc_rw_lock_try_read                                                     │
00:22:43 v #24577 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:22:43 v #24578 > >
00:22:43 v #24579 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:43 v #24580 > > inl arc_rw_lock_try_read forall t. (x : arc (rw_lock t)) : resultm.result'
00:22:43 v #24581 > > (rw_lock_read_guard t) (try_lock_error (rw_lock_read_guard t)) =
00:22:43 v #24582 > >     inl x = x |> rust.emit
00:22:43 v #24583 > >     !\($'"!x.try_read()"')
00:22:43 v #24584 > >
00:22:43 v #24585 > > ── markdown ────────────────────────────────────────────────────────────────────
00:22:43 v #24586 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:22:43 v #24587 > > │ ### arc_rw_lock_try_write                                                    │
00:22:43 v #24588 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:22:43 v #24589 > >
00:22:43 v #24590 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:43 v #24591 > > inl arc_rw_lock_try_write forall t. (x : arc (rw_lock t)) : resultm.result'
00:22:43 v #24592 > > (rw_lock_write_guard t) (try_lock_error (rw_lock_write_guard t)) =
00:22:43 v #24593 > >     inl x = x |> rust.emit
00:22:43 v #24594 > >     !\($'"!x.try_write()"')
00:22:44 v #24595 > >
00:22:44 v #24596 > > ── markdown ────────────────────────────────────────────────────────────────────
00:22:44 v #24597 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:22:44 v #24598 > > │ ### mutex_guard_ref                                                          │
00:22:44 v #24599 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:22:44 v #24600 > >
00:22:44 v #24601 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:44 v #24602 > > inl mutex_guard_ref forall t. (x : mutex_guard t) : rust.ref t =
00:22:44 v #24603 > >     !\\(x, $'"&$0"')
00:22:44 v #24604 > >
00:22:44 v #24605 > > ── markdown ────────────────────────────────────────────────────────────────────
00:22:44 v #24606 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:22:44 v #24607 > > │ ### rw_lock_read_guard_ref                                                   │
00:22:44 v #24608 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:22:44 v #24609 > >
00:22:44 v #24610 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:44 v #24611 > > inl rw_lock_read_guard_ref forall t. (x : rw_lock_read_guard t) : rust.ref t =
00:22:44 v #24612 > >     !\\(x, $'"&$0"')
00:22:44 v #24613 > >
00:22:44 v #24614 > > ── markdown ────────────────────────────────────────────────────────────────────
00:22:44 v #24615 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:22:44 v #24616 > > │ ### rw_lock_write_guard_ref                                                  │
00:22:44 v #24617 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:22:44 v #24618 > >
00:22:44 v #24619 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:44 v #24620 > > inl rw_lock_write_guard_ref forall t. (x : rw_lock_write_guard t) : rust.ref t =
00:22:44 v #24621 > >     !\\(x, $'"&$0"')
00:22:45 v #24622 > >
00:22:45 v #24623 > > ── markdown ────────────────────────────────────────────────────────────────────
00:22:45 v #24624 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:22:45 v #24625 > > │ ### mutex_guard_ref_mut                                                      │
00:22:45 v #24626 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:22:45 v #24627 > >
00:22:45 v #24628 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:45 v #24629 > > inl mutex_guard_ref_mut forall t. (x : mutex_guard t) : rust.ref (rust.mut' t) =
00:22:45 v #24630 > >     inl x = join x
00:22:45 v #24631 > >     (!\($'"true; let mut !x = !x"') : bool) |> ignore
00:22:45 v #24632 > >     !\\(x, $'"&mut $0"')
00:22:45 v #24633 > >
00:22:45 v #24634 > > ── markdown ────────────────────────────────────────────────────────────────────
00:22:45 v #24635 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:22:45 v #24636 > > │ ### mutex_guard_as_mut                                                       │
00:22:45 v #24637 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:22:45 v #24638 > >
00:22:45 v #24639 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:45 v #24640 > > inl mutex_guard_as_mut forall (t : * -> *) u. (x : mutex_guard (t u)) : t
00:22:45 v #24641 > > (rust.ref (rust.mut' u)) =
00:22:45 v #24642 > >     (!\($'"true; let mut !x = !x"') : bool) |> ignore
00:22:45 v #24643 > >     !\\(x, $'"$0.as_mut()"')
00:22:46 v #24644 > >
00:22:46 v #24645 > > ── markdown ────────────────────────────────────────────────────────────────────
00:22:46 v #24646 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:22:46 v #24647 > > │ ### channel_receiver                                                         │
00:22:46 v #24648 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:22:46 v #24649 > >
00:22:46 v #24650 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:46 v #24651 > > nominal channel_receiver t =
00:22:46 v #24652 > >     `(
00:22:46 v #24653 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:22:46 v #24654 > > Fable.Core.Emit(\"std::sync::mpsc::Receiver<$0>\")>]]\n#endif\ntype
00:22:46 v #24655 > > std_sync_mpsc_Receiver<'T> = class end"
00:22:46 v #24656 > >         $'' : $'std_sync_mpsc_Receiver<`t>'
00:22:46 v #24657 > >     )
00:22:46 v #24658 > >
00:22:46 v #24659 > > ── markdown ────────────────────────────────────────────────────────────────────
00:22:46 v #24660 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:22:46 v #24661 > > │ ### channel_sender                                                           │
00:22:46 v #24662 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:22:46 v #24663 > >
00:22:46 v #24664 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:46 v #24665 > > nominal channel_sender t =
00:22:46 v #24666 > >     `(
00:22:46 v #24667 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:22:46 v #24668 > > Fable.Core.Emit(\"std::sync::mpsc::Sender<$0>\")>]]\n#endif\ntype
00:22:46 v #24669 > > std_sync_mpsc_Sender<'T> = class end"
00:22:46 v #24670 > >         $'' : $'std_sync_mpsc_Sender<`t>'
00:22:46 v #24671 > >     )
00:22:46 v #24672 > >
00:22:46 v #24673 > > ── markdown ────────────────────────────────────────────────────────────────────
00:22:46 v #24674 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:22:46 v #24675 > > │ ### new_channel                                                              │
00:22:46 v #24676 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:22:46 v #24677 > >
00:22:46 v #24678 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:46 v #24679 > > inl new_channel () : channel_sender sm'.std_string * arc (channel_receiver
00:22:46 v #24680 > > sm'.std_string) =
00:22:46 v #24681 > >     !\($'"{ let (sender, receiver) = std::sync::mpsc::channel(); (sender,
00:22:46 v #24682 > > std::sync::Arc::new(receiver)) }"')
00:22:47 v #24683 > >
00:22:47 v #24684 > > ── markdown ────────────────────────────────────────────────────────────────────
00:22:47 v #24685 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:22:47 v #24686 > > │ ### send_error                                                               │
00:22:47 v #24687 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:22:47 v #24688 > >
00:22:47 v #24689 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:47 v #24690 > > nominal send_error t =
00:22:47 v #24691 > >     `(
00:22:47 v #24692 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:22:47 v #24693 > > Fable.Core.Emit(\"std::sync::mpsc::SendError<$0>\")>]]\n#endif\ntype
00:22:47 v #24694 > > std_sync_mpsc_SendError<'T> = class end"
00:22:47 v #24695 > >         $'' : $'std_sync_mpsc_SendError<`t>'
00:22:47 v #24696 > >     )
00:22:47 v #24697 > >
00:22:47 v #24698 > > ── markdown ────────────────────────────────────────────────────────────────────
00:22:47 v #24699 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:22:47 v #24700 > > │ ### channel_send                                                             │
00:22:47 v #24701 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:22:47 v #24702 > >
00:22:47 v #24703 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:47 v #24704 > > inl channel_send forall t. (line : t) (sender : rust.ref (channel_sender t)) :
00:22:47 v #24705 > > resultm.result' () (send_error sm'.std_string) =
00:22:47 v #24706 > >     !\\((sender, line), $'"$0.send($1)"')
00:22:48 v #24707 > >
00:22:48 v #24708 > > ── markdown ────────────────────────────────────────────────────────────────────
00:22:48 v #24709 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:22:48 v #24710 > > │ ## fsharp                                                                    │
00:22:48 v #24711 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:22:48 v #24712 > >
00:22:48 v #24713 > > ── markdown ────────────────────────────────────────────────────────────────────
00:22:48 v #24714 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:22:48 v #24715 > > │ ### sleep'                                                                   │
00:22:48 v #24716 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:22:48 v #24717 > >
00:22:48 v #24718 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:48 v #24719 > > inl sleep' (n : i32) : () =
00:22:48 v #24720 > >     run_target function
00:22:48 v #24721 > >         | Fsharp (Native)
00:22:48 v #24722 > >         | Rust _
00:22:48 v #24723 > >         | Python _ => fun () => $'System.Threading.Thread.Sleep' n
00:22:48 v #24724 > >         | _ => fun () => ()
00:22:48 v #24725 > >
00:22:48 v #24726 > > ── markdown ────────────────────────────────────────────────────────────────────
00:22:48 v #24727 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:22:48 v #24728 > > │ ### thread                                                                   │
00:22:48 v #24729 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:22:48 v #24730 > >
00:22:48 v #24731 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:48 v #24732 > > nominal thread = $'System.Threading.Thread'
00:22:48 v #24733 > >
00:22:48 v #24734 > > ── markdown ────────────────────────────────────────────────────────────────────
00:22:48 v #24735 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:22:48 v #24736 > > │ ### cancellation_token                                                       │
00:22:48 v #24737 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:22:48 v #24738 > >
00:22:48 v #24739 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:48 v #24740 > > nominal cancellation_token = $'System.Threading.CancellationToken'
00:22:49 v #24741 > >
00:22:49 v #24742 > > ── markdown ────────────────────────────────────────────────────────────────────
00:22:49 v #24743 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:22:49 v #24744 > > │ ### cancellation_token_source                                                │
00:22:49 v #24745 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:22:49 v #24746 > >
00:22:49 v #24747 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:49 v #24748 > > nominal cancellation_token_source = $'System.Threading.CancellationTokenSource'
00:22:49 v #24749 > >
00:22:49 v #24750 > > ── markdown ────────────────────────────────────────────────────────────────────
00:22:49 v #24751 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:22:49 v #24752 > > │ ### cancellation_token_registration                                          │
00:22:49 v #24753 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:22:49 v #24754 > >
00:22:49 v #24755 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:49 v #24756 > > nominal cancellation_token_registration =
00:22:49 v #24757 > > $'System.Threading.CancellationTokenRegistration'
00:22:50 v #24758 > >
00:22:50 v #24759 > > ── markdown ────────────────────────────────────────────────────────────────────
00:22:50 v #24760 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:22:50 v #24761 > > │ ### cancellation_source_token                                                │
00:22:50 v #24762 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:22:50 v #24763 > >
00:22:50 v #24764 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:50 v #24765 > > inl cancellation_source_token (x : cancellation_token_source) :
00:22:50 v #24766 > > cancellation_token =
00:22:50 v #24767 > >     $'!x.Token'
00:22:50 v #24768 > >
00:22:50 v #24769 > > ── markdown ────────────────────────────────────────────────────────────────────
00:22:50 v #24770 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:22:50 v #24771 > > │ ### cancellation_source_cancel                                               │
00:22:50 v #24772 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:22:50 v #24773 > >
00:22:50 v #24774 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:50 v #24775 > > inl cancellation_source_cancel (x : cancellation_token_source) : () =
00:22:50 v #24776 > >     run_target function
00:22:50 v #24777 > >         | Fsharp (Native) => fun () =>
00:22:50 v #24778 > >             $'!x.Cancel' ()
00:22:50 v #24779 > >         | _ => fun () => null ()
00:22:50 v #24780 > >
00:22:50 v #24781 > > ── markdown ────────────────────────────────────────────────────────────────────
00:22:50 v #24782 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:22:50 v #24783 > > │ ### create_linked_token_source                                               │
00:22:50 v #24784 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:22:50 v #24785 > >
00:22:50 v #24786 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:50 v #24787 > > inl create_linked_token_source (x : array_base cancellation_token) :
00:22:50 v #24788 > > cancellation_token_source =
00:22:50 v #24789 > >     x |> $'System.Threading.CancellationTokenSource.CreateLinkedTokenSource'
00:22:51 v #24790 > >
00:22:51 v #24791 > > ── markdown ────────────────────────────────────────────────────────────────────
00:22:51 v #24792 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:22:51 v #24793 > > │ ### concurrent_stack                                                         │
00:22:51 v #24794 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:22:51 v #24795 > >
00:22:51 v #24796 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:51 v #24797 > > nominal concurrent_stack t =
00:22:51 v #24798 > > $'System.Collections.Concurrent.ConcurrentStack<`t>'
00:22:51 v #24799 > >
00:22:51 v #24800 > > ── markdown ────────────────────────────────────────────────────────────────────
00:22:51 v #24801 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:22:51 v #24802 > > │ ### concurrent_stack_push                                                    │
00:22:51 v #24803 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:22:51 v #24804 > >
00:22:51 v #24805 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:51 v #24806 > > inl concurrent_stack_push forall t. (item : t) (stack : concurrent_stack t) : ()
00:22:51 v #24807 > > =
00:22:51 v #24808 > >     run_target function
00:22:51 v #24809 > >         | Fsharp (Native) => fun () => $'!stack.Push' item
00:22:51 v #24810 > >         | _ => fun () => ()
00:22:52 v #24811 > >
00:22:52 v #24812 > > ── markdown ────────────────────────────────────────────────────────────────────
00:22:52 v #24813 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:22:52 v #24814 > > │ ### token_none                                                               │
00:22:52 v #24815 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:22:52 v #24816 > >
00:22:52 v #24817 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:52 v #24818 > > inl token_none () : cancellation_token =
00:22:52 v #24819 > >     $'`cancellation_token.None'
00:22:52 v #24820 > >
00:22:52 v #24821 > > ── markdown ────────────────────────────────────────────────────────────────────
00:22:52 v #24822 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:22:52 v #24823 > > │ ### new_concurrent_stack                                                     │
00:22:52 v #24824 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:22:52 v #24825 > >
00:22:52 v #24826 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:52 v #24827 > > inl new_concurrent_stack forall t. () : concurrent_stack t =
00:22:52 v #24828 > >     $'System.Collections.Concurrent.ConcurrentStack<`t>' ()
00:22:52 v #24829 > >
00:22:52 v #24830 > > ── markdown ────────────────────────────────────────────────────────────────────
00:22:52 v #24831 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:22:52 v #24832 > > │ ### token_register                                                           │
00:22:52 v #24833 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:22:52 v #24834 > >
00:22:52 v #24835 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:52 v #24836 > > inl token_register (fn : () -> ()) (ct : cancellation_token) :
00:22:52 v #24837 > > cancellation_token_registration =
00:22:52 v #24838 > >     fn |> $'!ct.Register'
00:22:53 v #24839 > >
00:22:53 v #24840 > > ── markdown ────────────────────────────────────────────────────────────────────
00:22:53 v #24841 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:22:53 v #24842 > > │ ### new_cancellation_token_source                                            │
00:22:53 v #24843 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:22:53 v #24844 > >
00:22:53 v #24845 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:53 v #24846 > > inl new_cancellation_token_source () : cancellation_token_source =
00:22:53 v #24847 > >     $'new `cancellation_token_source ()'
00:22:53 v #24848 > >
00:22:53 v #24849 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:53 v #24850 > > inl token_cancellation_requested (ct : cancellation_token) : bool =
00:22:53 v #24851 > >     $'!ct.IsCancellationRequested'
00:22:54 v #24852 > >
00:22:54 v #24853 > > ── markdown ────────────────────────────────────────────────────────────────────
00:22:54 v #24854 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:22:54 v #24855 > > │ ### new_disposable_token                                                     │
00:22:54 v #24856 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:22:54 v #24857 > >
00:22:54 v #24858 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:54 v #24859 > > inl new_disposable_token (merge_token : optionm'.option' cancellation_token) =
00:22:54 v #24860 > >     run_target function
00:22:54 v #24861 > >         | Fsharp (Native) => fun () =>
00:22:54 v #24862 > >             inl cts = new_cancellation_token_source ()
00:22:54 v #24863 > >             inl cts =
00:22:54 v #24864 > >                 match merge_token |> optionm'.unbox with
00:22:54 v #24865 > >                 | None => cts
00:22:54 v #24866 > >                 | Some merge_token =>
00:22:54 v #24867 > >                     create_linked_token_source ;[[ cts |>
00:22:54 v #24868 > > cancellation_source_token; merge_token ]]
00:22:54 v #24869 > >             inl disposable : _ () = new_disposable fun () =>
00:22:54 v #24870 > >                 cts |> cancellation_source_cancel
00:22:54 v #24871 > >             cts |> cancellation_source_token, disposable
00:22:54 v #24872 > >         | _ => fun () => null ()
00:22:54 v #24873 > >
00:22:54 v #24874 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:54 v #24875 > > //// test
00:22:54 v #24876 > >
00:22:54 v #24877 > > inl run fn =
00:22:54 v #24878 > >     inl token, disposable = new_disposable_token (None |> optionm'.box)
00:22:54 v #24879 > >     disposable |> use |> ignore
00:22:54 v #24880 > >     fn token
00:22:54 v #24881 > >     fun () =>
00:22:54 v #24882 > >         fn token
00:22:54 v #24883 > >     |> async.new_async
00:22:54 v #24884 > >     |> async.start
00:22:54 v #24885 > >
00:22:54 v #24886 > > fun () =>
00:22:54 v #24887 > >     inl counter = mut 0i32
00:22:54 v #24888 > >
00:22:54 v #24889 > >     inl fn (token : cancellation_token) =
00:22:54 v #24890 > >         counter <- *counter + (if token |> token_cancellation_requested then 10
00:22:54 v #24891 > > else 1)
00:22:54 v #24892 > >
00:22:54 v #24893 > >     join run fn
00:22:54 v #24894 > >     async.sleep 10 |> async.do
00:22:54 v #24895 > >     return *counter
00:22:54 v #24896 > > |> async.new_async_unit
00:22:54 v #24897 > > |> async.run_synchronously
00:22:54 v #24898 > > |> _assert_eq 11i32
00:22:56 v #24899 > >
00:22:56 v #24900 > > ╭─[ 1.72s - stdout ]───────────────────────────────────────────────────────────╮
00:22:56 v #24901 > > │ __assert_eq / actual: 11 / expected: 11                                      │
00:22:56 v #24902 > > │                                                                              │
00:22:56 v #24903 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:22:56 v #24904 > >
00:22:56 v #24905 > > ── markdown ────────────────────────────────────────────────────────────────────
00:22:56 v #24906 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:22:56 v #24907 > > │ ## main                                                                      │
00:22:56 v #24908 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:22:56 v #24909 > >
00:22:56 v #24910 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:56 v #24911 > > inl main () =
00:22:56 v #24912 > >     $'let new_disposable_token x = !new_disposable_token x' : ()
00:22:56 v #24913 > 00:00:30 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 34381 }
00:22:56 v #24914 > 00:00:30 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/polyglot/lib/spiral/threading.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/polyglot/lib/spiral/threading.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:22:58 v #24915 > 00:00:32 v #5 ! [NbConvertApp] Converting notebook c:/home/git/polyglot/lib/spiral/threading.dib.ipynb to html
00:22:58 v #24916 > 00:00:32 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:22:58 v #24917 > 00:00:32 v #7 !   validate(nb)
00:22:58 v #24918 > 00:00:33 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:22:58 v #24919 > 00:00:33 v #9 !   return _pygments_highlight(
00:22:59 v #24920 > 00:00:33 v #10 ! [NbConvertApp] Writing 378878 bytes to c:\home\git\polyglot\lib\spiral\threading.dib.html
00:22:59 v #24921 > 00:00:33 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 860 }
00:22:59 v #24922 > 00:00:33 d #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 860 }
00:22:59 v #24923 > 00:00:33 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/threading.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/threading.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:22:59 v #24924 > 00:00:34 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:22:59 v #24925 > 00:00:34 d #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:22:59 v #24926 > 00:00:34 d #16 spiral_builder.run / dib / { exit_code = 0; result_length = 35300 }
00:22:59 d #24927 runtime.execute_with_options_async / { exit_code = 0; output_length = 39280 }
00:22:59 d #32 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder.exe dib --path threading.dib --retries 3
00:22:59 d #24928 runtime.execute_with_options_async / { file_name = ../../workspace/target/release/spiral_builder.exe; arguments = US5_0 "dib --path benchmark.dib --retries 3"; options = { command = ../../workspace/target/release/spiral_builder.exe dib --path benchmark.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:22:59 v #24929 > 00:00:00 d #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "benchmark.dib", "--retries", "3"])) }
00:22:59 v #24930 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/polyglot/lib/spiral/benchmark.dib", "--output-path", "c:/home/git/polyglot/lib/spiral/benchmark.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/polyglot/lib/spiral/benchmark.dib" --output-path "c:/home/git/polyglot/lib/spiral/benchmark.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:23:01 v #24931 > >
00:23:01 v #24932 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:01 v #24933 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:23:01 v #24934 > > │ ## benchmark                                                                 │
00:23:01 v #24935 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:23:05 v #24936 > >
00:23:05 v #24937 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:05 v #24938 > > //// test
00:23:05 v #24939 > >
00:23:05 v #24940 > > open testing
00:23:06 v #24941 > >
00:23:06 v #24942 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:06 v #24943 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:23:06 v #24944 > > │ ## fsharp                                                                    │
00:23:06 v #24945 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:23:06 v #24946 > >
00:23:06 v #24947 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:06 v #24948 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:23:06 v #24949 > > │ ### test_case_result                                                         │
00:23:06 v #24950 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:23:06 v #24951 > >
00:23:06 v #24952 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:06 v #24953 > > type test_case_result =
00:23:06 v #24954 > >     {
00:23:06 v #24955 > >         input : string
00:23:06 v #24956 > >         expected : string
00:23:06 v #24957 > >         result : string
00:23:06 v #24958 > >         time_list : array_base i64
00:23:06 v #24959 > >     }
00:23:06 v #24960 > >
00:23:06 v #24961 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:06 v #24962 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:23:06 v #24963 > > │ ### run'                                                                     │
00:23:06 v #24964 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:23:06 v #24965 > >
00:23:06 v #24966 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:06 v #24967 > > inl run' forall t. count (fn : () -> t) =
00:23:06 v #24968 > >     runtime.gc_collect ()
00:23:06 v #24969 > >     inl stopwatch = date_time.stopwatch ()
00:23:06 v #24970 > >     stopwatch |> date_time.stopwatch_start
00:23:06 v #24971 > >     inl time1 = stopwatch |> date_time.stopwatch_elapsed_milliseconds
00:23:06 v #24972 > >     inl result : t =
00:23:06 v #24973 > >         am'.init_series 0 count 1i32
00:23:06 v #24974 > >         |> fun x => a x : _ int _
00:23:06 v #24975 > >         |> am'.parallel_map fun _n => fn ()
00:23:06 v #24976 > >         |> am'.last
00:23:06 v #24977 > >     inl time2 = (stopwatch |> date_time.stopwatch_elapsed_milliseconds) - time1
00:23:06 v #24978 > >     result, time2
00:23:06 v #24979 > >
00:23:06 v #24980 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:06 v #24981 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:23:06 v #24982 > > │ ### run                                                                      │
00:23:06 v #24983 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:23:06 v #24984 > >
00:23:06 v #24985 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:06 v #24986 > > inl run forall input expected.
00:23:06 v #24987 > >     count
00:23:06 v #24988 > >     (solutions : list (string * (input -> expected)))
00:23:06 v #24989 > >     ((input, expected) : (input * expected))
00:23:06 v #24990 > >     : test_case_result
00:23:06 v #24991 > >     =
00:23:06 v #24992 > >     inl input_str = input |> sm'.format_debug
00:23:06 v #24993 > >
00:23:06 v #24994 > >     console.write_line ""
00:23:06 v #24995 > >     trace Verbose
00:23:06 v #24996 > >         fun () => "benchmark.run"
00:23:06 v #24997 > >         fun () => { input_str = input_str |> sm'.ellipsis_end 40 }
00:23:06 v #24998 > >
00:23:06 v #24999 > >     inl results_with_time : array_base _ =
00:23:06 v #25000 > >         solutions
00:23:06 v #25001 > >         |> listm'.indexed
00:23:06 v #25002 > >         |> listm'.box
00:23:06 v #25003 > >         |> listm'.to_array'
00:23:06 v #25004 > >         |> am'.map_base fun ((i : int), (test_name, solution)) =>
00:23:06 v #25005 > >             inl result, time =
00:23:06 v #25006 > >                 fun () => solution input
00:23:06 v #25007 > >                 |> run' count
00:23:06 v #25008 > >             trace Verbose
00:23:06 v #25009 > >                 fun () => "benchmark.run / solutions.map"
00:23:06 v #25010 > >                 fun () => { i = i + 1; test_name time }
00:23:06 v #25011 > >             result, time
00:23:06 v #25012 > >
00:23:06 v #25013 > >     match results_with_time |> am'.map_base fst with
00:23:06 v #25014 > >     | array when (array |> (fun x => a x : _ int _) |> am'.length) <= 1 => ()
00:23:06 v #25015 > >     | array when array |> (fun x => a x : _ int _) |> am.forall' ((=) (array |>
00:23:06 v #25016 > > (fun x => a x : _ int _) |> am'.index 0)) => ()
00:23:06 v #25017 > >     | results => failwith ($'$"benchmark.run / error / results: {!results}"' :
00:23:06 v #25018 > > string)
00:23:06 v #25019 > >
00:23:06 v #25020 > >     {
00:23:06 v #25021 > >         input = input_str
00:23:06 v #25022 > >         expected = expected |> sm'.format_debug
00:23:06 v #25023 > >         result = results_with_time |> am'.map_base fst |> (fun x => a x : _ int
00:23:06 v #25024 > > _) |> am'.index 0 |> sm'.format_debug
00:23:06 v #25025 > >         time_list = results_with_time |> am'.map_base snd
00:23:06 v #25026 > >     }
00:23:07 v #25027 > >
00:23:07 v #25028 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:07 v #25029 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:23:07 v #25030 > > │ ### run_all                                                                  │
00:23:07 v #25031 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:23:07 v #25032 > >
00:23:07 v #25033 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:07 v #25034 > > inl run_all forall input expected.
00:23:07 v #25035 > >     test_name
00:23:07 v #25036 > >     count
00:23:07 v #25037 > >     (solutions : list (string * (input -> expected)))
00:23:07 v #25038 > >     test_cases
00:23:07 v #25039 > >     =
00:23:07 v #25040 > >     console.write_line ""
00:23:07 v #25041 > >     console.write_line "```"
00:23:07 v #25042 > >     trace Verbose
00:23:07 v #25043 > >         fun () => "benchmark.run_all"
00:23:07 v #25044 > >         fun () => { test_name count }
00:23:07 v #25045 > >     test_cases
00:23:07 v #25046 > >     |> listm'.box
00:23:07 v #25047 > >     |> listm'.to_array'
00:23:07 v #25048 > >     |> am'.map_base (run count solutions)
00:23:07 v #25049 > >
00:23:07 v #25050 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:07 v #25051 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:23:07 v #25052 > > │ ### sort_result_list                                                         │
00:23:07 v #25053 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:23:07 v #25054 > >
00:23:07 v #25055 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:07 v #25056 > > inl sort_result_list results =
00:23:07 v #25057 > >     inl table =
00:23:07 v #25058 > >         inl rows =
00:23:07 v #25059 > >             results
00:23:07 v #25060 > >             |> am'.map_base fun (result : test_case_result) =>
00:23:07 v #25061 > >                 inl best =
00:23:07 v #25062 > >                     result.time_list
00:23:07 v #25063 > >                     |> am'.indexed
00:23:07 v #25064 > >                     |> am'.map_base fun (i, time) =>
00:23:07 v #25065 > >                         i + 1i32, time
00:23:07 v #25066 > >                     |> fun x => a x : _ int _
00:23:07 v #25067 > >                     |> am'.sort_by snd
00:23:07 v #25068 > >                     |> am'.index 0i32
00:23:07 v #25069 > >                     |> sm'.format
00:23:07 v #25070 > >                 inl row =
00:23:07 v #25071 > >                     [[
00:23:07 v #25072 > >                         result.input |> sm'.ellipsis_end 40 |> sm'.replace "|"
00:23:07 v #25073 > > ""
00:23:07 v #25074 > >                         result.expected
00:23:07 v #25075 > >                         result.result
00:23:07 v #25076 > >                         best
00:23:07 v #25077 > >                     ]]
00:23:07 v #25078 > >                 inl color : option console.console_color =
00:23:07 v #25079 > >                     open console
00:23:07 v #25080 > >                     match result.expected = result.result with
00:23:07 v #25081 > >                     | true => Some $'`console_color.DarkGreen'
00:23:07 v #25082 > >                     | false => Some $'`console_color.DarkRed'
00:23:07 v #25083 > >                 row, color
00:23:07 v #25084 > >
00:23:07 v #25085 > >         inl header =
00:23:07 v #25086 > >             [[
00:23:07 v #25087 > >                 [[
00:23:07 v #25088 > >                     "input"
00:23:07 v #25089 > >                     "expected"
00:23:07 v #25090 > >                     "result"
00:23:07 v #25091 > >                     "best"
00:23:07 v #25092 > >                 ]]
00:23:07 v #25093 > >                 [[
00:23:07 v #25094 > >                     "---"
00:23:07 v #25095 > >                     "---"
00:23:07 v #25096 > >                     "---"
00:23:07 v #25097 > >                     "---"
00:23:07 v #25098 > >                 ]]
00:23:07 v #25099 > >             ]]
00:23:07 v #25100 > >             |> listm.map fun row => row, None
00:23:07 v #25101 > >             |> listm'.box
00:23:07 v #25102 > >             |> listm'.to_array'
00:23:07 v #25103 > >             |> fun x => a x : _ int _
00:23:07 v #25104 > >         a rows
00:23:07 v #25105 > >         |> am.append header
00:23:07 v #25106 > >         |> fun (a x) => x
00:23:07 v #25107 > >
00:23:07 v #25108 > >     inl formatted_table =
00:23:07 v #25109 > >         inl length_map : mapm.map i32 i64 =
00:23:07 v #25110 > >             table
00:23:07 v #25111 > >             |> am'.map_base (fst >> listm'.box >> listm'.to_array')
00:23:07 v #25112 > >             |> am'.transpose
00:23:07 v #25113 > >             |> am'.map_base fun column =>
00:23:07 v #25114 > >                 column
00:23:07 v #25115 > >                 |> am'.map_base sm.length
00:23:07 v #25116 > >                 |> fun x => a x : _ int _
00:23:07 v #25117 > >                 |> am'.sort_descending
00:23:07 v #25118 > >                 |> am'.try_item 0i32
00:23:07 v #25119 > >                 |> optionm'.default_value 0i64
00:23:07 v #25120 > >             |> am'.indexed
00:23:07 v #25121 > >             |> fun x => a x : _ int _
00:23:07 v #25122 > >             |> mapm.of_array
00:23:07 v #25123 > >         table
00:23:07 v #25124 > >         |> am'.map_base fun (row, color) =>
00:23:07 v #25125 > >             inl new_row =
00:23:07 v #25126 > >                 row
00:23:07 v #25127 > >                 |> listm'.indexed
00:23:07 v #25128 > >                 |> listm.map fun (i, cell) =>
00:23:07 v #25129 > >                     cell |> sm'.pad_right (length_map |> mapm.item i |> conv) '
00:23:07 v #25130 > > '
00:23:07 v #25131 > >                 |> listm'.box
00:23:07 v #25132 > >                 |> listm'.to_array'
00:23:07 v #25133 > >             new_row, color
00:23:07 v #25134 > >
00:23:07 v #25135 > >     console.write_line "```"
00:23:07 v #25136 > >     formatted_table
00:23:07 v #25137 > >     |> fun x => a x : _ int _
00:23:07 v #25138 > >     |> am'.to_list'
00:23:07 v #25139 > >     |> listm'.unbox
00:23:07 v #25140 > >     |> listm.iter fun (row, color) =>
00:23:07 v #25141 > >         match color with
00:23:07 v #25142 > >         | Some color => color |> console.set_foreground_color
00:23:07 v #25143 > >         | None => console.reset_color ()
00:23:07 v #25144 > >
00:23:07 v #25145 > >         a row |> sm'.join' "\t| " |> console.write_line
00:23:07 v #25146 > >
00:23:07 v #25147 > >         console.reset_color ()
00:23:07 v #25148 > >
00:23:07 v #25149 > >     inl averages =
00:23:07 v #25150 > >         results
00:23:07 v #25151 > >         |> am'.map_base fun result =>
00:23:07 v #25152 > >             result.time_list
00:23:07 v #25153 > >             |> am'.map_base ($'float' : i64 -> f64)
00:23:07 v #25154 > >         |> am'.transpose
00:23:07 v #25155 > >         |> am'.map_base ((fun x => a x : _ int _) >> am'.average)
00:23:07 v #25156 > >         |> am'.map_base ($'int64' : f64 -> i64)
00:23:07 v #25157 > >         |> am'.indexed
00:23:07 v #25158 > >         |> fun x => a x : _ u64 _
00:23:07 v #25159 > >
00:23:07 v #25160 > >     console.write_line "```"
00:23:07 v #25161 > >     averages
00:23:07 v #25162 > >     |> am'.sort_by snd
00:23:07 v #25163 > >     |> am'.to_list'
00:23:07 v #25164 > >     |> listm'.unbox
00:23:07 v #25165 > >     |> listm.iter fun ((i : i32), avg) =>
00:23:07 v #25166 > >         trace Verbose
00:23:07 v #25167 > >             fun () => "benchmark.sort_result_list / averages.iter"
00:23:07 v #25168 > >             fun () => { i = i + 1; avg }
00:23:07 v #25169 > >     console.write_line "```"
00:23:08 v #25170 > >
00:23:08 v #25171 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:08 v #25172 > > //// test
00:23:08 v #25173 > >
00:23:08 v #25174 > > inl is_fast () =
00:23:08 v #25175 > >     false
00:23:08 v #25176 > >
00:23:08 v #25177 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:08 v #25178 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:23:08 v #25179 > > │ ### empty2Tests                                                              │
00:23:08 v #25180 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:23:08 v #25181 > >
00:23:08 v #25182 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:08 v #25183 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:23:08 v #25184 > > │ Test: Empty2                                                                 │
00:23:08 v #25185 > > │                                                                              │
00:23:08 v #25186 > > │ Solution: (a, a)                                                             │
00:23:08 v #25187 > > │ Test case 1. A. Time: 59L                                                    │
00:23:08 v #25188 > > │                                                                              │
00:23:08 v #25189 > > │ Solution: (a, a)                                                             │
00:23:08 v #25190 > > │ Test case 1. A. Time: 53L                                                    │
00:23:08 v #25191 > > │                                                                              │
00:23:08 v #25192 > > │ Input   | Expected        | Result  | Best                                   │
00:23:08 v #25193 > > │ ---     | ---             | ---     | ---                                    │
00:23:08 v #25194 > > │ (a, a)  | a               | a       | (1, 59)                                │
00:23:08 v #25195 > > │ (a, a)  | a               | a       | (1, 53)                                │
00:23:08 v #25196 > > │                                                                              │
00:23:08 v #25197 > > │ Averages                                                                     │
00:23:08 v #25198 > > │ Test case 1. Average Time: 56L                                               │
00:23:08 v #25199 > > │                                                                              │
00:23:08 v #25200 > > │ Ranking                                                                      │
00:23:08 v #25201 > > │ Test case 1. Average Time: 56L                                               │
00:23:08 v #25202 > > │                                                                              │
00:23:08 v #25203 > > │ ---                                                                          │
00:23:08 v #25204 > > │                                                                              │
00:23:08 v #25205 > > │                                                                              │
00:23:08 v #25206 > > │ ```                                                                          │
00:23:08 v #25207 > > │ 01:12:03 verbose #1 benchmark.run_all / {count = 2000000; test_name =   │
00:23:08 v #25208 > > │ empty_2_tests}                                                               │
00:23:08 v #25209 > > │ 01:12:03 verbose #2 benchmark.run / {count = 2000000; expected = a;     │
00:23:08 v #25210 > > │ input = a, a; input_str = struct ("a", "a")}                                 │
00:23:08 v #25211 > > │ 01:12:03 verbose #3 benchmark.run / solutions.map / {count = 2000000;   │
00:23:08 v #25212 > > │ expected = a; i = 0; input = a, a; input_str = struct ("a", "a"); test_name  │
00:23:08 v #25213 > > │ = A; time = 119}                                                             │
00:23:08 v #25214 > > │ 01:12:04 verbose #4 benchmark.run / solutions.map / {count = 2000000;   │
00:23:08 v #25215 > > │ expected = a; i = 1; input = a, a; input_str = struct ("a", "a"); test_name  │
00:23:08 v #25216 > > │ = B; time = 122}                                                             │
00:23:08 v #25217 > > │ 01:12:04 verbose #5 benchmark.run / {count = 2000000; expected = b;     │
00:23:08 v #25218 > > │ input = b, b; input_str = struct ("b", "b")}                                 │
00:23:08 v #25219 > > │ 01:12:04 verbose #6 benchmark.run / solutions.map / {count = 2000000;   │
00:23:08 v #25220 > > │ expected = b; i = 0; input = b, b; input_str = struct ("b", "b"); test_name  │
00:23:08 v #25221 > > │ = A; time = 110}                                                             │
00:23:08 v #25222 > > │ 01:12:04 verbose #7 benchmark.run / solutions.map / {count = 2000000;   │
00:23:08 v #25223 > > │ expected = b; i = 1; input = b, b; input_str = struct ("b", "b"); test_name  │
00:23:08 v #25224 > > │ = B; time = 120}                                                             │
00:23:08 v #25225 > > │ ```                                                                          │
00:23:08 v #25226 > > │ Input            	| Expected	| Result	| Best                                       │
00:23:08 v #25227 > > │ ---              	| ---     	| ---   	| ---                                        │
00:23:08 v #25228 > > │ struct ("a", "a")	| "a"     	| "a"   	| struct (1L, 119L)                          │
00:23:08 v #25229 > > │ struct ("b", "b")	| "b"     	| "b"   	| struct (1L, 110L)                          │
00:23:08 v #25230 > > │ ```                                                                          │
00:23:08 v #25231 > > │ 01:12:04 verbose #8 benchmark.sort_result_list / averages.iter / {avg = │
00:23:08 v #25232 > > │ 114; i = 0}                                                                  │
00:23:08 v #25233 > > │ 01:12:04 verbose #9 benchmark.sort_result_list / averages.iter / {avg = │
00:23:08 v #25234 > > │ 121; i = 1}                                                                  │
00:23:08 v #25235 > > │ ```                                                                          │
00:23:08 v #25236 > > │ `                                                                            │
00:23:08 v #25237 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:23:08 v #25238 > >
00:23:08 v #25239 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:08 v #25240 > > //// test
00:23:08 v #25241 > >
00:23:08 v #25242 > > inl get_solutions () =
00:23:08 v #25243 > >     [[
00:23:08 v #25244 > >         "A",
00:23:08 v #25245 > >         fun (a, _b) =>
00:23:08 v #25246 > >             a
00:23:08 v #25247 > >
00:23:08 v #25248 > >         "B",
00:23:08 v #25249 > >         fun (_a, b) =>
00:23:08 v #25250 > >             b
00:23:08 v #25251 > >     ]]
00:23:08 v #25252 > >
00:23:08 v #25253 > > inl rec empty_2_tests () =
00:23:08 v #25254 > >     inl test_cases = [[
00:23:08 v #25255 > >         ("a", "a"), "a"
00:23:08 v #25256 > >         ("b", "b"), "b"
00:23:08 v #25257 > >     ]]
00:23:08 v #25258 > >
00:23:08 v #25259 > >     inl solutions = get_solutions ()
00:23:08 v #25260 > >
00:23:08 v #25261 > >     // inl is_fast () = true
00:23:08 v #25262 > >
00:23:08 v #25263 > >     inl count =
00:23:08 v #25264 > >         if is_fast ()
00:23:08 v #25265 > >         then 1000i32
00:23:08 v #25266 > >         else 2000000i32
00:23:08 v #25267 > >
00:23:08 v #25268 > >     run_all (reflection.nameof { empty_2_tests }) count solutions test_cases
00:23:08 v #25269 > >     |> sort_result_list
00:23:08 v #25270 > >
00:23:08 v #25271 > > empty_2_tests ()
00:23:12 v #25272 > >
00:23:12 v #25273 > > ╭─[ 4.09s - stdout ]───────────────────────────────────────────────────────────╮
00:23:12 v #25274 > > │                                                                              │
00:23:12 v #25275 > > │ ```                                                                          │
00:23:12 v #25276 > > │ 00:00:00 v #1 benchmark.run_all / { test_name = empty_2_tests; count =  │
00:23:12 v #25277 > > │ 2000000 }                                                                    │
00:23:12 v #25278 > > │                                                                              │
00:23:12 v #25279 > > │ 00:00:00 v #2 benchmark.run / { input_str = struct ("a", "a") }         │
00:23:12 v #25280 > > │ 00:00:00 v #3 benchmark.run / solutions.map / { i = 1; test_name = A;   │
00:23:12 v #25281 > > │ time = 94 }                                                                  │
00:23:12 v #25282 > > │ 00:00:00 v #4 benchmark.run / solutions.map / { i = 2; test_name = B;   │
00:23:12 v #25283 > > │ time = 78 }                                                                  │
00:23:12 v #25284 > > │                                                                              │
00:23:12 v #25285 > > │ 00:00:00 v #5 benchmark.run / { input_str = struct ("b", "b") }         │
00:23:12 v #25286 > > │ 00:00:00 v #6 benchmark.run / solutions.map / { i = 1; test_name = A;   │
00:23:12 v #25287 > > │ time = 91 }                                                                  │
00:23:12 v #25288 > > │ 00:00:00 v #7 benchmark.run / solutions.map / { i = 2; test_name = B;   │
00:23:12 v #25289 > > │ time = 95 }                                                                  │
00:23:12 v #25290 > > │ ```                                                                          │
00:23:12 v #25291 > > │ input            	| expected	| result	| best                                       │
00:23:12 v #25292 > > │ ---              	| ---     	| ---   	| ---                                        │
00:23:12 v #25293 > > │ struct ("a", "a")	| "a"     	| "a"   	| 2, 78                                      │
00:23:12 v #25294 > > │ struct ("b", "b")	| "b"     	| "b"   	| 1, 91                                      │
00:23:12 v #25295 > > │ ```                                                                          │
00:23:12 v #25296 > > │ 00:00:00 v #8 benchmark.sort_result_list / averages.iter / { i = 2; avg │
00:23:12 v #25297 > > │ = 86 }                                                                       │
00:23:12 v #25298 > > │ 00:00:00 v #9 benchmark.sort_result_list / averages.iter / { i = 1; avg │
00:23:12 v #25299 > > │ = 92 }                                                                       │
00:23:12 v #25300 > > │ ```                                                                          │
00:23:12 v #25301 > > │                                                                              │
00:23:12 v #25302 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:23:12 v #25303 > >
00:23:12 v #25304 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:12 v #25305 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:23:12 v #25306 > > │ ### emptyTests                                                               │
00:23:12 v #25307 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:23:12 v #25308 > >
00:23:12 v #25309 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:12 v #25310 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:23:12 v #25311 > > │ Test: Empty                                                                  │
00:23:12 v #25312 > > │                                                                              │
00:23:12 v #25313 > > │ Solution: 0                                                                  │
00:23:12 v #25314 > > │ Test case 1. A. Time: 61L                                                    │
00:23:12 v #25315 > > │                                                                              │
00:23:12 v #25316 > > │ Solution: 2                                                                  │
00:23:12 v #25317 > > │ Test case 1. A. Time: 62L                                                    │
00:23:12 v #25318 > > │                                                                              │
00:23:12 v #25319 > > │ Solution: 5                                                                  │
00:23:12 v #25320 > > │ Test case 1. A. Time: 70L                                                    │
00:23:12 v #25321 > > │                                                                              │
00:23:12 v #25322 > > │ Input   | Expected        | Result  | Best                                   │
00:23:12 v #25323 > > │ ---     | ---             | ---     | ---                                    │
00:23:12 v #25324 > > │ 0       | 0               | 0       | (1, 61)                                │
00:23:12 v #25325 > > │ 2       | 2               | 2       | (1, 62)                                │
00:23:12 v #25326 > > │ 5       | 5               | 5       | (1, 70)                                │
00:23:12 v #25327 > > │                                                                              │
00:23:12 v #25328 > > │ Averages                                                                     │
00:23:12 v #25329 > > │ Test case 1. Average Time: 64L                                               │
00:23:12 v #25330 > > │                                                                              │
00:23:12 v #25331 > > │ Ranking                                                                      │
00:23:12 v #25332 > > │ Test case 1. Average Time: 64L                                               │
00:23:12 v #25333 > > │                                                                              │
00:23:12 v #25334 > > │ ---                                                                          │
00:23:12 v #25335 > > │                                                                              │
00:23:12 v #25336 > > │ ```                                                                          │
00:23:12 v #25337 > > │ 01:21:25 verbose #1 benchmark.run_all / {count = 2000000; test_name =   │
00:23:12 v #25338 > > │ empty_1_tests}                                                               │
00:23:12 v #25339 > > │ 01:21:25 verbose #2 benchmark.run / {count = 2000000; expected =        │
00:23:12 v #25340 > > │ +1.000000; input = +0.000000; input_str = 0.0}                               │
00:23:12 v #25341 > > │ 01:21:25 verbose #3 benchmark.run / solutions.map / {count = 2000000;   │
00:23:12 v #25342 > > │ expected = +1.000000; i = 0; input = +0.000000; input_str = 0.0; test_name = │
00:23:12 v #25343 > > │ A; time = 36}                                                                │
00:23:12 v #25344 > > │ 01:21:25 verbose #4 benchmark.run / {count = 2000000; expected =        │
00:23:12 v #25345 > > │ +3.000000; input = +2.000000; input_str = 2.0}                               │
00:23:12 v #25346 > > │ 01:21:25 verbose #5 benchmark.run / solutions.map / {count = 2000000;   │
00:23:12 v #25347 > > │ expected = +3.000000; i = 0; input = +2.000000; input_str = 2.0; test_name = │
00:23:12 v #25348 > > │ A; time = 20}                                                                │
00:23:12 v #25349 > > │ 01:21:25 verbose #6 benchmark.run / {count = 2000000; expected =        │
00:23:12 v #25350 > > │ +6.000000; input = +5.000000; input_str = 5.0}                               │
00:23:12 v #25351 > > │ 01:21:25 verbose #7 benchmark.run / solutions.map / {count = 2000000;   │
00:23:12 v #25352 > > │ expected = +6.000000; i = 0; input = +5.000000; input_str = 5.0; test_name = │
00:23:12 v #25353 > > │ A; time = 22}                                                                │
00:23:12 v #25354 > > │ ```                                                                          │
00:23:12 v #25355 > > │ Input	| Expected	| Result	| Best                                                   │
00:23:12 v #25356 > > │ ---  	| ---     	| ---   	| ---                                                    │
00:23:12 v #25357 > > │ 0.0  	| 1.0     	| 1.0   	| struct (1L, 36L)                                       │
00:23:12 v #25358 > > │ 2.0  	| 3.0     	| 3.0   	| struct (1L, 20L)                                       │
00:23:12 v #25359 > > │ 5.0  	| 6.0     	| 6.0   	| struct (1L, 22L)                                       │
00:23:12 v #25360 > > │ ```                                                                          │
00:23:12 v #25361 > > │ 01:21:25 verbose #8 benchmark.sort_result_list / averages.iter / {avg = │
00:23:12 v #25362 > > │ 26; i = 0}                                                                   │
00:23:12 v #25363 > > │ ```                                                                          │
00:23:12 v #25364 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:23:12 v #25365 > >
00:23:12 v #25366 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:12 v #25367 > > //// test
00:23:12 v #25368 > >
00:23:12 v #25369 > > inl get_solutions () =
00:23:12 v #25370 > >     [[
00:23:12 v #25371 > >         "A",
00:23:12 v #25372 > >         fun n =>
00:23:12 v #25373 > >             n + 1f64
00:23:12 v #25374 > >     ]]
00:23:12 v #25375 > >
00:23:12 v #25376 > > inl rec empty_1_tests () =
00:23:12 v #25377 > >     inl test_cases = [[
00:23:12 v #25378 > >         0, 1
00:23:12 v #25379 > >         2, 3
00:23:12 v #25380 > >         5, 6
00:23:12 v #25381 > >     ]]
00:23:12 v #25382 > >
00:23:12 v #25383 > >     inl solutions = get_solutions ()
00:23:12 v #25384 > >
00:23:12 v #25385 > >     // inl is_fast () = true
00:23:12 v #25386 > >
00:23:12 v #25387 > >     inl count =
00:23:12 v #25388 > >         if is_fast ()
00:23:12 v #25389 > >         then 1000i32
00:23:12 v #25390 > >         else 2000000i32
00:23:12 v #25391 > >
00:23:12 v #25392 > >     run_all (reflection.nameof { empty_1_tests }) count solutions test_cases
00:23:12 v #25393 > >     |> sort_result_list
00:23:12 v #25394 > >
00:23:12 v #25395 > > empty_1_tests ()
00:23:14 v #25396 > >
00:23:14 v #25397 > > ╭─[ 2.19s - stdout ]───────────────────────────────────────────────────────────╮
00:23:14 v #25398 > > │                                                                              │
00:23:14 v #25399 > > │ ```                                                                          │
00:23:14 v #25400 > > │ 00:00:00 v #1 benchmark.run_all / { test_name = empty_1_tests; count =  │
00:23:14 v #25401 > > │ 2000000 }                                                                    │
00:23:14 v #25402 > > │                                                                              │
00:23:14 v #25403 > > │ 00:00:00 v #2 benchmark.run / { input_str = 0.0 }                       │
00:23:14 v #25404 > > │ 00:00:00 v #3 benchmark.run / solutions.map / { i = 1; test_name = A;   │
00:23:14 v #25405 > > │ time = 22 }                                                                  │
00:23:14 v #25406 > > │                                                                              │
00:23:14 v #25407 > > │ 00:00:00 v #4 benchmark.run / { input_str = 2.0 }                       │
00:23:14 v #25408 > > │ 00:00:00 v #5 benchmark.run / solutions.map / { i = 1; test_name = A;   │
00:23:14 v #25409 > > │ time = 12 }                                                                  │
00:23:14 v #25410 > > │                                                                              │
00:23:14 v #25411 > > │ 00:00:00 v #6 benchmark.run / { input_str = 5.0 }                       │
00:23:14 v #25412 > > │ 00:00:00 v #7 benchmark.run / solutions.map / { i = 1; test_name = A;   │
00:23:14 v #25413 > > │ time = 23 }                                                                  │
00:23:14 v #25414 > > │ ```                                                                          │
00:23:14 v #25415 > > │ input	| expected	| result	| best                                                   │
00:23:14 v #25416 > > │ ---  	| ---     	| ---   	| ---                                                    │
00:23:14 v #25417 > > │ 0.0  	| 1.0     	| 1.0   	| 1, 22                                                  │
00:23:14 v #25418 > > │ 2.0  	| 3.0     	| 3.0   	| 1, 12                                                  │
00:23:14 v #25419 > > │ 5.0  	| 6.0     	| 6.0   	| 1, 23                                                  │
00:23:14 v #25420 > > │ ```                                                                          │
00:23:14 v #25421 > > │ 00:00:00 v #8 benchmark.sort_result_list / averages.iter / { i = 1; avg │
00:23:14 v #25422 > > │ = 19 }                                                                       │
00:23:14 v #25423 > > │ ```                                                                          │
00:23:14 v #25424 > > │                                                                              │
00:23:14 v #25425 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:23:14 v #25426 > 00:00:14 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 24838 }
00:23:14 v #25427 > 00:00:14 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/polyglot/lib/spiral/benchmark.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/polyglot/lib/spiral/benchmark.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:23:16 v #25428 > 00:00:16 v #5 ! [NbConvertApp] Converting notebook c:/home/git/polyglot/lib/spiral/benchmark.dib.ipynb to html
00:23:16 v #25429 > 00:00:16 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:23:16 v #25430 > 00:00:16 v #7 !   validate(nb)
00:23:16 v #25431 > 00:00:16 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:23:16 v #25432 > 00:00:16 v #9 !   return _pygments_highlight(
00:23:17 v #25433 > 00:00:17 v #10 ! [NbConvertApp] Writing 316526 bytes to c:\home\git\polyglot\lib\spiral\benchmark.dib.html
00:23:17 v #25434 > 00:00:17 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 860 }
00:23:17 v #25435 > 00:00:17 d #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 860 }
00:23:17 v #25436 > 00:00:17 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/benchmark.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/benchmark.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:23:17 v #25437 > 00:00:17 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:23:17 v #25438 > 00:00:17 d #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:23:17 v #25439 > 00:00:17 d #16 spiral_builder.run / dib / { exit_code = 0; result_length = 25757 }
00:23:17 d #25440 runtime.execute_with_options_async / { exit_code = 0; output_length = 29341 }
00:23:17 d #33 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder.exe dib --path benchmark.dib --retries 3
00:23:17 d #25441 runtime.execute_with_options_async / { file_name = ../../workspace/target/release/spiral_builder.exe; arguments = US5_0 "dib --path physics.dib --retries 3"; options = { command = ../../workspace/target/release/spiral_builder.exe dib --path physics.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:23:17 v #25442 > 00:00:00 d #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "physics.dib", "--retries", "3"])) }
00:23:17 v #25443 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/polyglot/lib/spiral/physics.dib", "--output-path", "c:/home/git/polyglot/lib/spiral/physics.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/polyglot/lib/spiral/physics.dib" --output-path "c:/home/git/polyglot/lib/spiral/physics.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:23:19 v #25444 > >
00:23:19 v #25445 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:19 v #25446 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:23:19 v #25447 > > │ # physics                                                                    │
00:23:19 v #25448 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:23:37 v #25449 > >
00:23:37 v #25450 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:37 v #25451 > > //// test
00:23:37 v #25452 > >
00:23:37 v #25453 > > open testing
00:23:38 v #25454 > >
00:23:38 v #25455 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:38 v #25456 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:23:38 v #25457 > > │ ### init_series                                                              │
00:23:38 v #25458 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:23:38 v #25459 > >
00:23:38 v #25460 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:38 v #25461 > > //// test
00:23:38 v #25462 > >
00:23:38 v #25463 > > inl x = am'.init_series -3f64 3 0.01
00:23:38 v #25464 > > inl y = x |> am'.map_base math.square
00:23:38 v #25465 > > "square", "x", "y", ;[[ "square", x, y ]]
00:23:39 v #25466 > >
00:23:39 v #25467 > > ╭─[ 420.75ms - return value ]──────────────────────────────────────────────────╮
00:23:39 v #25468 > > │ <svg width="640" height="480" viewBox="0 0 640 480"                          │
00:23:39 v #25469 > > │ xmlns="http://www.w3.org/2000/svg">                                          │
00:23:39 v #25470 > > │ <rect x="0" y="0" width="640" height="480" opacity="1" fill="#141414"        │
00:23:39 v #25471 > > │ stroke="none"/>                                                              │
00:23:39 v #25472 > > │ <text x="320" y="10" dy="0.76em" text-anchor="middle"                        │
00:23:39 v #25473 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1"            │
00:23:39 v #25474 > > │ fill="#FFFFFF">                                                              │
00:23:39 v #25475 > > │ square                                                                       │
00:23:39 v #25476 > > │ </text>                                                                      │
00:23:39 v #25477 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="61" y1="424" x2="61" │
00:23:39 v #25478 > > │ y2="75"/>                                                                    │
00:23:39 v #25479 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69" y1="424" x2="69" │
00:23:39 v #25480 > > │ y2="75"/>                                                                    │
00:23:39 v #25481 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="78" y1="424" x2="78" │
00:23:39 v #25482 > > │ y2="75"/>                                                                    │
00:23:39 v #25483 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="86" y1="424" x2="86" │
00:23:39 v #25484 > > │ y2="75"/>                                                                    │
00:23:39 v #25485 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="94" y1="424" x2="94" │
00:23:39 v #25486 > > │ y2="75"/>                                                                    │
00:23:39 v #25487 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="103" y1="424"        │
00:23:39 v #25488 > > │ x2="103" y2="75"/>                                                           │
00:23:39 v #25489 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="111" y1="424"        │
00:23:39 v #25490 > > │ x2="111" y2="75"/>                                                           │
00:23:39 v #25491 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="119" y1="424"        │
00:23:39 v #25492 > > │ x2="119" y2="75"/>                                                           │
00:23:39 v #25493 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="128" y1="424"        │
00:23:39 v #25494 > > │ x2="128" y2="75"/>                                                           │
00:23:39 v #25495 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="136" y1="424"        │
00:23:39 v #25496 > > │ x2="136" y2="75"/>                                                           │
00:23:39 v #25497 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="144" y1="424"        │
00:23:39 v #25498 > > │ x2="144" y2="75"/>                                                           │
00:23:39 v #25499 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="153" y1="424"        │
00:23:39 v #25500 > > │ x2="153" y2="75"/>                                                           │
00:23:39 v #25501 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="161" y1="424"        │
00:23:39 v #25502 > > │ x2="161" y2="75"/>                                                           │
00:23:39 v #25503 > > │ <line opacity="1" stroke="#... 449,326 450,324 450,323 451,322 452,321       │
00:23:39 v #25504 > > │ 453,320 454,319 455,317 455,316 456,315 457,314 458,313 459,311 460,310      │
00:23:39 v #25505 > > │ 460,309 461,308 462,306 463,305 464,304 465,303 465,301 466,300 467,299      │
00:23:39 v #25506 > > │ 468,297 469,296 470,295 470,293 471,292 472,291 473,289 474,288 475,287      │
00:23:39 v #25507 > > │ 475,285 476,284 477,283 478,281 479,280 480,278 480,277 481,276 482,274      │
00:23:39 v #25508 > > │ 483,273 484,271 485,270 485,268 486,267 487,265 488,264 489,262 490,261      │
00:23:39 v #25509 > > │ 490,259 491,258 492,256 493,255 494,253 495,252 495,250 496,249 497,247      │
00:23:39 v #25510 > > │ 498,246 499,244 499,242 500,241 501,239 502,238 503,236 504,234 504,233      │
00:23:39 v #25511 > > │ 505,231 506,229 507,228 508,226 509,224 509,223 510,221 511,219 512,218      │
00:23:39 v #25512 > > │ 513,216 514,214 514,213 515,211 516,209 517,207 518,206 519,204 519,202      │
00:23:39 v #25513 > > │ 520,200 521,199 522,197 523,195 524,193 524,191 525,190 526,188 527,186      │
00:23:39 v #25514 > > │ 528,184 529,182 529,180 530,179 531,177 532,175 533,173 534,171 534,169      │
00:23:39 v #25515 > > │ 535,167 536,165 537,164 538,162 539,160 539,158 540,156 541,154 542,152      │
00:23:39 v #25516 > > │ 543,150 544,148 544,146 545,144 546,142 547,140 548,138 549,136 549,134      │
00:23:39 v #25517 > > │ 550,132 551,130 552,128 553,126 554,124 554,122 555,120 556,117 557,115      │
00:23:39 v #25518 > > │ 558,113 559,111 559,109 560,107 561,105 562,103 563,101 564,98 564,96 565,94 │
00:23:39 v #25519 > > │ 566,92 567,90 568,88 569,85 "/>                                              │
00:23:39 v #25520 > > │ <rect x="497" y="235" width="83" height="30" opacity="1" fill="none"         │
00:23:39 v #25521 > > │ stroke="#FFFFFF"/>                                                           │
00:23:39 v #25522 > > │ <text x="537" y="245" dy="0.76em" text-anchor="start"                        │
00:23:39 v #25523 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1"            │
00:23:39 v #25524 > > │ fill="#FFFFFF">                                                              │
00:23:39 v #25525 > > │ square                                                                       │
00:23:39 v #25526 > > │ </text>                                                                      │
00:23:39 v #25527 > > │ <polyline fill="none" opacity="1" stroke="#FF0000" stroke-width="1"          │
00:23:39 v #25528 > > │ points="507,250 527,250 "/>                                                  │
00:23:39 v #25529 > > │ </svg>                                                                       │
00:23:39 v #25530 > > │                                                                              │
00:23:39 v #25531 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:23:39 v #25532 > >
00:23:39 v #25533 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:39 v #25534 > > //// test
00:23:39 v #25535 > >
00:23:39 v #25536 > > inl x = am'.init_series -10f64 10 0.1
00:23:39 v #25537 > > inl y_sin = x |> am'.map_base sin
00:23:39 v #25538 > > inl y_cos = x |> am'.map_base cos
00:23:39 v #25539 > > "sin cos", "x", "y", ;[[ "sin", x, y_sin; "cos", x, y_cos ]]
00:23:39 v #25540 > >
00:23:39 v #25541 > > ╭─[ 449.32ms - return value ]──────────────────────────────────────────────────╮
00:23:39 v #25542 > > │ <svg width="640" height="480" viewBox="0 0 640 480"                          │
00:23:39 v #25543 > > │ xmlns="http://www.w3.org/2000/svg">                                          │
00:23:39 v #25544 > > │ <rect x="0" y="0" width="640" height="480" opacity="1" fill="#141414"        │
00:23:39 v #25545 > > │ stroke="none"/>                                                              │
00:23:39 v #25546 > > │ <text x="320" y="10" dy="0.76em" text-anchor="middle"                        │
00:23:39 v #25547 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1"            │
00:23:39 v #25548 > > │ fill="#FFFFFF">                                                              │
00:23:39 v #25549 > > │ sin cos                                                                      │
00:23:39 v #25550 > > │ </text>                                                                      │
00:23:39 v #25551 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="57" y1="424" x2="57" │
00:23:39 v #25552 > > │ y2="75"/>                                                                    │
00:23:39 v #25553 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69" y1="424" x2="69" │
00:23:39 v #25554 > > │ y2="75"/>                                                                    │
00:23:39 v #25555 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="82" y1="424" x2="82" │
00:23:39 v #25556 > > │ y2="75"/>                                                                    │
00:23:39 v #25557 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="94" y1="424" x2="94" │
00:23:39 v #25558 > > │ y2="75"/>                                                                    │
00:23:39 v #25559 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="107" y1="424"        │
00:23:39 v #25560 > > │ x2="107" y2="75"/>                                                           │
00:23:39 v #25561 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="119" y1="424"        │
00:23:39 v #25562 > > │ x2="119" y2="75"/>                                                           │
00:23:39 v #25563 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="132" y1="424"        │
00:23:39 v #25564 > > │ x2="132" y2="75"/>                                                           │
00:23:39 v #25565 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="144" y1="424"        │
00:23:39 v #25566 > > │ x2="144" y2="75"/>                                                           │
00:23:39 v #25567 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="157" y1="424"        │
00:23:39 v #25568 > > │ x2="157" y2="75"/>                                                           │
00:23:39 v #25569 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="169" y1="424"        │
00:23:39 v #25570 > > │ x2="169" y2="75"/>                                                           │
00:23:39 v #25571 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="182" y1="424"        │
00:23:39 v #25572 > > │ x2="182" y2="75"/>                                                           │
00:23:39 v #25573 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="194" y1="424"        │
00:23:39 v #25574 > > │ x2="194" y2="75"/>                                                           │
00:23:39 v #25575 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="207" y1="424"        │
00:23:39 v #25576 > > │ x2="207" y2="75"/>                                                           │
00:23:39 v #25577 > > │ <line opacity="1" stroke...55 282,238 284,222 287,206 289,190 292,175        │
00:23:39 v #25578 > > │ 294,161 297,148 299,135 302,124 304,114 307,106 309,98 312,93 314,89 317,86  │
00:23:39 v #25579 > > │ 319,85 321,86 324,89 326,93 329,98 331,106 334,114 336,124 339,135 341,148   │
00:23:39 v #25580 > > │ 344,161 346,175 349,190 351,206 354,222 356,238 359,255 361,271 364,287      │
00:23:39 v #25581 > > │ 366,303 369,319 371,333 374,347 376,360 379,371 381,382 384,391 386,399      │
00:23:39 v #25582 > > │ 389,405 391,410 394,413 396,414 399,414 401,413 404,409 406,404 409,398      │
00:23:39 v #25583 > > │ 411,390 414,380 416,370 419,358 421,345 424,331 426,316 429,301 431,285      │
00:23:39 v #25584 > > │ 434,268 436,252 439,236 441,219 444,203 446,188 449,173 451,159 454,146      │
00:23:39 v #25585 > > │ 456,133 459,122 461,113 464,104 466,97 469,92 471,88 474,86 476,85 479,86    │
00:23:39 v #25586 > > │ 481,89 484,94 486,99 489,107 491,116 494,126 496,137 499,150 501,163 504,178 │
00:23:39 v #25587 > > │ 506,193 509,209 511,225 514,241 516,258 519,274 521,290 524,306 526,321      │
00:23:39 v #25588 > > │ 529,335 531,349 534,362 536,373 539,384 541,392 544,400 546,406 549,410      │
00:23:39 v #25589 > > │ 551,413 554,415 556,414 559,412 561,408 564,403 566,396 569,388 "/>          │
00:23:39 v #25590 > > │ <rect x="514" y="227" width="66" height="45" opacity="1" fill="none"         │
00:23:39 v #25591 > > │ stroke="#FFFFFF"/>                                                           │
00:23:39 v #25592 > > │ <text x="554" y="237" dy="0.76em" text-anchor="start"                        │
00:23:39 v #25593 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1"            │
00:23:39 v #25594 > > │ fill="#FFFFFF">                                                              │
00:23:39 v #25595 > > │ sin                                                                          │
00:23:39 v #25596 > > │ </text>                                                                      │
00:23:39 v #25597 > > │ <text x="554" y="252" dy="0.76em" text-anchor="start"                        │
00:23:39 v #25598 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1"            │
00:23:39 v #25599 > > │ fill="#FFFFFF">                                                              │
00:23:39 v #25600 > > │ cos                                                                          │
00:23:39 v #25601 > > │ </text>                                                                      │
00:23:39 v #25602 > > │ <polyline fill="none" opacity="1" stroke="#FF0000" stroke-width="1"          │
00:23:39 v #25603 > > │ points="524,242 544,242 "/>                                                  │
00:23:39 v #25604 > > │ <polyline fill="none" opacity="1" stroke="#0000FF" stroke-width="1"          │
00:23:39 v #25605 > > │ points="524,257 544,257 "/>                                                  │
00:23:39 v #25606 > > │ </svg>                                                                       │
00:23:39 v #25607 > > │                                                                              │
00:23:39 v #25608 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:23:39 v #25609 > >
00:23:39 v #25610 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:39 v #25611 > > //// test
00:23:39 v #25612 > >
00:23:39 v #25613 > > inl y_pos y0 vy0 ay t =
00:23:39 v #25614 > >     y0 + vy0 * t + ay * (t |> math.square) / 2
00:23:39 v #25615 > >
00:23:39 v #25616 > > inl x = am'.init_series 0f64 5 0.01
00:23:39 v #25617 > > inl y = x |> am'.map_base (y_pos 0 20 -9.8)
00:23:39 v #25618 > > "projectile motion", "time (s)", "", ;[[ "height of projectile (m)", x, y ]]
00:23:39 v #25619 > >
00:23:39 v #25620 > > ╭─[ 429.34ms - return value ]──────────────────────────────────────────────────╮
00:23:39 v #25621 > > │ <svg width="640" height="480" viewBox="0 0 640 480"                          │
00:23:39 v #25622 > > │ xmlns="http://www.w3.org/2000/svg">                                          │
00:23:39 v #25623 > > │ <rect x="0" y="0" width="640" height="480" opacity="1" fill="#141414"        │
00:23:39 v #25624 > > │ stroke="none"/>                                                              │
00:23:39 v #25625 > > │ <text x="320" y="10" dy="0.76em" text-anchor="middle"                        │
00:23:39 v #25626 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1"            │
00:23:39 v #25627 > > │ fill="#FFFFFF">                                                              │
00:23:39 v #25628 > > │ projectile motion                                                            │
00:23:39 v #25629 > > │ </text>                                                                      │
00:23:39 v #25630 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="59" y1="424" x2="59" │
00:23:39 v #25631 > > │ y2="75"/>                                                                    │
00:23:39 v #25632 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69" y1="424" x2="69" │
00:23:39 v #25633 > > │ y2="75"/>                                                                    │
00:23:39 v #25634 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="79" y1="424" x2="79" │
00:23:39 v #25635 > > │ y2="75"/>                                                                    │
00:23:39 v #25636 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="89" y1="424" x2="89" │
00:23:39 v #25637 > > │ y2="75"/>                                                                    │
00:23:39 v #25638 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="99" y1="424" x2="99" │
00:23:39 v #25639 > > │ y2="75"/>                                                                    │
00:23:39 v #25640 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="109" y1="424"        │
00:23:39 v #25641 > > │ x2="109" y2="75"/>                                                           │
00:23:39 v #25642 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="119" y1="424"        │
00:23:39 v #25643 > > │ x2="119" y2="75"/>                                                           │
00:23:39 v #25644 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="129" y1="424"        │
00:23:39 v #25645 > > │ x2="129" y2="75"/>                                                           │
00:23:39 v #25646 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="139" y1="424"        │
00:23:39 v #25647 > > │ x2="139" y2="75"/>                                                           │
00:23:39 v #25648 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="149" y1="424"        │
00:23:39 v #25649 > > │ x2="149" y2="75"/>                                                           │
00:23:39 v #25650 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="159" y1="424"        │
00:23:39 v #25651 > > │ x2="159" y2="75"/>                                                           │
00:23:39 v #25652 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="169" y1="424"        │
00:23:39 v #25653 > > │ x2="169" y2="75"/>                                                           │
00:23:39 v #25654 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="179" y1="424"        │
00:23:39 v #25655 > > │ x2="179" y2="75"/>                                                           │
00:23:39 v #25656 > > │ <line opacity="1...28,176 429,177 430,178 431,179 432,180 433,182 434,183    │
00:23:39 v #25657 > > │ 435,184 436,185 437,186 438,188 439,189 440,190 441,191 442,193 443,194      │
00:23:39 v #25658 > > │ 444,195 445,197 446,198 447,199 448,200 449,202 450,203 451,204 452,206      │
00:23:39 v #25659 > > │ 453,207 454,208 455,210 456,211 457,213 458,214 459,215 460,217 461,218      │
00:23:39 v #25660 > > │ 462,220 463,221 464,222 465,224 466,225 467,227 468,228 469,230 470,231      │
00:23:39 v #25661 > > │ 471,233 472,234 473,236 474,237 475,239 476,240 477,242 478,243 479,245      │
00:23:39 v #25662 > > │ 480,246 481,248 482,249 483,251 484,253 485,254 486,256 487,257 488,259      │
00:23:39 v #25663 > > │ 489,261 490,262 491,264 492,266 493,267 494,269 495,271 496,272 497,274      │
00:23:39 v #25664 > > │ 498,276 499,277 500,279 501,281 502,282 503,284 504,286 505,288 506,289      │
00:23:39 v #25665 > > │ 507,291 508,293 509,295 510,296 511,298 512,300 513,302 514,304 515,305      │
00:23:39 v #25666 > > │ 516,307 517,309 518,311 519,313 520,315 521,316 522,318 523,320 524,322      │
00:23:39 v #25667 > > │ 525,324 526,326 527,328 528,330 529,332 530,334 531,335 532,337 533,339      │
00:23:39 v #25668 > > │ 534,341 535,343 536,345 537,347 538,349 539,351 540,353 541,355 542,357      │
00:23:39 v #25669 > > │ 543,359 544,361 545,363 546,365 547,367 548,370 549,372 550,374 551,376      │
00:23:39 v #25670 > > │ 552,378 553,380 554,382 555,384 556,386 557,388 558,391 559,393 560,395      │
00:23:39 v #25671 > > │ 561,397 562,399 563,401 564,404 565,406 566,408 567,410 568,412 569,415 "/>  │
00:23:39 v #25672 > > │ <rect x="399" y="235" width="181" height="30" opacity="1" fill="none"        │
00:23:39 v #25673 > > │ stroke="#FFFFFF"/>                                                           │
00:23:39 v #25674 > > │ <text x="439" y="245" dy="0.76em" text-anchor="start"                        │
00:23:39 v #25675 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1"            │
00:23:39 v #25676 > > │ fill="#FFFFFF">                                                              │
00:23:39 v #25677 > > │ height of projectile (m)                                                     │
00:23:39 v #25678 > > │ </text>                                                                      │
00:23:39 v #25679 > > │ <polyline fill="none" opacity="1" stroke="#FF0000" stroke-width="1"          │
00:23:39 v #25680 > > │ points="409,250 429,250 "/>                                                  │
00:23:39 v #25681 > > │ </svg>                                                                       │
00:23:39 v #25682 > > │                                                                              │
00:23:39 v #25683 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:23:39 v #25684 > >
00:23:39 v #25685 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:39 v #25686 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:23:39 v #25687 > > │ ### velocity_cf                                                              │
00:23:39 v #25688 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:23:39 v #25689 > >
00:23:39 v #25690 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:39 v #25691 > > type mass = f64
00:23:39 v #25692 > > type time = f64
00:23:39 v #25693 > > type position = f64
00:23:39 v #25694 > > type velocity = f64
00:23:39 v #25695 > > type force = f64
00:23:39 v #25696 > >
00:23:39 v #25697 > > type velocity_cf = mass -> velocity -> list force -> (time -> velocity)
00:23:39 v #25698 > >
00:23:39 v #25699 > > inl velocity_cf m v0 fs =
00:23:39 v #25700 > >     inl f_net = fs |> listm'.sum
00:23:39 v #25701 > >     inl a0 = f_net / m
00:23:39 v #25702 > >     inl v t = v0 + a0 * t
00:23:39 v #25703 > >     v
00:23:40 v #25704 > >
00:23:40 v #25705 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:40 v #25706 > > //// test
00:23:40 v #25707 > >
00:23:40 v #25708 > > velocity_cf 0.1f64 0.6 [[ 0.04; -0.08 ]] 0
00:23:40 v #25709 > > |> _assert_eq 0.6
00:23:40 v #25710 > >
00:23:40 v #25711 > > velocity_cf 0.1f64 0.6 [[ 0.04; -0.08 ]] 1
00:23:40 v #25712 > > |> _assert_eq 0.2
00:23:40 v #25713 > >
00:23:40 v #25714 > > ╭─[ 375.06ms - stdout ]────────────────────────────────────────────────────────╮
00:23:40 v #25715 > > │ __assert_eq / actual: 0.6 / expected: 0.6                                    │
00:23:40 v #25716 > > │ __assert_eq / actual: 0.2 / expected: 0.2                                    │
00:23:40 v #25717 > > │                                                                              │
00:23:40 v #25718 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:23:40 v #25719 > >
00:23:40 v #25720 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:40 v #25721 > > //// test
00:23:40 v #25722 > >
00:23:40 v #25723 > > inl x = am'.init_series 0f64 4 0.1
00:23:40 v #25724 > > inl y = x |> am'.map_base (velocity_cf 0.1f64 0.6 [[ 0.04; -0.08 ]])
00:23:40 v #25725 > > "car on an air track", "time (s)", "", ;[[ "velocity of car (m/s)", x, y ]]
00:23:41 v #25726 > >
00:23:41 v #25727 > > ╭─[ 424.29ms - return value ]──────────────────────────────────────────────────╮
00:23:41 v #25728 > > │ <svg width="640" height="480" viewBox="0 0 640 480"                          │
00:23:41 v #25729 > > │ xmlns="http://www.w3.org/2000/svg">                                          │
00:23:41 v #25730 > > │ <rect x="0" y="0" width="640" height="480" opacity="1" fill="#141414"        │
00:23:41 v #25731 > > │ stroke="none"/>                                                              │
00:23:41 v #25732 > > │ <text x="320" y="10" dy="0.76em" text-anchor="middle"                        │
00:23:41 v #25733 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1"            │
00:23:41 v #25734 > > │ fill="#FFFFFF">                                                              │
00:23:41 v #25735 > > │ car on an air track                                                          │
00:23:41 v #25736 > > │ </text>                                                                      │
00:23:41 v #25737 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="57" y1="424" x2="57" │
00:23:41 v #25738 > > │ y2="75"/>                                                                    │
00:23:41 v #25739 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69" y1="424" x2="69" │
00:23:41 v #25740 > > │ y2="75"/>                                                                    │
00:23:41 v #25741 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="82" y1="424" x2="82" │
00:23:41 v #25742 > > │ y2="75"/>                                                                    │
00:23:41 v #25743 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="94" y1="424" x2="94" │
00:23:41 v #25744 > > │ y2="75"/>                                                                    │
00:23:41 v #25745 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="107" y1="424"        │
00:23:41 v #25746 > > │ x2="107" y2="75"/>                                                           │
00:23:41 v #25747 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="119" y1="424"        │
00:23:41 v #25748 > > │ x2="119" y2="75"/>                                                           │
00:23:41 v #25749 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="132" y1="424"        │
00:23:41 v #25750 > > │ x2="132" y2="75"/>                                                           │
00:23:41 v #25751 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="144" y1="424"        │
00:23:41 v #25752 > > │ x2="144" y2="75"/>                                                           │
00:23:41 v #25753 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="157" y1="424"        │
00:23:41 v #25754 > > │ x2="157" y2="75"/>                                                           │
00:23:41 v #25755 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="169" y1="424"        │
00:23:41 v #25756 > > │ x2="169" y2="75"/>                                                           │
00:23:41 v #25757 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="182" y1="424"        │
00:23:41 v #25758 > > │ x2="182" y2="75"/>                                                           │
00:23:41 v #25759 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="194" y1="424"        │
00:23:41 v #25760 > > │ x2="194" y2="75"/>                                                           │
00:23:41 v #25761 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="207" y1="424"        │
00:23:41 v #25762 > > │ x2="207" y2="75"/>                                                           │
00:23:41 v #25763 > > │ <line opacit...85,209 590,209 "/>                                            │
00:23:41 v #25764 > > │ <text x="617" y="168" dy="0.5ex" text-anchor="end" font-family="sans-serif"  │
00:23:41 v #25765 > > │ font-size="9.67741935483871" opacity="1" fill="#FFFFFF">                     │
00:23:41 v #25766 > > │ 0.2                                                                          │
00:23:41 v #25767 > > │ </text>                                                                      │
00:23:41 v #25768 > > │ <polyline fill="none" opacity="1" stroke="#FFFFFF" stroke-width="1"          │
00:23:41 v #25769 > > │ points="585,168 590,168 "/>                                                  │
00:23:41 v #25770 > > │ <text x="617" y="127" dy="0.5ex" text-anchor="end" font-family="sans-serif"  │
00:23:41 v #25771 > > │ font-size="9.67741935483871" opacity="1" fill="#FFFFFF">                     │
00:23:41 v #25772 > > │ 0.4                                                                          │
00:23:41 v #25773 > > │ </text>                                                                      │
00:23:41 v #25774 > > │ <polyline fill="none" opacity="1" stroke="#FFFFFF" stroke-width="1"          │
00:23:41 v #25775 > > │ points="585,127 590,127 "/>                                                  │
00:23:41 v #25776 > > │ <text x="617" y="85" dy="0.5ex" text-anchor="end" font-family="sans-serif"   │
00:23:41 v #25777 > > │ font-size="9.67741935483871" opacity="1" fill="#FFFFFF">                     │
00:23:41 v #25778 > > │ 0.6                                                                          │
00:23:41 v #25779 > > │ </text>                                                                      │
00:23:41 v #25780 > > │ <polyline fill="none" opacity="1" stroke="#FFFFFF" stroke-width="1"          │
00:23:41 v #25781 > > │ points="585,85 590,85 "/>                                                    │
00:23:41 v #25782 > > │ <polyline fill="none" opacity="1" stroke="#FF0000" stroke-width="1"          │
00:23:41 v #25783 > > │ points="69,85 82,94 94,102 107,110 119,118 132,127 144,135 157,143 169,151   │
00:23:41 v #25784 > > │ 182,159 194,168 207,176 219,184 232,192 244,201 257,209 269,217 282,225      │
00:23:41 v #25785 > > │ 294,234 307,242 319,250 331,258 344,266 356,275 369,283 381,291 394,299      │
00:23:41 v #25786 > > │ 406,308 419,316 431,324 444,332 456,341 469,349 481,357 494,365 506,373      │
00:23:41 v #25787 > > │ 519,382 531,390 544,398 556,406 569,415 "/>                                  │
00:23:41 v #25788 > > │ <rect x="415" y="235" width="165" height="30" opacity="1" fill="none"        │
00:23:41 v #25789 > > │ stroke="#FFFFFF"/>                                                           │
00:23:41 v #25790 > > │ <text x="455" y="245" dy="0.76em" text-anchor="start"                        │
00:23:41 v #25791 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1"            │
00:23:41 v #25792 > > │ fill="#FFFFFF">                                                              │
00:23:41 v #25793 > > │ velocity of car (m/s)                                                        │
00:23:41 v #25794 > > │ </text>                                                                      │
00:23:41 v #25795 > > │ <polyline fill="none" opacity="1" stroke="#FF0000" stroke-width="1"          │
00:23:41 v #25796 > > │ points="425,250 445,250 "/>                                                  │
00:23:41 v #25797 > > │ </svg>                                                                       │
00:23:41 v #25798 > > │                                                                              │
00:23:41 v #25799 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:23:41 v #25800 > >
00:23:41 v #25801 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:41 v #25802 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:23:41 v #25803 > > │ ### derivative                                                               │
00:23:41 v #25804 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:23:41 v #25805 > >
00:23:41 v #25806 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:41 v #25807 > > type derivative = (f64 -> f64) -> f64 -> f64
00:23:41 v #25808 > >
00:23:41 v #25809 > > inl derivative dt : derivative =
00:23:41 v #25810 > >     fun x t =>
00:23:41 v #25811 > >         (x (t + dt / 2) - x (t - dt / 2)) / dt
00:23:41 v #25812 > >
00:23:41 v #25813 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:41 v #25814 > > //// test
00:23:41 v #25815 > >
00:23:41 v #25816 > > derivative 1 (fun x => x ** 4 / 4) 1 - 1
00:23:41 v #25817 > > |> _assert_approx_eq None 0.25
00:23:41 v #25818 > >
00:23:41 v #25819 > > derivative 0.001 (fun x => x ** 4 / 4) 1 - 1
00:23:41 v #25820 > > |> _assert_approx_eq None 0.0000002499998827953931
00:23:41 v #25821 > >
00:23:41 v #25822 > > derivative 0.000001 (fun x => x ** 4 / 4) 1 - 1
00:23:41 v #25823 > > |> _assert_approx_eq None 0.000000000001000088900582341
00:23:41 v #25824 > >
00:23:41 v #25825 > > derivative 0.000000001 (fun x => x ** 4 / 4) 1 - 1
00:23:41 v #25826 > > |> _assert_approx_eq None 0.00000008274037099909037
00:23:41 v #25827 > >
00:23:41 v #25828 > > derivative 0.000000000001 (fun x => x ** 4 / 4) 1 - 1
00:23:41 v #25829 > > |> _assert_approx_eq None 0.00008890058234101161
00:23:41 v #25830 > >
00:23:41 v #25831 > > derivative 0.000000000000001 (fun x => x ** 4 / 4) 1 - 1
00:23:41 v #25832 > > |> _assert_approx_eq None -0.0007992778373592246
00:23:41 v #25833 > >
00:23:41 v #25834 > > derivative 0.000000000000000001 (fun x => x ** 4 / 4) 1 - 1
00:23:41 v #25835 > > |> _assert_approx_eq None -1
00:23:41 v #25836 > >
00:23:41 v #25837 > > ╭─[ 379.69ms - stdout ]────────────────────────────────────────────────────────╮
00:23:41 v #25838 > > │ __assert_approx_eq / actual: 0.25 / expected: 0.25                           │
00:23:41 v #25839 > > │ __assert_approx_eq / actual: 2.499998828e-07 / expected: 2.499998828e-07     │
00:23:41 v #25840 > > │ __assert_approx_eq / actual: 1.000088901e-12 / expected: 1.000088901e-12     │
00:23:41 v #25841 > > │ __assert_approx_eq / actual: 8.2740371e-08 / expected: 8.2740371e-08         │
00:23:41 v #25842 > > │ __assert_approx_eq / actual: 8.890058234e-05 / expected: 8.890058234e-05     │
00:23:41 v #25843 > > │ __assert_approx_eq / actual: -0.0007992778374 / expected: -0.0007992778374   │
00:23:41 v #25844 > > │ __assert_approx_eq / actual: -1.0 / expected: -1.0                           │
00:23:41 v #25845 > > │                                                                              │
00:23:41 v #25846 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:23:41 v #25847 > >
00:23:41 v #25848 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:41 v #25849 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:23:41 v #25850 > > │ ### integration                                                              │
00:23:41 v #25851 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:23:41 v #25852 > >
00:23:41 v #25853 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:41 v #25854 > > type integration = (f64 -> f64) -> f64 -> f64 -> f64
00:23:41 v #25855 > >
00:23:41 v #25856 > > inl integral dt : integration =
00:23:41 v #25857 > >     fun f a b =>
00:23:41 v #25858 > >         inl rec loop t y =
00:23:41 v #25859 > >             if t < b
00:23:41 v #25860 > >             then loop (t + dt) (y + f t * dt)
00:23:41 v #25861 > >             else t, y
00:23:41 v #25862 > >         loop (a + dt / 2) 0
00:23:41 v #25863 > >         |> snd
00:23:42 v #25864 > >
00:23:42 v #25865 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:42 v #25866 > > //// test
00:23:42 v #25867 > >
00:23:42 v #25868 > > integral 0.01 math.square 0 1
00:23:42 v #25869 > > |> _assert_approx_eq None 0.33332500000000004
00:23:42 v #25870 > >
00:23:42 v #25871 > > ╭─[ 430.87ms - stdout ]────────────────────────────────────────────────────────╮
00:23:42 v #25872 > > │ __assert_approx_eq / actual: 0.333325 / expected: 0.333325                   │
00:23:42 v #25873 > > │                                                                              │
00:23:42 v #25874 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:23:42 v #25875 > >
00:23:42 v #25876 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:42 v #25877 > > inl integral' dt : integration =
00:23:42 v #25878 > >     fun f a b =>
00:23:42 v #25879 > >         listm'.init_series (a + dt / 2) (b - dt / 2) dt
00:23:42 v #25880 > >         |> listm.map (f >> (*) dt)
00:23:42 v #25881 > >         |> listm'.sum
00:23:43 v #25882 > >
00:23:43 v #25883 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:43 v #25884 > > //// test
00:23:43 v #25885 > >
00:23:43 v #25886 > > integral' 0.1 math.square 0 1
00:23:43 v #25887 > > |> _assert_approx_eq None (integral 0.1 math.square 0 1)
00:23:43 v #25888 > >
00:23:43 v #25889 > > ╭─[ 396.84ms - stdout ]────────────────────────────────────────────────────────╮
00:23:43 v #25890 > > │ __assert_approx_eq / actual: 0.3325 / expected: 0.3325                       │
00:23:43 v #25891 > > │                                                                              │
00:23:43 v #25892 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:23:43 v #25893 > >
00:23:43 v #25894 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:43 v #25895 > > inl integral'' dt : integration =
00:23:43 v #25896 > >     fun f x y =>
00:23:43 v #25897 > >         am'.init_series (x + dt / 2) (y - dt / 2) dt
00:23:43 v #25898 > >         |> fun x => a x : _ int _
00:23:43 v #25899 > >         |> am.map (f >> (*) dt)
00:23:43 v #25900 > >         |> am'.sum
00:23:44 v #25901 > >
00:23:44 v #25902 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:44 v #25903 > > //// test
00:23:44 v #25904 > >
00:23:44 v #25905 > > integral'' 0.01 math.square 0 1
00:23:44 v #25906 > > |> _assert_approx_eq None (integral 0.01 math.square 0 1)
00:23:44 v #25907 > >
00:23:44 v #25908 > > ╭─[ 460.16ms - stdout ]────────────────────────────────────────────────────────╮
00:23:44 v #25909 > > │ __assert_approx_eq / actual: 0.333325 / expected: 0.333325                   │
00:23:44 v #25910 > > │                                                                              │
00:23:44 v #25911 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:23:44 v #25912 > >
00:23:44 v #25913 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:44 v #25914 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:23:44 v #25915 > > │ ### anti_derivative                                                          │
00:23:44 v #25916 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:23:44 v #25917 > >
00:23:44 v #25918 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:44 v #25919 > > inl anti_derivative dt v0 a t =
00:23:44 v #25920 > >     v0 + integral' dt a 0 t
00:23:44 v #25921 > >
00:23:44 v #25922 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:44 v #25923 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:23:44 v #25924 > > │ ### velocity_ft                                                              │
00:23:44 v #25925 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:23:44 v #25926 > >
00:23:44 v #25927 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:44 v #25928 > > type velocity_ft = mass -> velocity -> list (time -> force) -> (time ->
00:23:44 v #25929 > > velocity)
00:23:44 v #25930 > >
00:23:44 v #25931 > > inl velocity_ft dt : velocity_ft =
00:23:44 v #25932 > >     fun m v0 fs =>
00:23:44 v #25933 > >         inl f_net t = fs |> listm.map (fun f => f t) |> listm'.sum
00:23:44 v #25934 > >         inl a t = f_net t / m
00:23:44 v #25935 > >         anti_derivative dt v0 a
00:23:45 v #25936 > >
00:23:45 v #25937 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:45 v #25938 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:23:45 v #25939 > > │ ### position_ft                                                              │
00:23:45 v #25940 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:23:45 v #25941 > >
00:23:45 v #25942 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:45 v #25943 > > type position_ft = mass -> position -> velocity -> list (time -> force) -> (time
00:23:45 v #25944 > > -> position)
00:23:45 v #25945 > >
00:23:45 v #25946 > > inl position_ft dt : position_ft =
00:23:45 v #25947 > >     fun m x0 v0 fs =>
00:23:45 v #25948 > >         velocity_ft dt m v0 fs
00:23:45 v #25949 > >         |> anti_derivative dt x0
00:23:45 v #25950 > >
00:23:45 v #25951 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:45 v #25952 > > //// test
00:23:45 v #25953 > >
00:23:45 v #25954 > > inl pedal_coast (t : time) : force =
00:23:45 v #25955 > >     inl t_cycle = 20
00:23:45 v #25956 > >     inl n_complete : i32 = t / t_cycle |> conv
00:23:45 v #25957 > >     inl remainder = t - conv n_complete * t_cycle
00:23:45 v #25958 > >     if remainder > 0 && remainder < 10
00:23:45 v #25959 > >     then 10
00:23:45 v #25960 > >     else 0
00:23:45 v #25961 > >
00:23:45 v #25962 > > inl x = am'.init_series -5f64 45 0.1
00:23:45 v #25963 > > inl y = x |> am'.map_base pedal_coast
00:23:45 v #25964 > > "child pedaling then coasting", "time (s)", "", ;[[ "force on bike (N)", x, y ]]
00:23:46 v #25965 > >
00:23:46 v #25966 > > ╭─[ 469.66ms - return value ]──────────────────────────────────────────────────╮
00:23:46 v #25967 > > │ <svg width="640" height="480" viewBox="0 0 640 480"                          │
00:23:46 v #25968 > > │ xmlns="http://www.w3.org/2000/svg">                                          │
00:23:46 v #25969 > > │ <rect x="0" y="0" width="640" height="480" opacity="1" fill="#141414"        │
00:23:46 v #25970 > > │ stroke="none"/>                                                              │
00:23:46 v #25971 > > │ <text x="320" y="10" dy="0.76em" text-anchor="middle"                        │
00:23:46 v #25972 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1"            │
00:23:46 v #25973 > > │ fill="#FFFFFF">                                                              │
00:23:46 v #25974 > > │ child pedaling then coasting                                                 │
00:23:46 v #25975 > > │ </text>                                                                      │
00:23:46 v #25976 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="59" y1="424" x2="59" │
00:23:46 v #25977 > > │ y2="75"/>                                                                    │
00:23:46 v #25978 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69" y1="424" x2="69" │
00:23:46 v #25979 > > │ y2="75"/>                                                                    │
00:23:46 v #25980 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="79" y1="424" x2="79" │
00:23:46 v #25981 > > │ y2="75"/>                                                                    │
00:23:46 v #25982 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="89" y1="424" x2="89" │
00:23:46 v #25983 > > │ y2="75"/>                                                                    │
00:23:46 v #25984 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="99" y1="424" x2="99" │
00:23:46 v #25985 > > │ y2="75"/>                                                                    │
00:23:46 v #25986 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="109" y1="424"        │
00:23:46 v #25987 > > │ x2="109" y2="75"/>                                                           │
00:23:46 v #25988 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="119" y1="424"        │
00:23:46 v #25989 > > │ x2="119" y2="75"/>                                                           │
00:23:46 v #25990 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="129" y1="424"        │
00:23:46 v #25991 > > │ x2="129" y2="75"/>                                                           │
00:23:46 v #25992 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="139" y1="424"        │
00:23:46 v #25993 > > │ x2="139" y2="75"/>                                                           │
00:23:46 v #25994 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="149" y1="424"        │
00:23:46 v #25995 > > │ x2="149" y2="75"/>                                                           │
00:23:46 v #25996 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="159" y1="424"        │
00:23:46 v #25997 > > │ x2="159" y2="75"/>                                                           │
00:23:46 v #25998 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="169" y1="424"        │
00:23:46 v #25999 > > │ x2="169" y2="75"/>                                                           │
00:23:46 v #26000 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="179" y1="424"        │
00:23:46 v #26001 > > │ x2="179" y2="75"/>                                                           │
00:23:46 v #26002 > > │ <line...421,415 422,415 423,415 424,415 425,415 426,415 427,415 428,415      │
00:23:46 v #26003 > > │ 429,415 430,415 431,415 432,415 433,415 434,415 435,415 436,415 437,415      │
00:23:46 v #26004 > > │ 438,415 439,415 440,415 441,415 442,415 443,415 444,415 445,415 446,415      │
00:23:46 v #26005 > > │ 447,415 448,415 449,415 450,415 451,415 452,415 453,415 454,415 455,415      │
00:23:46 v #26006 > > │ 456,415 457,415 458,415 459,415 460,415 461,415 462,415 463,415 464,415      │
00:23:46 v #26007 > > │ 465,415 466,415 467,415 468,415 469,415 470,415 471,415 472,415 473,415      │
00:23:46 v #26008 > > │ 474,415 475,415 476,415 477,415 478,415 479,415 480,415 481,415 482,415      │
00:23:46 v #26009 > > │ 483,415 484,415 485,415 486,415 487,415 488,415 489,415 490,415 491,415      │
00:23:46 v #26010 > > │ 492,415 493,415 494,415 495,415 496,415 497,415 498,415 499,415 500,415      │
00:23:46 v #26011 > > │ 501,415 502,415 503,415 504,415 505,415 506,415 507,415 508,415 509,415      │
00:23:46 v #26012 > > │ 510,415 511,415 512,415 513,415 514,415 515,415 516,415 517,415 518,415      │
00:23:46 v #26013 > > │ 519,415 520,85 521,85 522,85 523,85 524,85 525,85 526,85 527,85 528,85       │
00:23:46 v #26014 > > │ 529,85 530,85 531,85 532,85 533,85 534,85 535,85 536,85 537,85 538,85 539,85 │
00:23:46 v #26015 > > │ 540,85 541,85 542,85 543,85 544,85 545,85 546,85 547,85 548,85 549,85 550,85 │
00:23:46 v #26016 > > │ 551,85 552,85 553,85 554,85 555,85 556,85 557,85 558,85 559,85 560,85 561,85 │
00:23:46 v #26017 > > │ 562,85 563,85 564,85 565,85 566,85 567,85 568,85 569,85 "/>                  │
00:23:46 v #26018 > > │ <rect x="437" y="235" width="143" height="30" opacity="1" fill="none"        │
00:23:46 v #26019 > > │ stroke="#FFFFFF"/>                                                           │
00:23:46 v #26020 > > │ <text x="477" y="245" dy="0.76em" text-anchor="start"                        │
00:23:46 v #26021 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1"            │
00:23:46 v #26022 > > │ fill="#FFFFFF">                                                              │
00:23:46 v #26023 > > │ force on bike (N)                                                            │
00:23:46 v #26024 > > │ </text>                                                                      │
00:23:46 v #26025 > > │ <polyline fill="none" opacity="1" stroke="#FF0000" stroke-width="1"          │
00:23:46 v #26026 > > │ points="447,250 467,250 "/>                                                  │
00:23:46 v #26027 > > │ </svg>                                                                       │
00:23:46 v #26028 > > │                                                                              │
00:23:46 v #26029 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:23:46 v #26030 > >
00:23:46 v #26031 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:46 v #26032 > > //// test
00:23:46 v #26033 > >
00:23:46 v #26034 > > inl x = am'.init_series -5 45 1
00:23:46 v #26035 > > inl y = x |> am'.map_base (position_ft 0.1f64 20 0 0 [[ pedal_coast ]])
00:23:46 v #26036 > > "child pedaling then coasting", "time (s)", "", ;[[ "position of bike (m)", x, y
00:23:46 v #26037 > > ]]
00:23:46 v #26038 > >
00:23:46 v #26039 > > ╭─[ 698.05ms - return value ]──────────────────────────────────────────────────╮
00:23:46 v #26040 > > │ <svg width="640" height="480" viewBox="0 0 640 480"                          │
00:23:46 v #26041 > > │ xmlns="http://www.w3.org/2000/svg">                                          │
00:23:46 v #26042 > > │ <rect x="0" y="0" width="640" height="480" opacity="1" fill="#141414"        │
00:23:46 v #26043 > > │ stroke="none"/>                                                              │
00:23:46 v #26044 > > │ <text x="320" y="10" dy="0.76em" text-anchor="middle"                        │
00:23:46 v #26045 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1"            │
00:23:46 v #26046 > > │ fill="#FFFFFF">                                                              │
00:23:46 v #26047 > > │ child pedaling then coasting                                                 │
00:23:46 v #26048 > > │ </text>                                                                      │
00:23:46 v #26049 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="59" y1="424" x2="59" │
00:23:46 v #26050 > > │ y2="75"/>                                                                    │
00:23:46 v #26051 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69" y1="424" x2="69" │
00:23:46 v #26052 > > │ y2="75"/>                                                                    │
00:23:46 v #26053 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="79" y1="424" x2="79" │
00:23:46 v #26054 > > │ y2="75"/>                                                                    │
00:23:46 v #26055 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="89" y1="424" x2="89" │
00:23:46 v #26056 > > │ y2="75"/>                                                                    │
00:23:46 v #26057 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="99" y1="424" x2="99" │
00:23:46 v #26058 > > │ y2="75"/>                                                                    │
00:23:46 v #26059 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="109" y1="424"        │
00:23:46 v #26060 > > │ x2="109" y2="75"/>                                                           │
00:23:46 v #26061 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="119" y1="424"        │
00:23:46 v #26062 > > │ x2="119" y2="75"/>                                                           │
00:23:46 v #26063 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="129" y1="424"        │
00:23:46 v #26064 > > │ x2="129" y2="75"/>                                                           │
00:23:46 v #26065 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="139" y1="424"        │
00:23:46 v #26066 > > │ x2="139" y2="75"/>                                                           │
00:23:46 v #26067 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="149" y1="424"        │
00:23:46 v #26068 > > │ x2="149" y2="75"/>                                                           │
00:23:46 v #26069 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="159" y1="424"        │
00:23:46 v #26070 > > │ x2="159" y2="75"/>                                                           │
00:23:46 v #26071 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="169" y1="424"        │
00:23:46 v #26072 > > │ x2="169" y2="75"/>                                                           │
00:23:46 v #26073 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="179" y1="424"        │
00:23:46 v #26074 > > │ x2="179" y2="75"/>                                                           │
00:23:46 v #26075 > > │ <line...serif" font-size="9.67741935483871" opacity="1" fill="#FFFFFF">      │
00:23:46 v #26076 > > │ 200.0                                                                        │
00:23:46 v #26077 > > │ </text>                                                                      │
00:23:46 v #26078 > > │ <polyline fill="none" opacity="1" stroke="#FFFFFF" stroke-width="1"          │
00:23:46 v #26079 > > │ points="585,201 590,201 "/>                                                  │
00:23:46 v #26080 > > │ <text x="595" y="147" dy="0.5ex" text-anchor="start"                         │
00:23:46 v #26081 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1"            │
00:23:46 v #26082 > > │ fill="#FFFFFF">                                                              │
00:23:46 v #26083 > > │ 250.0                                                                        │
00:23:46 v #26084 > > │ </text>                                                                      │
00:23:46 v #26085 > > │ <polyline fill="none" opacity="1" stroke="#FFFFFF" stroke-width="1"          │
00:23:46 v #26086 > > │ points="585,147 590,147 "/>                                                  │
00:23:46 v #26087 > > │ <text x="595" y="94" dy="0.5ex" text-anchor="start" font-family="sans-serif" │
00:23:46 v #26088 > > │ font-size="9.67741935483871" opacity="1" fill="#FFFFFF">                     │
00:23:46 v #26089 > > │ 300.0                                                                        │
00:23:46 v #26090 > > │ </text>                                                                      │
00:23:46 v #26091 > > │ <polyline fill="none" opacity="1" stroke="#FFFFFF" stroke-width="1"          │
00:23:46 v #26092 > > │ points="585,94 590,94 "/>                                                    │
00:23:46 v #26093 > > │ <polyline fill="none" opacity="1" stroke="#FF0000" stroke-width="1"          │
00:23:46 v #26094 > > │ points="69,415 79,415 89,415 99,415 109,415 119,415 129,414 139,413 149,412  │
00:23:46 v #26095 > > │ 159,410 169,408 179,405 189,401 199,397 209,393 219,388 229,382 239,377      │
00:23:46 v #26096 > > │ 249,372 259,366 269,361 279,356 289,350 299,345 309,340 319,334 329,329      │
00:23:46 v #26097 > > │ 339,322 349,316 359,308 369,301 379,292 389,284 399,274 409,264 419,254      │
00:23:46 v #26098 > > │ 429,243 439,232 449,221 459,210 469,199 479,189 489,178 499,167 509,157      │
00:23:46 v #26099 > > │ 519,146 529,135 539,123 549,111 559,99 569,85 "/>                            │
00:23:46 v #26100 > > │ <rect x="421" y="235" width="159" height="30" opacity="1" fill="none"        │
00:23:46 v #26101 > > │ stroke="#FFFFFF"/>                                                           │
00:23:46 v #26102 > > │ <text x="461" y="245" dy="0.76em" text-anchor="start"                        │
00:23:46 v #26103 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1"            │
00:23:46 v #26104 > > │ fill="#FFFFFF">                                                              │
00:23:46 v #26105 > > │ position of bike (m)                                                         │
00:23:46 v #26106 > > │ </text>                                                                      │
00:23:46 v #26107 > > │ <polyline fill="none" opacity="1" stroke="#FF0000" stroke-width="1"          │
00:23:46 v #26108 > > │ points="431,250 451,250 "/>                                                  │
00:23:46 v #26109 > > │ </svg>                                                                       │
00:23:46 v #26110 > > │                                                                              │
00:23:46 v #26111 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:23:46 v #26112 > >
00:23:46 v #26113 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:46 v #26114 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:23:46 v #26115 > > │ ### velocity_fv                                                              │
00:23:46 v #26116 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:23:46 v #26117 > >
00:23:46 v #26118 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:46 v #26119 > > inl newton_second_v m fs v0 =
00:23:46 v #26120 > >     fs |> listm.map (fun f => f v0) |> listm'.sum |> fun x => x / m
00:23:46 v #26121 > >
00:23:46 v #26122 > > inl update_velocity dt m fs v0 =
00:23:46 v #26123 > >     v0 + newton_second_v m fs v0 * dt
00:23:46 v #26124 > >
00:23:46 v #26125 > > inl velocity_fv dt m v0 fs t =
00:23:46 v #26126 > >     stream.iterate (update_velocity dt m fs) v0
00:23:46 v #26127 > >     |> stream.try_item (t / dt |> math.round |> abs)
00:23:46 v #26128 > >     |> optionm'.default_value 0
00:23:47 v #26129 > >
00:23:47 v #26130 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:47 v #26131 > > inl f_air drag rho area v =
00:23:47 v #26132 > >     -drag * rho * area * abs v * v / 2
00:23:47 v #26133 > >
00:23:47 v #26134 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:47 v #26135 > > //// test
00:23:47 v #26136 > >
00:23:47 v #26137 > > inl x = am'.init_series 0 60 0.5
00:23:47 v #26138 > > inl y = x |> am'.map_base (velocity_fv 1 70 0f64 [[ fun _ => 100; f_air 2 1.225
00:23:47 v #26139 > > 0.6 ]])
00:23:47 v #26140 > > "bike velocity", "time (s)", "", ;[[ "velocity of bike (m/s)", x, y ]]
00:23:48 v #26141 > >
00:23:48 v #26142 > > ╭─[ 636.22ms - return value ]──────────────────────────────────────────────────╮
00:23:48 v #26143 > > │ <svg width="640" height="480" viewBox="0 0 640 480"                          │
00:23:48 v #26144 > > │ xmlns="http://www.w3.org/2000/svg">                                          │
00:23:48 v #26145 > > │ <rect x="0" y="0" width="640" height="480" opacity="1" fill="#141414"        │
00:23:48 v #26146 > > │ stroke="none"/>                                                              │
00:23:48 v #26147 > > │ <text x="320" y="10" dy="0.76em" text-anchor="middle"                        │
00:23:48 v #26148 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1"            │
00:23:48 v #26149 > > │ fill="#FFFFFF">                                                              │
00:23:48 v #26150 > > │ bike velocity                                                                │
00:23:48 v #26151 > > │ </text>                                                                      │
00:23:48 v #26152 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="61" y1="424" x2="61" │
00:23:48 v #26153 > > │ y2="75"/>                                                                    │
00:23:48 v #26154 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69" y1="424" x2="69" │
00:23:48 v #26155 > > │ y2="75"/>                                                                    │
00:23:48 v #26156 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="78" y1="424" x2="78" │
00:23:48 v #26157 > > │ y2="75"/>                                                                    │
00:23:48 v #26158 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="86" y1="424" x2="86" │
00:23:48 v #26159 > > │ y2="75"/>                                                                    │
00:23:48 v #26160 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="94" y1="424" x2="94" │
00:23:48 v #26161 > > │ y2="75"/>                                                                    │
00:23:48 v #26162 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="103" y1="424"        │
00:23:48 v #26163 > > │ x2="103" y2="75"/>                                                           │
00:23:48 v #26164 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="111" y1="424"        │
00:23:48 v #26165 > > │ x2="111" y2="75"/>                                                           │
00:23:48 v #26166 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="119" y1="424"        │
00:23:48 v #26167 > > │ x2="119" y2="75"/>                                                           │
00:23:48 v #26168 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="128" y1="424"        │
00:23:48 v #26169 > > │ x2="128" y2="75"/>                                                           │
00:23:48 v #26170 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="136" y1="424"        │
00:23:48 v #26171 > > │ x2="136" y2="75"/>                                                           │
00:23:48 v #26172 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="144" y1="424"        │
00:23:48 v #26173 > > │ x2="144" y2="75"/>                                                           │
00:23:48 v #26174 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="153" y1="424"        │
00:23:48 v #26175 > > │ x2="153" y2="75"/>                                                           │
00:23:48 v #26176 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="161" y1="424"        │
00:23:48 v #26177 > > │ x2="161" y2="75"/>                                                           │
00:23:48 v #26178 > > │ <line opacity="1" st...t" font-family="sans-serif"                           │
00:23:48 v #26179 > > │ font-size="9.67741935483871" opacity="1" fill="#FFFFFF">                     │
00:23:48 v #26180 > > │ 12.0                                                                         │
00:23:48 v #26181 > > │ </text>                                                                      │
00:23:48 v #26182 > > │ <polyline fill="none" opacity="1" stroke="#FFFFFF" stroke-width="1"          │
00:23:48 v #26183 > > │ points="585,76 590,76 "/>                                                    │
00:23:48 v #26184 > > │ <polyline fill="none" opacity="1" stroke="#FF0000" stroke-width="1"          │
00:23:48 v #26185 > > │ points="69,415 74,415 78,374 82,335 86,335 90,335 94,297 99,261 103,261      │
00:23:48 v #26186 > > │ 107,261 111,230 115,202 119,202 124,202 128,179 132,159 136,159 140,159      │
00:23:48 v #26187 > > │ 144,143 148,130 153,130 157,130 161,120 165,112 169,112 173,112 178,106      │
00:23:48 v #26188 > > │ 182,101 186,101 190,101 194,97 198,94 203,94 207,94 211,92 215,91 219,91     │
00:23:48 v #26189 > > │ 223,91 228,89 232,88 236,88 240,88 244,88 248,87 252,87 257,87 261,87 265,86 │
00:23:48 v #26190 > > │ 269,86 273,86 277,86 282,86 286,86 290,86 294,86 298,86 302,86 307,86 311,86 │
00:23:48 v #26191 > > │ 315,86 319,86 323,86 327,86 331,85 336,85 340,85 344,85 348,85 352,85 356,85 │
00:23:48 v #26192 > > │ 361,85 365,85 369,85 373,85 377,85 381,85 386,85 390,85 394,85 398,85 402,85 │
00:23:48 v #26193 > > │ 406,85 410,85 415,85 419,85 423,85 427,85 431,85 435,85 440,85 444,85 448,85 │
00:23:48 v #26194 > > │ 452,85 456,85 460,85 465,85 469,85 473,85 477,85 481,85 485,85 490,85 494,85 │
00:23:48 v #26195 > > │ 498,85 502,85 506,85 510,85 514,85 519,85 523,85 527,85 531,85 535,85 539,85 │
00:23:48 v #26196 > > │ 544,85 548,85 552,85 556,85 560,85 564,85 569,85 "/>                         │
00:23:48 v #26197 > > │ <rect x="410" y="235" width="170" height="30" opacity="1" fill="none"        │
00:23:48 v #26198 > > │ stroke="#FFFFFF"/>                                                           │
00:23:48 v #26199 > > │ <text x="450" y="245" dy="0.76em" text-anchor="start"                        │
00:23:48 v #26200 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1"            │
00:23:48 v #26201 > > │ fill="#FFFFFF">                                                              │
00:23:48 v #26202 > > │ velocity of bike (m/s)                                                       │
00:23:48 v #26203 > > │ </text>                                                                      │
00:23:48 v #26204 > > │ <polyline fill="none" opacity="1" stroke="#FF0000" stroke-width="1"          │
00:23:48 v #26205 > > │ points="420,250 440,250 "/>                                                  │
00:23:48 v #26206 > > │ </svg>                                                                       │
00:23:48 v #26207 > > │                                                                              │
00:23:48 v #26208 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:23:48 v #26209 > >
00:23:48 v #26210 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:48 v #26211 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:23:48 v #26212 > > │ ### velocity_ftv                                                             │
00:23:48 v #26213 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:23:48 v #26214 > >
00:23:48 v #26215 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:48 v #26216 > > inl newton_second_tv m fs (t, v0) =
00:23:48 v #26217 > >     inl f_net = fs |> listm.map (fun f => f (t, v0)) |> listm'.sum
00:23:48 v #26218 > >     inl acc = f_net / m
00:23:48 v #26219 > >     1, acc
00:23:48 v #26220 > >
00:23:48 v #26221 > > inl update_tv dt m fs (t, v0) =
00:23:48 v #26222 > >     inl dtdt, dvdt = newton_second_tv m fs (t, v0)
00:23:48 v #26223 > >     t + dtdt * dt, v0 + dvdt * dt
00:23:48 v #26224 > >
00:23:48 v #26225 > > inl velocity_ftv dt m tv0 fs t =
00:23:48 v #26226 > >     stream.iterate (join update_tv dt m fs) tv0
00:23:48 v #26227 > >     |> stream.try_item (t / dt |> math.round |> abs)
00:23:48 v #26228 > >     |> optionm.map snd
00:23:48 v #26229 > >     |> optionm'.default_value 0
00:23:48 v #26230 > >
00:23:48 v #26231 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:48 v #26232 > > //// test
00:23:48 v #26233 > >
00:23:48 v #26234 > > inl x = am'.init_series 0 100 0.1
00:23:48 v #26235 > > inl y =
00:23:48 v #26236 > >     x
00:23:48 v #26237 > >     |> am'.map_base (
00:23:48 v #26238 > >         velocity_ftv 0.1 20 (dyn (0, 0)) [[ fun (t, _) => pedal_coast t; fun (_,
00:23:48 v #26239 > > v) => f_air 2 1.225 0.5 v ]]
00:23:48 v #26240 > >     )
00:23:48 v #26241 > > "pedaling and coasting with air", "time (s)", "", ;[[ "velocity of bike (m/s)",
00:23:48 v #26242 > > x, y ]]
00:23:49 v #26243 > >
00:23:49 v #26244 > > ╭─[ 620.63ms - return value ]──────────────────────────────────────────────────╮
00:23:49 v #26245 > > │ <svg width="640" height="480" viewBox="0 0 640 480"                          │
00:23:49 v #26246 > > │ xmlns="http://www.w3.org/2000/svg">                                          │
00:23:49 v #26247 > > │ <rect x="0" y="0" width="640" height="480" opacity="1" fill="#141414"        │
00:23:49 v #26248 > > │ stroke="none"/>                                                              │
00:23:49 v #26249 > > │ <text x="320" y="10" dy="0.76em" text-anchor="middle"                        │
00:23:49 v #26250 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1"            │
00:23:49 v #26251 > > │ fill="#FFFFFF">                                                              │
00:23:49 v #26252 > > │ pedaling and coasting with air                                               │
00:23:49 v #26253 > > │ </text>                                                                      │
00:23:49 v #26254 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="59" y1="424" x2="59" │
00:23:49 v #26255 > > │ y2="75"/>                                                                    │
00:23:49 v #26256 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69" y1="424" x2="69" │
00:23:49 v #26257 > > │ y2="75"/>                                                                    │
00:23:49 v #26258 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="79" y1="424" x2="79" │
00:23:49 v #26259 > > │ y2="75"/>                                                                    │
00:23:49 v #26260 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="89" y1="424" x2="89" │
00:23:49 v #26261 > > │ y2="75"/>                                                                    │
00:23:49 v #26262 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="99" y1="424" x2="99" │
00:23:49 v #26263 > > │ y2="75"/>                                                                    │
00:23:49 v #26264 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="109" y1="424"        │
00:23:49 v #26265 > > │ x2="109" y2="75"/>                                                           │
00:23:49 v #26266 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="119" y1="424"        │
00:23:49 v #26267 > > │ x2="119" y2="75"/>                                                           │
00:23:49 v #26268 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="129" y1="424"        │
00:23:49 v #26269 > > │ x2="129" y2="75"/>                                                           │
00:23:49 v #26270 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="139" y1="424"        │
00:23:49 v #26271 > > │ x2="139" y2="75"/>                                                           │
00:23:49 v #26272 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="149" y1="424"        │
00:23:49 v #26273 > > │ x2="149" y2="75"/>                                                           │
00:23:49 v #26274 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="159" y1="424"        │
00:23:49 v #26275 > > │ x2="159" y2="75"/>                                                           │
00:23:49 v #26276 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="169" y1="424"        │
00:23:49 v #26277 > > │ x2="169" y2="75"/>                                                           │
00:23:49 v #26278 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="179" y1="424"        │
00:23:49 v #26279 > > │ x2="179" y2="75"/>                                                           │
00:23:49 v #26280 > > │ <li... 497,128 497,126 498,125 498,123 499,122 499,121 500,119 500,118       │
00:23:49 v #26281 > > │ 501,117 501,116 502,114 502,113 503,112 503,111 504,110 504,109 505,108      │
00:23:49 v #26282 > > │ 505,107 506,106 506,105 507,104 507,103 508,102 508,101 509,100 509,99       │
00:23:49 v #26283 > > │ 510,98 510,98 511,97 511,96 512,95 512,94 513,94 513,93 514,92 514,92 515,91 │
00:23:49 v #26284 > > │ 515,90 516,90 516,89 517,88 517,88 518,87 518,87 519,86 519,85 520,89 520,93 │
00:23:49 v #26285 > > │ 521,97 521,100 522,104 522,107 523,110 523,114 524,117 524,120 525,123       │
00:23:49 v #26286 > > │ 525,126 526,129 526,132 527,135 527,137 528,140 528,143 529,145 529,148      │
00:23:49 v #26287 > > │ 530,150 530,153 531,155 531,158 532,160 532,162 533,165 533,167 534,169      │
00:23:49 v #26288 > > │ 534,171 535,173 535,175 536,177 536,179 537,181 537,183 538,185 538,187      │
00:23:49 v #26289 > > │ 539,189 539,190 540,192 540,194 541,196 541,197 542,199 542,201 543,202      │
00:23:49 v #26290 > > │ 543,204 544,205 544,207 545,208 545,210 546,211 546,213 547,214 547,216      │
00:23:49 v #26291 > > │ 548,217 548,219 549,220 549,221 550,223 550,224 551,225 551,226 552,228      │
00:23:49 v #26292 > > │ 552,229 553,230 553,231 554,232 554,234 555,235 555,236 556,237 556,238      │
00:23:49 v #26293 > > │ 557,239 557,240 558,241 558,242 559,243 559,245 560,246 560,247 561,248      │
00:23:49 v #26294 > > │ 561,249 562,249 562,250 563,251 563,252 564,253 564,254 565,255 565,256      │
00:23:49 v #26295 > > │ 566,257 566,258 567,259 567,259 568,260 568,261 569,262 "/>                  │
00:23:49 v #26296 > > │ <rect x="410" y="235" width="170" height="30" opacity="1" fill="none"        │
00:23:49 v #26297 > > │ stroke="#FFFFFF"/>                                                           │
00:23:49 v #26298 > > │ <text x="450" y="245" dy="0.76em" text-anchor="start"                        │
00:23:49 v #26299 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1"            │
00:23:49 v #26300 > > │ fill="#FFFFFF">                                                              │
00:23:49 v #26301 > > │ velocity of bike (m/s)                                                       │
00:23:49 v #26302 > > │ </text>                                                                      │
00:23:49 v #26303 > > │ <polyline fill="none" opacity="1" stroke="#FF0000" stroke-width="1"          │
00:23:49 v #26304 > > │ points="420,250 440,250 "/>                                                  │
00:23:49 v #26305 > > │ </svg>                                                                       │
00:23:49 v #26306 > > │                                                                              │
00:23:49 v #26307 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:23:49 v #26308 > >
00:23:49 v #26309 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:49 v #26310 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:23:49 v #26311 > > │ ### velocity_ftxv                                                            │
00:23:49 v #26312 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:23:49 v #26313 > >
00:23:49 v #26314 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:49 v #26315 > > nominal state_1d = time * position * velocity
00:23:49 v #26316 > > nominal rrr = f64 * f64 * f64
00:23:49 v #26317 > >
00:23:49 v #26318 > > inl newton_second_1d m fs (state_1d (t, x0, v0)) =
00:23:49 v #26319 > >     inl f_net = fs |> listm.map (fun f => f (state_1d (t, x0, v0))) |>
00:23:49 v #26320 > > listm'.sum
00:23:49 v #26321 > >     inl acc = f_net / m
00:23:49 v #26322 > >     rrr (1f64, v0, acc)
00:23:49 v #26323 > >
00:23:49 v #26324 > > inl euler_1d dt deriv (state_1d (t0, x0, v0) as t) =
00:23:49 v #26325 > >     inl (rrr (_, _, dvdt)) = deriv t
00:23:49 v #26326 > >     inl t1 = t0 + dt
00:23:49 v #26327 > >     inl x1 = x0 + v0 * dt
00:23:49 v #26328 > >     inl v1 = v0 + dvdt * dt
00:23:49 v #26329 > >     state_1d (t1, x1, v1)
00:23:49 v #26330 > >
00:23:49 v #26331 > > inl update_txv dt m fs =
00:23:49 v #26332 > >     newton_second_1d m fs |> euler_1d dt
00:23:49 v #26333 > >
00:23:49 v #26334 > > inl states_txv dt m txv0 fs =
00:23:49 v #26335 > >     seq.iterate_ (update_txv dt m fs) txv0
00:23:49 v #26336 > >
00:23:49 v #26337 > > inl velocity_1d sts t =
00:23:49 v #26338 > >     inl (state_1d (t0, _, _)) = sts 0
00:23:49 v #26339 > >     inl (state_1d (t1, _, _)) = sts 1
00:23:49 v #26340 > >     inl dt = t1 - t0
00:23:49 v #26341 > >     inl num_steps = t / dt |> math.round |> abs
00:23:49 v #26342 > >     inl (state_1d (_, _, v0)) = sts num_steps
00:23:49 v #26343 > >     v0
00:23:49 v #26344 > >
00:23:49 v #26345 > > inl velocity_ftxv dt m txv0 fs =
00:23:49 v #26346 > >     states_txv dt m txv0 fs |> velocity_1d
00:23:49 v #26347 > >
00:23:49 v #26348 > > inl position_1d sts t =
00:23:49 v #26349 > >     inl (state_1d (t0, _, _)) = sts 0
00:23:49 v #26350 > >     inl (state_1d (t1, _, _)) = sts 1
00:23:49 v #26351 > >     inl dt = t1 - t0
00:23:49 v #26352 > >     inl num_steps = t / dt |> math.round |> abs
00:23:49 v #26353 > >     inl (state_1d (_, x0, _)) = sts num_steps
00:23:49 v #26354 > >     x0
00:23:49 v #26355 > >
00:23:49 v #26356 > > inl position_ftxv dt m txv0 fs =
00:23:49 v #26357 > >     states_txv dt m txv0 fs |> position_1d
00:23:49 v #26358 > >
00:23:49 v #26359 > > inl spring_force k (state_1d (_, x0, _)) =
00:23:49 v #26360 > >     -k * x0
00:23:49 v #26361 > >
00:23:49 v #26362 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:49 v #26363 > > //// test
00:23:49 v #26364 > >
00:23:49 v #26365 > > inl damped_ho_forces () =
00:23:49 v #26366 > >     [[
00:23:49 v #26367 > >         spring_force 0.8
00:23:49 v #26368 > >         fun (state_1d (_, _, v0)) => f_air 2 1.225 (pi * math.square 0.02) v0
00:23:49 v #26369 > >         fun _ => -0.0027 * 9.80665
00:23:49 v #26370 > >     ]]
00:23:49 v #26371 > >
00:23:49 v #26372 > > inl damped_ho_states () =
00:23:49 v #26373 > >     states_txv 0.001 0.0027 (state_1d (0, 0.1, 0)) (damped_ho_forces ())
00:23:49 v #26374 > >
00:23:49 v #26375 > > inl pingpong_position t =
00:23:49 v #26376 > >     position_ftxv 0.001 0.0027 (state_1d (0, 0.1, 0)) (damped_ho_forces ()) t
00:23:49 v #26377 > >
00:23:49 v #26378 > > inl x = am'.init_series 0 3 0.01
00:23:49 v #26379 > > inl y = x |> am'.map_base pingpong_position
00:23:49 v #26380 > > "ping pong ball on a slinky", "time (s)", "", ;[[ "position (m)", x, y ]]
00:23:50 v #26381 > >
00:23:50 v #26382 > > ╭─[ 439.55ms - return value ]──────────────────────────────────────────────────╮
00:23:50 v #26383 > > │ <svg width="640" height="480" viewBox="0 0 640 480"                          │
00:23:50 v #26384 > > │ xmlns="http://www.w3.org/2000/svg">                                          │
00:23:50 v #26385 > > │ <rect x="0" y="0" width="640" height="480" opacity="1" fill="#141414"        │
00:23:50 v #26386 > > │ stroke="none"/>                                                              │
00:23:50 v #26387 > > │ <text x="320" y="10" dy="0.76em" text-anchor="middle"                        │
00:23:50 v #26388 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1"            │
00:23:50 v #26389 > > │ fill="#FFFFFF">                                                              │
00:23:50 v #26390 > > │ ping pong ball on a slinky                                                   │
00:23:50 v #26391 > > │ </text>                                                                      │
00:23:50 v #26392 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="61" y1="424" x2="61" │
00:23:50 v #26393 > > │ y2="75"/>                                                                    │
00:23:50 v #26394 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69" y1="424" x2="69" │
00:23:50 v #26395 > > │ y2="75"/>                                                                    │
00:23:50 v #26396 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="78" y1="424" x2="78" │
00:23:50 v #26397 > > │ y2="75"/>                                                                    │
00:23:50 v #26398 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="86" y1="424" x2="86" │
00:23:50 v #26399 > > │ y2="75"/>                                                                    │
00:23:50 v #26400 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="94" y1="424" x2="94" │
00:23:50 v #26401 > > │ y2="75"/>                                                                    │
00:23:50 v #26402 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="103" y1="424"        │
00:23:50 v #26403 > > │ x2="103" y2="75"/>                                                           │
00:23:50 v #26404 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="111" y1="424"        │
00:23:50 v #26405 > > │ x2="111" y2="75"/>                                                           │
00:23:50 v #26406 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="119" y1="424"        │
00:23:50 v #26407 > > │ x2="119" y2="75"/>                                                           │
00:23:50 v #26408 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="128" y1="424"        │
00:23:50 v #26409 > > │ x2="128" y2="75"/>                                                           │
00:23:50 v #26410 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="136" y1="424"        │
00:23:50 v #26411 > > │ x2="136" y2="75"/>                                                           │
00:23:50 v #26412 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="144" y1="424"        │
00:23:50 v #26413 > > │ x2="144" y2="75"/>                                                           │
00:23:50 v #26414 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="153" y1="424"        │
00:23:50 v #26415 > > │ x2="153" y2="75"/>                                                           │
00:23:50 v #26416 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="161" y1="424"        │
00:23:50 v #26417 > > │ x2="161" y2="75"/>                                                           │
00:23:50 v #26418 > > │ <line o...88 332,305 334,321 336,334 337,346 339,354 341,360 342,363 344,362 │
00:23:50 v #26419 > > │ 346,359 347,352 349,342 351,330 352,316 354,300 356,283 357,265 359,247      │
00:23:50 v #26420 > > │ 361,229 362,212 364,197 366,183 367,172 369,163 371,156 372,153 374,153      │
00:23:50 v #26421 > > │ 376,156 377,161 379,170 381,181 382,194 384,209 386,226 387,243 389,260      │
00:23:50 v #26422 > > │ 391,277 392,294 394,309 396,323 397,335 399,344 401,351 402,355 404,356      │
00:23:50 v #26423 > > │ 406,354 407,349 409,341 410,331 412,319 414,305 415,289 417,273 419,256      │
00:23:50 v #26424 > > │ 420,239 422,223 424,208 425,194 427,182 429,172 430,165 432,161 434,159      │
00:23:50 v #26425 > > │ 435,160 437,164 439,171 440,180 442,192 444,205 445,220 447,235 449,252      │
00:23:50 v #26426 > > │ 450,268 452,284 454,299 455,313 457,325 459,335 460,342 462,347 464,350      │
00:23:50 v #26427 > > │ 465,349 467,346 469,340 470,332 472,321 474,309 475,295 477,280 479,264      │
00:23:50 v #26428 > > │ 480,248 482,232 484,217 485,204 487,192 489,181 490,173 492,168 494,165      │
00:23:50 v #26429 > > │ 495,165 497,167 499,172 500,180 502,189 504,201 505,215 507,229 509,244      │
00:23:50 v #26430 > > │ 510,260 512,275 514,290 515,303 517,316 519,326 520,335 522,341 524,344      │
00:23:50 v #26431 > > │ 525,345 527,343 529,339 530,332 532,323 534,312 535,300 537,286 539,271      │
00:23:50 v #26432 > > │ 540,256 542,241 544,226 545,213 547,200 549,190 550,181 552,175 554,171      │
00:23:50 v #26433 > > │ 555,169 557,170 559,174 560,180 562,188 564,198 565,210 567,223 569,238 "/>  │
00:23:50 v #26434 > > │ <rect x="464" y="235" width="116" height="30" opacity="1" fill="none"        │
00:23:50 v #26435 > > │ stroke="#FFFFFF"/>                                                           │
00:23:50 v #26436 > > │ <text x="504" y="245" dy="0.76em" text-anchor="start"                        │
00:23:50 v #26437 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1"            │
00:23:50 v #26438 > > │ fill="#FFFFFF">                                                              │
00:23:50 v #26439 > > │ position (m)                                                                 │
00:23:50 v #26440 > > │ </text>                                                                      │
00:23:50 v #26441 > > │ <polyline fill="none" opacity="1" stroke="#FF0000" stroke-width="1"          │
00:23:50 v #26442 > > │ points="474,250 494,250 "/>                                                  │
00:23:50 v #26443 > > │ </svg>                                                                       │
00:23:50 v #26444 > > │                                                                              │
00:23:50 v #26445 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:23:50 v #26446 > >
00:23:50 v #26447 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:50 v #26448 > > //// test
00:23:50 v #26449 > >
00:23:50 v #26450 > > inl pingpong_velocity t =
00:23:50 v #26451 > >     velocity_ftxv 0.001 0.0027 (state_1d (0, 0.1, 0)) (damped_ho_forces ()) t
00:23:50 v #26452 > >
00:23:50 v #26453 > > inl x = am'.init_series 0 3 0.01
00:23:50 v #26454 > > inl y = x |> am'.map_base pingpong_velocity
00:23:50 v #26455 > > "ping pong ball on a slinky", "time (s)", "", ;[[ "velocity (m/s)", x, y ]]
00:23:50 v #26456 > >
00:23:50 v #26457 > > ╭─[ 465.87ms - return value ]──────────────────────────────────────────────────╮
00:23:50 v #26458 > > │ <svg width="640" height="480" viewBox="0 0 640 480"                          │
00:23:50 v #26459 > > │ xmlns="http://www.w3.org/2000/svg">                                          │
00:23:50 v #26460 > > │ <rect x="0" y="0" width="640" height="480" opacity="1" fill="#141414"        │
00:23:50 v #26461 > > │ stroke="none"/>                                                              │
00:23:50 v #26462 > > │ <text x="320" y="10" dy="0.76em" text-anchor="middle"                        │
00:23:50 v #26463 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1"            │
00:23:50 v #26464 > > │ fill="#FFFFFF">                                                              │
00:23:50 v #26465 > > │ ping pong ball on a slinky                                                   │
00:23:50 v #26466 > > │ </text>                                                                      │
00:23:50 v #26467 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="61" y1="424" x2="61" │
00:23:50 v #26468 > > │ y2="75"/>                                                                    │
00:23:50 v #26469 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69" y1="424" x2="69" │
00:23:50 v #26470 > > │ y2="75"/>                                                                    │
00:23:50 v #26471 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="78" y1="424" x2="78" │
00:23:50 v #26472 > > │ y2="75"/>                                                                    │
00:23:50 v #26473 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="86" y1="424" x2="86" │
00:23:50 v #26474 > > │ y2="75"/>                                                                    │
00:23:50 v #26475 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="94" y1="424" x2="94" │
00:23:50 v #26476 > > │ y2="75"/>                                                                    │
00:23:50 v #26477 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="103" y1="424"        │
00:23:50 v #26478 > > │ x2="103" y2="75"/>                                                           │
00:23:50 v #26479 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="111" y1="424"        │
00:23:50 v #26480 > > │ x2="111" y2="75"/>                                                           │
00:23:50 v #26481 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="119" y1="424"        │
00:23:50 v #26482 > > │ x2="119" y2="75"/>                                                           │
00:23:50 v #26483 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="128" y1="424"        │
00:23:50 v #26484 > > │ x2="128" y2="75"/>                                                           │
00:23:50 v #26485 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="136" y1="424"        │
00:23:50 v #26486 > > │ x2="136" y2="75"/>                                                           │
00:23:50 v #26487 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="144" y1="424"        │
00:23:50 v #26488 > > │ x2="144" y2="75"/>                                                           │
00:23:50 v #26489 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="153" y1="424"        │
00:23:50 v #26490 > > │ x2="153" y2="75"/>                                                           │
00:23:50 v #26491 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="161" y1="424"        │
00:23:50 v #26492 > > │ x2="161" y2="75"/>                                                           │
00:23:50 v #26493 > > │ <line o... 332,343 334,332 336,319 337,304 339,287 341,269 342,250 344,231   │
00:23:50 v #26494 > > │ 346,212 347,195 349,178 351,164 352,153 354,144 356,138 357,136 359,136      │
00:23:50 v #26495 > > │ 361,140 362,147 364,157 366,169 367,183 369,199 371,216 372,234 374,253      │
00:23:50 v #26496 > > │ 376,271 377,288 379,304 381,318 382,330 384,339 386,346 387,349 389,349      │
00:23:50 v #26497 > > │ 391,346 392,340 394,332 396,321 397,307 399,292 401,276 402,258 404,241      │
00:23:50 v #26498 > > │ 406,223 407,206 409,190 410,176 412,164 414,154 415,148 417,144 419,143      │
00:23:50 v #26499 > > │ 420,145 422,150 424,158 425,168 427,180 429,194 430,210 432,227 434,244      │
00:23:50 v #26500 > > │ 435,261 437,278 439,293 440,307 442,320 444,330 445,337 447,341 449,343      │
00:23:50 v #26501 > > │ 450,342 452,338 454,331 455,322 457,310 459,297 460,282 462,266 464,249      │
00:23:50 v #26502 > > │ 465,233 467,216 469,201 470,187 472,174 474,164 475,156 477,151 479,149      │
00:23:50 v #26503 > > │ 480,149 482,153 484,159 485,167 487,178 489,190 490,204 492,220 494,236      │
00:23:50 v #26504 > > │ 495,252 497,268 499,283 500,297 502,310 504,320 505,329 507,334 509,337      │
00:23:50 v #26505 > > │ 510,337 512,335 514,330 515,322 517,312 519,300 520,287 522,272 524,257      │
00:23:50 v #26506 > > │ 525,241 527,226 529,210 530,196 532,184 534,173 535,164 537,158 539,154      │
00:23:50 v #26507 > > │ 540,154 542,155 544,160 545,167 547,176 549,187 550,199 552,213 554,228      │
00:23:50 v #26508 > > │ 555,244 557,259 559,274 560,288 562,301 564,312 565,321 567,327 569,332 "/>  │
00:23:50 v #26509 > > │ <rect x="454" y="235" width="126" height="30" opacity="1" fill="none"        │
00:23:50 v #26510 > > │ stroke="#FFFFFF"/>                                                           │
00:23:50 v #26511 > > │ <text x="494" y="245" dy="0.76em" text-anchor="start"                        │
00:23:50 v #26512 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1"            │
00:23:50 v #26513 > > │ fill="#FFFFFF">                                                              │
00:23:50 v #26514 > > │ velocity (m/s)                                                               │
00:23:50 v #26515 > > │ </text>                                                                      │
00:23:50 v #26516 > > │ <polyline fill="none" opacity="1" stroke="#FF0000" stroke-width="1"          │
00:23:50 v #26517 > > │ points="464,250 484,250 "/>                                                  │
00:23:50 v #26518 > > │ </svg>                                                                       │
00:23:50 v #26519 > > │                                                                              │
00:23:50 v #26520 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:23:50 v #26521 > >
00:23:50 v #26522 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:50 v #26523 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:23:50 v #26524 > > │ ### shift                                                                    │
00:23:50 v #26525 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:23:50 v #26526 > >
00:23:50 v #26527 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:50 v #26528 > > type update_function s = s -> s
00:23:50 v #26529 > >
00:23:50 v #26530 > > type differential_equation s ds = s -> ds
00:23:50 v #26531 > >
00:23:50 v #26532 > > type numerical_method s ds = differential_equation s ds -> update_function s
00:23:50 v #26533 > >
00:23:50 v #26534 > >
00:23:50 v #26535 > > inl solver method =
00:23:50 v #26536 > >     method >> seq.iterate
00:23:50 v #26537 > > inl solver' method =
00:23:50 v #26538 > >     method >> seq.iterate'
00:23:50 v #26539 > > inl solver_ method =
00:23:50 v #26540 > >     method >> seq.iterate_
00:23:50 v #26541 > >
00:23:50 v #26542 > >
00:23:50 v #26543 > > inl euler_cromer_1d dt deriv (state_1d (t0, x0, v0) as t) =
00:23:50 v #26544 > >     inl (rrr (_, _, dvdt)) = deriv t
00:23:50 v #26545 > >     inl t1 = t0 + dt
00:23:50 v #26546 > >     inl v1 = v0 + dvdt * dt
00:23:50 v #26547 > >     inl x1 = x0 + v1 * dt
00:23:50 v #26548 > >     state_1d (t1, x1, v1)
00:23:50 v #26549 > >
00:23:50 v #26550 > > inl update_txv_ec dt m fs =
00:23:50 v #26551 > >     euler_cromer_1d dt (newton_second_1d m fs)
00:23:50 v #26552 > >
00:23:50 v #26553 > > prototype (+++) ds : ds -> ds -> ds
00:23:50 v #26554 > > prototype scale ds : f64 -> ds -> ds
00:23:50 v #26555 > >
00:23:50 v #26556 > > instance (+++) rrr = fun (rrr (dtdt0, dxdt0, dvdt0)) (rrr (dtdt1, dxdt1, dvdt1))
00:23:50 v #26557 > > =>
00:23:50 v #26558 > >     rrr (dtdt0 + dtdt1, dxdt0 + dxdt1, dvdt0 + dvdt1)
00:23:50 v #26559 > >
00:23:50 v #26560 > > instance scale rrr = fun w (rrr (dtdt0, dxdt0, dvdt0)) =>
00:23:50 v #26561 > >     rrr (w * dtdt0, w * dxdt0, w * dvdt0)
00:23:50 v #26562 > >
00:23:50 v #26563 > > prototype shift s : forall ds. f64 -> ds -> s -> s
00:23:50 v #26564 > >
00:23:50 v #26565 > > instance shift state_1d = fun dt ds (state_1d (t, x, v)) =>
00:23:50 v #26566 > >     inl dtdt, dxdt, dvdt =
00:23:50 v #26567 > >         real
00:23:50 v #26568 > >             match ds with
00:23:50 v #26569 > >             | rrr x => x
00:23:50 v #26570 > >             | state_1d x => x
00:23:50 v #26571 > >     state_1d (t + dtdt * dt, x + dxdt * dt, v + dvdt * dt)
00:23:50 v #26572 > >
00:23:50 v #26573 > > inl euler dt deriv st0 =
00:23:50 v #26574 > >     shift dt (deriv st0) st0
00:23:50 v #26575 > >
00:23:50 v #26576 > > inl runge_kutta_4 dt deriv st0 =
00:23:50 v #26577 > >     inl m0 = deriv st0
00:23:50 v #26578 > >     inl m1 = deriv (shift (dt / 2) m0 st0)
00:23:50 v #26579 > >     inl m2 = deriv (shift (dt / 2) m1 st0)
00:23:50 v #26580 > >     inl m3 = deriv (shift dt m2 st0)
00:23:50 v #26581 > >     shift (dt / 6) (m0 +++ m1 +++ m1 +++ m2 +++ m2 +++ m3) st0
00:23:50 v #26582 > >
00:23:50 v #26583 > > inl exponential (_, x0, v0) =
00:23:50 v #26584 > >     1f64, v0, x0
00:23:50 v #26585 > >
00:23:50 v #26586 > > inl of_state_1d (state_1d (t, x, v)) =
00:23:50 v #26587 > >     t, x, v
00:23:51 v #26588 > >
00:23:51 v #26589 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:51 v #26590 > > //// test
00:23:51 v #26591 > >
00:23:51 v #26592 > > solver (euler 0.01) (of_state_1d >> exponential >> state_1d) (state_1d (0, 1,
00:23:51 v #26593 > > 1)) 800i32
00:23:51 v #26594 > > |> _assert_eq (state_1d (7.999999999999874, 2864.8311229272326,
00:23:51 v #26595 > > 2864.8311229272326))
00:23:51 v #26596 > >
00:23:51 v #26597 > > solver (euler_cromer_1d 0.1) (of_state_1d >> exponential >> rrr) (state_1d (0,
00:23:51 v #26598 > > 1, 1)) 80i32
00:23:51 v #26599 > > |> _assert_eq (state_1d (7.999999999999988, 3043.379244966009,
00:23:51 v #26600 > > 2895.0121485099035))
00:23:51 v #26601 > >
00:23:51 v #26602 > > solver (runge_kutta_4 1) (of_state_1d >> exponential >> rrr) (state_1d (0, 1,
00:23:51 v #26603 > > 1)) 8i32
00:23:51 v #26604 > > |> _assert_eq (state_1d (8.0, 2894.789038540849, 2894.789038540849))
00:23:51 v #26605 > >
00:23:51 v #26606 > > ╭─[ 564.61ms - stdout ]────────────────────────────────────────────────────────╮
00:23:51 v #26607 > > │ __assert_eq / actual: struct (8.0, 2864.831123, 2864.831123) / expected:     │
00:23:51 v #26608 > > │ struct (8.0, 2864.831123, 2864.831123)                                       │
00:23:51 v #26609 > > │ __assert_eq / actual: struct (8.0, 3043.379245, 2895.012149) / expected:     │
00:23:51 v #26610 > > │ struct (8.0, 3043.379245, 2895.012149)                                       │
00:23:51 v #26611 > > │ __assert_eq / actual: struct (8.0, 2894.789039, 2894.789039) / expected:     │
00:23:51 v #26612 > > │ struct (8.0, 2894.789039, 2894.789039)                                       │
00:23:51 v #26613 > > │                                                                              │
00:23:51 v #26614 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:23:51 v #26615 > >
00:23:51 v #26616 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:51 v #26617 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:23:51 v #26618 > > │ ### vec                                                                      │
00:23:51 v #26619 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:23:51 v #26620 > >
00:23:51 v #26621 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:51 v #26622 > > type vec =
00:23:51 v #26623 > >     {
00:23:51 v #26624 > >         x : f64
00:23:51 v #26625 > >         y : f64
00:23:51 v #26626 > >         z : f64
00:23:51 v #26627 > >     }
00:23:51 v #26628 > >
00:23:51 v #26629 > > inl vec x y z : vec =
00:23:51 v #26630 > >     { x y z }
00:23:51 v #26631 > >
00:23:51 v #26632 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:51 v #26633 > > //// test
00:23:51 v #26634 > >
00:23:51 v #26635 > > vec 1 2 3 .z
00:23:51 v #26636 > > |> _assert_eq 3
00:23:52 v #26637 > >
00:23:52 v #26638 > > ╭─[ 462.45ms - stdout ]────────────────────────────────────────────────────────╮
00:23:52 v #26639 > > │ __assert_eq / actual: 3.0 / expected: 3.0                                    │
00:23:52 v #26640 > > │                                                                              │
00:23:52 v #26641 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:23:52 v #26642 > >
00:23:52 v #26643 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:52 v #26644 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:23:52 v #26645 > > │ #### consts                                                                  │
00:23:52 v #26646 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:23:52 v #26647 > >
00:23:52 v #26648 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:52 v #26649 > > inl i_hat () = vec 1 0 0
00:23:52 v #26650 > > inl j_hat () = vec 0 1 0
00:23:52 v #26651 > > inl k_hat () = vec 0 0 1
00:23:52 v #26652 > > inl zero_vec () = vec 0 0 0
00:23:52 v #26653 > >
00:23:52 v #26654 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:52 v #26655 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:23:52 v #26656 > > │ #### ^+^                                                                     │
00:23:52 v #26657 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:23:52 v #26658 > >
00:23:52 v #26659 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:52 v #26660 > > inl (^+^) (a : vec) (b : vec) =
00:23:52 v #26661 > >     vec (a.x + b.x) (a.y + b.y) (a.z + b.z)
00:23:53 v #26662 > >
00:23:53 v #26663 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:53 v #26664 > > //// test
00:23:53 v #26665 > >
00:23:53 v #26666 > > vec 1 2 3 ^+^ vec 4 5 6
00:23:53 v #26667 > > |> _assert_eq (vec 5 7 9)
00:23:53 v #26668 > >
00:23:53 v #26669 > > ╭─[ 469.74ms - stdout ]────────────────────────────────────────────────────────╮
00:23:53 v #26670 > > │ __assert_eq / actual: struct (5.0, 7.0, 9.0) / expected: struct (5.0, 7.0,   │
00:23:53 v #26671 > > │ 9.0)                                                                         │
00:23:53 v #26672 > > │                                                                              │
00:23:53 v #26673 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:23:53 v #26674 > >
00:23:53 v #26675 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:53 v #26676 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:23:53 v #26677 > > │ #### sum_vec                                                                 │
00:23:53 v #26678 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:23:53 v #26679 > >
00:23:53 v #26680 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:53 v #26681 > > inl sum_vec vs =
00:23:53 v #26682 > >     vs |> listm.fold (^+^) (zero_vec ())
00:23:54 v #26683 > >
00:23:54 v #26684 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:54 v #26685 > > //// test
00:23:54 v #26686 > >
00:23:54 v #26687 > > [[ vec 1 2 3; vec 4 5 6 ]]
00:23:54 v #26688 > > |> sum_vec
00:23:54 v #26689 > > |> _assert_eq (vec 5 7 9)
00:23:54 v #26690 > >
00:23:54 v #26691 > > ╭─[ 429.55ms - stdout ]────────────────────────────────────────────────────────╮
00:23:54 v #26692 > > │ __assert_eq / actual: struct (5.0, 7.0, 9.0) / expected: struct (5.0, 7.0,   │
00:23:54 v #26693 > > │ 9.0)                                                                         │
00:23:54 v #26694 > > │                                                                              │
00:23:54 v #26695 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:23:54 v #26696 > >
00:23:54 v #26697 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:54 v #26698 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:23:54 v #26699 > > │ #### *^                                                                      │
00:23:54 v #26700 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:23:54 v #26701 > >
00:23:54 v #26702 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:54 v #26703 > > inl (*^) c { x y z } =
00:23:54 v #26704 > >     vec (c * x) (c * y) (c * z)
00:23:55 v #26705 > >
00:23:55 v #26706 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:55 v #26707 > > //// test
00:23:55 v #26708 > >
00:23:55 v #26709 > > 5 *^ vec 1 2 3
00:23:55 v #26710 > > |> _assert_eq (vec 5 10 15)
00:23:55 v #26711 > >
00:23:55 v #26712 > > ╭─[ 422.93ms - stdout ]────────────────────────────────────────────────────────╮
00:23:55 v #26713 > > │ __assert_eq / actual: struct (5.0, 10.0, 15.0) / expected: struct (5.0,      │
00:23:55 v #26714 > > │ 10.0, 15.0)                                                                  │
00:23:55 v #26715 > > │                                                                              │
00:23:55 v #26716 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:23:55 v #26717 > >
00:23:55 v #26718 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:55 v #26719 > > //// test
00:23:55 v #26720 > >
00:23:55 v #26721 > > 3 *^ i_hat () ^+^ 4 *^ k_hat ()
00:23:55 v #26722 > > |> _assert_eq (vec 3 0 4)
00:23:55 v #26723 > >
00:23:55 v #26724 > > ╭─[ 438.54ms - stdout ]────────────────────────────────────────────────────────╮
00:23:55 v #26725 > > │ __assert_eq / actual: struct (3.0, 0.0, 4.0) / expected: struct (3.0, 0.0,   │
00:23:55 v #26726 > > │ 4.0)                                                                         │
00:23:55 v #26727 > > │                                                                              │
00:23:55 v #26728 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:23:55 v #26729 > >
00:23:55 v #26730 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:55 v #26731 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:23:55 v #26732 > > │ #### ^*                                                                      │
00:23:55 v #26733 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:23:55 v #26734 > >
00:23:55 v #26735 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:55 v #26736 > > inl (^*) v c =
00:23:55 v #26737 > >     (*^) c v
00:23:56 v #26738 > >
00:23:56 v #26739 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:56 v #26740 > > //// test
00:23:56 v #26741 > >
00:23:56 v #26742 > > vec 1 2 3 ^* 5
00:23:56 v #26743 > > |> _assert_eq (vec 5 10 15)
00:23:56 v #26744 > >
00:23:56 v #26745 > > ╭─[ 415.80ms - stdout ]────────────────────────────────────────────────────────╮
00:23:56 v #26746 > > │ __assert_eq / actual: struct (5.0, 10.0, 15.0) / expected: struct (5.0,      │
00:23:56 v #26747 > > │ 10.0, 15.0)                                                                  │
00:23:56 v #26748 > > │                                                                              │
00:23:56 v #26749 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:23:56 v #26750 > >
00:23:56 v #26751 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:56 v #26752 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:23:56 v #26753 > > │ #### ^/                                                                      │
00:23:56 v #26754 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:23:56 v #26755 > >
00:23:56 v #26756 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:56 v #26757 > > inl (^/) { x y z } c =
00:23:56 v #26758 > >     vec (x / c) (y / c) (z / c)
00:23:57 v #26759 > >
00:23:57 v #26760 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:57 v #26761 > > //// test
00:23:57 v #26762 > >
00:23:57 v #26763 > > vec 1 2 3 ^/ 5
00:23:57 v #26764 > > |> _assert_eq (vec 0.2 0.4 0.6)
00:23:57 v #26765 > >
00:23:57 v #26766 > > ╭─[ 418.94ms - stdout ]────────────────────────────────────────────────────────╮
00:23:57 v #26767 > > │ __assert_eq / actual: struct (0.2, 0.4, 0.6) / expected: struct (0.2, 0.4,   │
00:23:57 v #26768 > > │ 0.6)                                                                         │
00:23:57 v #26769 > > │                                                                              │
00:23:57 v #26770 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:23:57 v #26771 > >
00:23:57 v #26772 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:57 v #26773 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:23:57 v #26774 > > │ #### negate_vec                                                              │
00:23:57 v #26775 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:23:57 v #26776 > >
00:23:57 v #26777 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:57 v #26778 > > inl negate_vec v =
00:23:57 v #26779 > >     v ^* -1
00:23:57 v #26780 > >
00:23:57 v #26781 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:57 v #26782 > > //// test
00:23:57 v #26783 > >
00:23:57 v #26784 > > vec 1 2 3
00:23:57 v #26785 > > |> negate_vec
00:23:57 v #26786 > > |> _assert_eq (vec -1 -2 -3)
00:23:58 v #26787 > >
00:23:58 v #26788 > > ╭─[ 411.53ms - stdout ]────────────────────────────────────────────────────────╮
00:23:58 v #26789 > > │ __assert_eq / actual: struct (-1.0, -2.0, -3.0) / expected: struct (-1.0,    │
00:23:58 v #26790 > > │ -2.0, -3.0)                                                                  │
00:23:58 v #26791 > > │                                                                              │
00:23:58 v #26792 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:23:58 v #26793 > >
00:23:58 v #26794 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:58 v #26795 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:23:58 v #26796 > > │ #### ^-^                                                                     │
00:23:58 v #26797 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:23:58 v #26798 > >
00:23:58 v #26799 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:58 v #26800 > > inl (^-^) a b =
00:23:58 v #26801 > >     a ^+^ (negate_vec b)
00:23:58 v #26802 > >
00:23:58 v #26803 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:58 v #26804 > > //// test
00:23:58 v #26805 > >
00:23:58 v #26806 > > vec 1 2 3 ^-^ vec 4 5 6
00:23:58 v #26807 > > |> _assert_eq (vec -3 -3 -3)
00:23:59 v #26808 > >
00:23:59 v #26809 > > ╭─[ 422.37ms - stdout ]────────────────────────────────────────────────────────╮
00:23:59 v #26810 > > │ __assert_eq / actual: struct (-3.0, -3.0, -3.0) / expected: struct (-3.0,    │
00:23:59 v #26811 > > │ -3.0, -3.0)                                                                  │
00:23:59 v #26812 > > │                                                                              │
00:23:59 v #26813 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:23:59 v #26814 > >
00:23:59 v #26815 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:59 v #26816 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:23:59 v #26817 > > │ #### <.>                                                                     │
00:23:59 v #26818 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:23:59 v #26819 > >
00:23:59 v #26820 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:59 v #26821 > > inl (<.>) { x = ax y = ay z = az } { x = bx y = by z = bz } =
00:23:59 v #26822 > >     ax * bx + ay * by + az * bz
00:23:59 v #26823 > >
00:23:59 v #26824 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:59 v #26825 > > //// test
00:23:59 v #26826 > >
00:23:59 v #26827 > > vec 1 2 3 <.> vec 4 5 6
00:23:59 v #26828 > > |> _assert_eq 32
00:24:00 v #26829 > >
00:24:00 v #26830 > > ╭─[ 412.76ms - stdout ]────────────────────────────────────────────────────────╮
00:24:00 v #26831 > > │ __assert_eq / actual: 32.0 / expected: 32.0                                  │
00:24:00 v #26832 > > │                                                                              │
00:24:00 v #26833 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:24:00 v #26834 > >
00:24:00 v #26835 > > ── markdown ────────────────────────────────────────────────────────────────────
00:24:00 v #26836 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:24:00 v #26837 > > │ #### \>\<                                                                    │
00:24:00 v #26838 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:24:00 v #26839 > >
00:24:00 v #26840 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:24:00 v #26841 > > inl (><) (a : vec) (b : vec) =
00:24:00 v #26842 > >     vec
00:24:00 v #26843 > >         (a.y * b.z - a.z * b.y)
00:24:00 v #26844 > >         (a.z * b.x - a.x * b.z)
00:24:00 v #26845 > >         (a.x * b.y - a.y * b.x)
00:24:00 v #26846 > >
00:24:00 v #26847 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:24:00 v #26848 > > //// test
00:24:00 v #26849 > >
00:24:00 v #26850 > > vec 1 2 3 >< vec 4 5 6
00:24:00 v #26851 > > |> _assert_eq (vec -3 6 -3)
00:24:00 v #26852 > >
00:24:00 v #26853 > > ╭─[ 460.44ms - stdout ]────────────────────────────────────────────────────────╮
00:24:00 v #26854 > > │ __assert_eq / actual: struct (-3.0, 6.0, -3.0) / expected: struct (-3.0,     │
00:24:00 v #26855 > > │ 6.0, -3.0)                                                                   │
00:24:00 v #26856 > > │                                                                              │
00:24:00 v #26857 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:24:00 v #26858 > >
00:24:00 v #26859 > > ── markdown ────────────────────────────────────────────────────────────────────
00:24:00 v #26860 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:24:00 v #26861 > > │ #### magnitude                                                               │
00:24:00 v #26862 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:24:00 v #26863 > >
00:24:00 v #26864 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:24:00 v #26865 > > inl magnitude v =
00:24:00 v #26866 > >     v <.> v |> sqrt
00:24:01 v #26867 > >
00:24:01 v #26868 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:24:01 v #26869 > > //// test
00:24:01 v #26870 > >
00:24:01 v #26871 > > vec 1 2 3
00:24:01 v #26872 > > |> magnitude
00:24:01 v #26873 > > |> _assert_approx_eq None 3.7416573867739413
00:24:01 v #26874 > >
00:24:01 v #26875 > > ╭─[ 413.20ms - stdout ]────────────────────────────────────────────────────────╮
00:24:01 v #26876 > > │ __assert_approx_eq / actual: 3.741657387 / expected: 3.741657387             │
00:24:01 v #26877 > > │                                                                              │
00:24:01 v #26878 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:24:01 v #26879 > >
00:24:01 v #26880 > > ── markdown ────────────────────────────────────────────────────────────────────
00:24:01 v #26881 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:24:01 v #26882 > > │ #### v1                                                                      │
00:24:01 v #26883 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:24:01 v #26884 > >
00:24:01 v #26885 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:24:01 v #26886 > > inl v1 t =
00:24:01 v #26887 > >     2 *^ (t ** 2 *^ i_hat () ^+^ 3 *^ (t ** 3 *^ j_hat () ^+^ t ** 4 *^ k_hat
00:24:01 v #26888 > > ()))
00:24:02 v #26889 > >
00:24:02 v #26890 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:24:02 v #26891 > > //// test
00:24:02 v #26892 > >
00:24:02 v #26893 > > v1 1
00:24:02 v #26894 > > |> _assert_eq (vec 2 6 6)
00:24:02 v #26895 > >
00:24:02 v #26896 > > ╭─[ 416.05ms - stdout ]────────────────────────────────────────────────────────╮
00:24:02 v #26897 > > │ __assert_eq / actual: struct (2.0, 6.0, 6.0) / expected: struct (2.0, 6.0,   │
00:24:02 v #26898 > > │ 6.0)                                                                         │
00:24:02 v #26899 > > │                                                                              │
00:24:02 v #26900 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:24:02 v #26901 > >
00:24:02 v #26902 > > ── markdown ────────────────────────────────────────────────────────────────────
00:24:02 v #26903 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:24:02 v #26904 > > │ #### vec_derivative                                                          │
00:24:02 v #26905 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:24:02 v #26906 > >
00:24:02 v #26907 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:24:02 v #26908 > > type vec_derivative = (f64 -> vec) -> f64 -> vec
00:24:02 v #26909 > >
00:24:02 v #26910 > > inl vec_derivative dt : vec_derivative =
00:24:02 v #26911 > >     fun v t =>
00:24:02 v #26912 > >         (v (t + dt / 2) ^-^ v (t - dt / 2)) ^/ dt
00:24:03 v #26913 > >
00:24:03 v #26914 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:24:03 v #26915 > > //// test
00:24:03 v #26916 > >
00:24:03 v #26917 > > vec_derivative 0.01 v1 3 .x
00:24:03 v #26918 > > |> _assert_approx_eq None (derivative 0.01 (v1 >> fun v => v.x) 3)
00:24:03 v #26919 > >
00:24:03 v #26920 > > ╭─[ 429.57ms - stdout ]────────────────────────────────────────────────────────╮
00:24:03 v #26921 > > │ __assert_approx_eq / actual: 12.0 / expected: 12.0                           │
00:24:03 v #26922 > > │                                                                              │
00:24:03 v #26923 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:24:03 v #26924 > >
00:24:03 v #26925 > > ── markdown ────────────────────────────────────────────────────────────────────
00:24:03 v #26926 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:24:03 v #26927 > > │ ### states_ps                                                                │
00:24:03 v #26928 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:24:03 v #26929 > >
00:24:03 v #26930 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:24:03 v #26931 > > nominal particle_state =
00:24:03 v #26932 > >     {
00:24:03 v #26933 > >         mass : f64
00:24:03 v #26934 > >         charge : f64
00:24:03 v #26935 > >         time : f64
00:24:03 v #26936 > >         pos_vec : vec
00:24:03 v #26937 > >         velocity : vec
00:24:03 v #26938 > >     }
00:24:03 v #26939 > >
00:24:03 v #26940 > > inl default_particle_state () : particle_state =
00:24:03 v #26941 > >     particle_state {
00:24:03 v #26942 > >         mass = 1
00:24:03 v #26943 > >         charge = 0
00:24:03 v #26944 > >         time = 0
00:24:03 v #26945 > >         pos_vec = zero_vec ()
00:24:03 v #26946 > >         velocity = zero_vec ()
00:24:03 v #26947 > >     }
00:24:03 v #26948 > >
00:24:03 v #26949 > > type one_body_force = particle_state -> vec
00:24:03 v #26950 > >
00:24:03 v #26951 > > nominal d_particle_state =
00:24:03 v #26952 > >     {
00:24:03 v #26953 > >         dmdt : f64
00:24:03 v #26954 > >         dqdt : f64
00:24:03 v #26955 > >         dtdt : f64
00:24:03 v #26956 > >         drdt : vec
00:24:03 v #26957 > >         dvdt : vec
00:24:03 v #26958 > >     }
00:24:03 v #26959 > >
00:24:03 v #26960 > > inl newton_second_ps (fs : list one_body_force) (st : particle_state) :
00:24:03 v #26961 > > d_particle_state =
00:24:03 v #26962 > >     inl f_net = fs |> listm.map (fun f => f st) |> sum_vec
00:24:03 v #26963 > >     d_particle_state {
00:24:03 v #26964 > >         dmdt = 0
00:24:03 v #26965 > >         dqdt = 0
00:24:03 v #26966 > >         dtdt = 1
00:24:03 v #26967 > >         drdt = st.velocity
00:24:03 v #26968 > >         dvdt = f_net ^/ st.mass
00:24:03 v #26969 > >     }
00:24:03 v #26970 > >
00:24:03 v #26971 > > inl earth_surface_gravity (st : particle_state) =
00:24:03 v #26972 > >     inl g = 9.80665
00:24:03 v #26973 > >     -st.mass * g *^ k_hat ()
00:24:03 v #26974 > >
00:24:03 v #26975 > > inl air_resistance drag rho area (st : particle_state) =
00:24:03 v #26976 > >     -0.5 * drag * rho * area * magnitude st.velocity *^ st.velocity
00:24:03 v #26977 > >
00:24:03 v #26978 > > inl euler_cromer_ps dt (deriv : particle_state -> d_particle_state)
00:24:03 v #26979 > > (particle_state st) =
00:24:03 v #26980 > >     inl dst : d_particle_state = deriv (particle_state st)
00:24:03 v #26981 > >     inl v' = st.velocity ^+^ dst.dvdt ^* dt
00:24:03 v #26982 > >     particle_state { st with
00:24:03 v #26983 > >         time = st.time + dt
00:24:03 v #26984 > >         pos_vec = st.pos_vec ^+^ v' ^* dt
00:24:03 v #26985 > >         velocity = st.velocity ^+^ dst.dvdt ^* dt
00:24:03 v #26986 > >     }
00:24:03 v #26987 > >
00:24:03 v #26988 > > instance (+++) d_particle_state = fun (dps : d_particle_state) (dps' :
00:24:03 v #26989 > > d_particle_state) =>
00:24:03 v #26990 > >     d_particle_state {
00:24:03 v #26991 > >         dmdt = dps.dmdt + dps'.dmdt
00:24:03 v #26992 > >         dqdt = dps.dqdt + dps'.dqdt
00:24:03 v #26993 > >         dtdt = dps.dtdt + dps'.dtdt
00:24:03 v #26994 > >         drdt = dps.drdt ^+^ dps'.drdt
00:24:03 v #26995 > >         dvdt = dps.dvdt ^+^ dps'.dvdt
00:24:03 v #26996 > >     }
00:24:03 v #26997 > >
00:24:03 v #26998 > > instance scale d_particle_state = fun w (dps : d_particle_state) =>
00:24:03 v #26999 > >     d_particle_state {
00:24:03 v #27000 > >         dmdt = w * dps.dmdt
00:24:03 v #27001 > >         dqdt = w * dps.dqdt
00:24:03 v #27002 > >         dtdt = w * dps.dtdt
00:24:03 v #27003 > >         drdt = w *^ dps.drdt
00:24:03 v #27004 > >         dvdt = w *^ dps.dvdt
00:24:03 v #27005 > >     }
00:24:03 v #27006 > >
00:24:03 v #27007 > > instance shift particle_state = fun dt dps (particle_state st) =>
00:24:03 v #27008 > >     inl (d_particle_state dps) =
00:24:03 v #27009 > >         real
00:24:03 v #27010 > >             match dps with
00:24:03 v #27011 > >             | d_particle_state _ => dps
00:24:03 v #27012 > >     particle_state { st with
00:24:03 v #27013 > >         time = st.time + dps.dtdt * dt
00:24:03 v #27014 > >         pos_vec = st.pos_vec ^+^ dps.drdt ^* dt
00:24:03 v #27015 > >         velocity = st.velocity ^+^ dps.dvdt ^* dt
00:24:03 v #27016 > >     }
00:24:03 v #27017 > >
00:24:03 v #27018 > > inl states_ps (method : numerical_method particle_state d_particle_state) : _ ->
00:24:03 v #27019 > > _ -> i32 -> particle_state =
00:24:03 v #27020 > >     newton_second_ps >> method >> seq.iterate_
00:24:03 v #27021 > >
00:24:03 v #27022 > > inl z_ge0 sts =
00:24:03 v #27023 > >     sts
00:24:03 v #27024 > >     |> seq.take_while_ (fun (particle_state st) _ => st.pos_vec.z >= 0)
00:24:03 v #27025 > >
00:24:03 v #27026 > > inl trajectory sts =
00:24:03 v #27027 > >     sts |> listm.map (fun (particle_state st) => st.pos_vec.y, st.pos_vec.z)
00:24:03 v #27028 > >
00:24:03 v #27029 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:24:03 v #27030 > > //// test
00:24:03 v #27031 > >
00:24:03 v #27032 > > inl update_ps (method : numerical_method particle_state d_particle_state) =
00:24:03 v #27033 > >     newton_second_ps >> method
00:24:03 v #27034 > >
00:24:03 v #27035 > > inl position_ps (method : numerical_method particle_state d_particle_state) fs
00:24:03 v #27036 > > st t =
00:24:03 v #27037 > >     inl states : i32 -> particle_state = states_ps method fs st
00:24:03 v #27038 > >     inl dt = (states 1).time - (states 0).time
00:24:03 v #27039 > >     inl num_steps = t / dt |> math.round |> abs
00:24:03 v #27040 > >     inl st1 = solver' method (newton_second_ps fs) st num_steps
00:24:03 v #27041 > >     st1.pos_vec
00:24:03 v #27042 > >
00:24:03 v #27043 > > inl sun_gravity (st : particle_state) : vec =
00:24:03 v #27044 > >     inl big_g = 0.0000000000667408
00:24:03 v #27045 > >     inl sun_mass = 1988480000000000000000000000000
00:24:03 v #27046 > >     -big_g * sun_mass * st.mass *^ st.pos_vec ^/ magnitude st.pos_vec ** 3
00:24:03 v #27047 > >
00:24:03 v #27048 > > inl wind_force v_wind drag rho area (st : particle_state) =
00:24:03 v #27049 > >     inl v_rel = st.velocity ^-^ v_wind
00:24:03 v #27050 > >     -0.5 * drag * rho * area * magnitude v_rel *^ v_rel
00:24:03 v #27051 > >
00:24:03 v #27052 > > inl rock_state () =
00:24:03 v #27053 > >     inl (particle_state default_particle_state') = default_particle_state ()
00:24:03 v #27054 > >     particle_state { default_particle_state' with
00:24:03 v #27055 > >         mass = 2
00:24:03 v #27056 > >         velocity = vec 3 0 4
00:24:03 v #27057 > >     }
00:24:03 v #27058 > >
00:24:03 v #27059 > > inl halley_update dt =
00:24:03 v #27060 > >     update_ps (euler_cromer_ps dt) [[ sun_gravity ]]
00:24:03 v #27061 > >
00:24:03 v #27062 > > inl halley_initial () =
00:24:03 v #27063 > >     inl (particle_state default_particle_state') = default_particle_state ()
00:24:03 v #27064 > >     particle_state { default_particle_state' with
00:24:03 v #27065 > >         mass = 220000000000000
00:24:03 v #27066 > >         pos_vec = 87660000000 *^ i_hat ()
00:24:03 v #27067 > >         velocity = 54569 *^ j_hat ()
00:24:03 v #27068 > >     }
00:24:04 v #27069 > >
00:24:04 v #27070 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:24:04 v #27071 > > //// test
00:24:04 v #27072 > >
00:24:04 v #27073 > > inl baseball_forces () =
00:24:04 v #27074 > >     inl area = pi * (0.074 / 2) ** 2
00:24:04 v #27075 > >     [[
00:24:04 v #27076 > >         earth_surface_gravity
00:24:04 v #27077 > >         air_resistance 0.3 1.225 area
00:24:04 v #27078 > >     ]]
00:24:04 v #27079 > >
00:24:04 v #27080 > > inl baseball_trajectory dt v0 theta_deg =
00:24:04 v #27081 > >     inl theta_rad = theta_deg * pi / 180
00:24:04 v #27082 > >     inl vy0 = v0 * cos theta_rad
00:24:04 v #27083 > >     inl vz0 = v0 * sin theta_rad
00:24:04 v #27084 > >     inl initial_state =
00:24:04 v #27085 > >         particle_state {
00:24:04 v #27086 > >             mass = 0.145
00:24:04 v #27087 > >             charge = 0
00:24:04 v #27088 > >             time = 0
00:24:04 v #27089 > >             pos_vec = zero_vec ()
00:24:04 v #27090 > >             velocity = vec 0 vy0 vz0
00:24:04 v #27091 > >         }
00:24:04 v #27092 > >     states_ps (euler_cromer_ps dt) (baseball_forces ()) initial_state
00:24:04 v #27093 > >     >> Some
00:24:04 v #27094 > >     |> z_ge0
00:24:04 v #27095 > >     |> trajectory
00:24:04 v #27096 > >
00:24:04 v #27097 > > inl baseball_range dt v0 theta_deg =
00:24:04 v #27098 > >     baseball_trajectory dt v0 theta_deg
00:24:04 v #27099 > >     |> listm.fold (fun _ (y, _) => y) 0
00:24:04 v #27100 > >
00:24:04 v #27101 > > inl x = am'.init_series 10 80 1
00:24:04 v #27102 > > inl y = x |> am'.map_base (baseball_range 0.01 45)
00:24:04 v #27103 > > "range for a baseball hit at 45 m/s",
00:24:04 v #27104 > > "angle above horizontal (degrees)",
00:24:04 v #27105 > > "",
00:24:04 v #27106 > > ;[[ "horizontal range (m)", x, y ]]
00:24:05 v #27107 > >
00:24:05 v #27108 > > ╭─[ 895.73ms - return value ]──────────────────────────────────────────────────╮
00:24:05 v #27109 > > │ <svg width="640" height="480" viewBox="0 0 640 480"                          │
00:24:05 v #27110 > > │ xmlns="http://www.w3.org/2000/svg">                                          │
00:24:05 v #27111 > > │ <rect x="0" y="0" width="640" height="480" opacity="1" fill="#141414"        │
00:24:05 v #27112 > > │ stroke="none"/>                                                              │
00:24:05 v #27113 > > │ <text x="320" y="10" dy="0.76em" text-anchor="middle"                        │
00:24:05 v #27114 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1"            │
00:24:05 v #27115 > > │ fill="#FFFFFF">                                                              │
00:24:05 v #27116 > > │ range for a baseball hit at 45 m/s                                           │
00:24:05 v #27117 > > │ </text>                                                                      │
00:24:05 v #27118 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="55" y1="424" x2="55" │
00:24:05 v #27119 > > │ y2="75"/>                                                                    │
00:24:05 v #27120 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="62" y1="424" x2="62" │
00:24:05 v #27121 > > │ y2="75"/>                                                                    │
00:24:05 v #27122 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69" y1="424" x2="69" │
00:24:05 v #27123 > > │ y2="75"/>                                                                    │
00:24:05 v #27124 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="77" y1="424" x2="77" │
00:24:05 v #27125 > > │ y2="75"/>                                                                    │
00:24:05 v #27126 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="84" y1="424" x2="84" │
00:24:05 v #27127 > > │ y2="75"/>                                                                    │
00:24:05 v #27128 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="91" y1="424" x2="91" │
00:24:05 v #27129 > > │ y2="75"/>                                                                    │
00:24:05 v #27130 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="98" y1="424" x2="98" │
00:24:05 v #27131 > > │ y2="75"/>                                                                    │
00:24:05 v #27132 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="105" y1="424"        │
00:24:05 v #27133 > > │ x2="105" y2="75"/>                                                           │
00:24:05 v #27134 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="112" y1="424"        │
00:24:05 v #27135 > > │ x2="112" y2="75"/>                                                           │
00:24:05 v #27136 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="119" y1="424"        │
00:24:05 v #27137 > > │ x2="119" y2="75"/>                                                           │
00:24:05 v #27138 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="127" y1="424"        │
00:24:05 v #27139 > > │ x2="127" y2="75"/>                                                           │
00:24:05 v #27140 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="134" y1="424"        │
00:24:05 v #27141 > > │ x2="134" y2="75"/>                                                           │
00:24:05 v #27142 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="141" y1="424"        │
00:24:05 v #27143 > > │ x2="141" y2="75"/>                                                           │
00:24:05 v #27144 > > │ <li...nts="585,199 590,199 "/>                                               │
00:24:05 v #27145 > > │ <text x="595" y="156" dy="0.5ex" text-anchor="start"                         │
00:24:05 v #27146 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1"            │
00:24:05 v #27147 > > │ fill="#FFFFFF">                                                              │
00:24:05 v #27148 > > │ 100.0                                                                        │
00:24:05 v #27149 > > │ </text>                                                                      │
00:24:05 v #27150 > > │ <polyline fill="none" opacity="1" stroke="#FFFFFF" stroke-width="1"          │
00:24:05 v #27151 > > │ points="585,156 590,156 "/>                                                  │
00:24:05 v #27152 > > │ <text x="595" y="114" dy="0.5ex" text-anchor="start"                         │
00:24:05 v #27153 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1"            │
00:24:05 v #27154 > > │ fill="#FFFFFF">                                                              │
00:24:05 v #27155 > > │ 110.0                                                                        │
00:24:05 v #27156 > > │ </text>                                                                      │
00:24:05 v #27157 > > │ <polyline fill="none" opacity="1" stroke="#FFFFFF" stroke-width="1"          │
00:24:05 v #27158 > > │ points="585,114 590,114 "/>                                                  │
00:24:05 v #27159 > > │ <polyline fill="none" opacity="1" stroke="#FF0000" stroke-width="1"          │
00:24:05 v #27160 > > │ points="69,343 77,325 84,307 91,290 98,275 105,259 112,245 119,231 127,219   │
00:24:05 v #27161 > > │ 134,207 141,196 148,184 155,174 162,164 169,155 176,147 184,139 191,132      │
00:24:05 v #27162 > > │ 198,126 205,119 212,114 219,109 226,104 233,100 241,96 248,93 255,91 262,89  │
00:24:05 v #27163 > > │ 269,88 276,86 283,86 290,85 298,86 305,87 312,88 319,90 326,92 333,95 340,98 │
00:24:05 v #27164 > > │ 348,102 355,106 362,110 369,115 376,120 383,126 390,132 397,139 405,146      │
00:24:05 v #27165 > > │ 412,153 419,161 426,169 433,178 440,187 447,197 454,207 462,217 469,228      │
00:24:05 v #27166 > > │ 476,239 483,250 490,262 497,274 504,287 511,300 519,313 526,326 533,340      │
00:24:05 v #27167 > > │ 540,355 547,369 554,384 561,399 569,415 "/>                                  │
00:24:05 v #27168 > > │ <rect x="421" y="235" width="159" height="30" opacity="1" fill="none"        │
00:24:05 v #27169 > > │ stroke="#FFFFFF"/>                                                           │
00:24:05 v #27170 > > │ <text x="461" y="245" dy="0.76em" text-anchor="start"                        │
00:24:05 v #27171 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1"            │
00:24:05 v #27172 > > │ fill="#FFFFFF">                                                              │
00:24:05 v #27173 > > │ horizontal range (m)                                                         │
00:24:05 v #27174 > > │ </text>                                                                      │
00:24:05 v #27175 > > │ <polyline fill="none" opacity="1" stroke="#FF0000" stroke-width="1"          │
00:24:05 v #27176 > > │ points="431,250 451,250 "/>                                                  │
00:24:05 v #27177 > > │ </svg>                                                                       │
00:24:05 v #27178 > > │                                                                              │
00:24:05 v #27179 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:24:05 v #27180 > >
00:24:05 v #27181 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:24:05 v #27182 > > //// test
00:24:05 v #27183 > >
00:24:05 v #27184 > > inl best_angle (min, max) =
00:24:05 v #27185 > >     let rec loop theta_deg (best_range, best_theta_deg) =
00:24:05 v #27186 > >         if theta_deg > max
00:24:05 v #27187 > >         then best_range, best_theta_deg
00:24:05 v #27188 > >         else
00:24:05 v #27189 > >             inl range = baseball_range 0.01 45 theta_deg
00:24:05 v #27190 > >             loop
00:24:05 v #27191 > >                 (theta_deg + 1)
00:24:05 v #27192 > >                 (if range > best_range
00:24:05 v #27193 > >                     then range, theta_deg
00:24:05 v #27194 > >                     else best_range, best_theta_deg)
00:24:05 v #27195 > >     loop min (0f64, min)
00:24:05 v #27196 > >
00:24:05 v #27197 > > best_angle (30f64, 60f64)
00:24:05 v #27198 > > |> _assert_eq (116.77499158246208, 41)
00:24:06 v #27199 > >
00:24:06 v #27200 > > ╭─[ 792.82ms - stdout ]────────────────────────────────────────────────────────╮
00:24:06 v #27201 > > │ __assert_eq / actual: struct (116.7749916, 41.0) / expected: struct          │
00:24:06 v #27202 > > │ (116.7749916, 41.0)                                                          │
00:24:06 v #27203 > > │                                                                              │
00:24:06 v #27204 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:24:06 v #27205 > >
00:24:06 v #27206 > > ── markdown ────────────────────────────────────────────────────────────────────
00:24:06 v #27207 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:24:06 v #27208 > > │ ### relativity_ps                                                            │
00:24:06 v #27209 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:24:06 v #27210 > >
00:24:06 v #27211 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:24:06 v #27212 > > inl relativity_ps fs (st : particle_state) =
00:24:06 v #27213 > >     inl f_net = fs |> listm.map (fun f => f st) |> sum_vec
00:24:06 v #27214 > >     inl c = 299792458
00:24:06 v #27215 > >     inl u = st.velocity ^/ c
00:24:06 v #27216 > >     inl acc = sqrt (1 - (u <.> u)) *^ (f_net ^-^ (f_net <.> u) *^ u) ^/ st.mass
00:24:06 v #27217 > >     d_particle_state {
00:24:06 v #27218 > >         dmdt = 0
00:24:06 v #27219 > >         dqdt = 0
00:24:06 v #27220 > >         dtdt = 1
00:24:06 v #27221 > >         drdt = st.velocity
00:24:06 v #27222 > >         dvdt = acc
00:24:06 v #27223 > >     }
00:24:06 v #27224 > >
00:24:06 v #27225 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:24:06 v #27226 > > //// test
00:24:06 v #27227 > >
00:24:06 v #27228 > > inl year = 365.25 * 24 * 60 * 60
00:24:06 v #27229 > > inl c = 299792458
00:24:06 v #27230 > > inl ~method = runge_kutta_4 100000
00:24:06 v #27231 > > inl forces = [[ fun _ => 10 *^ i_hat () ]]
00:24:06 v #27232 > > inl (particle_state default_particle_state') = default_particle_state ()
00:24:06 v #27233 > > inl initial_state =
00:24:06 v #27234 > >     particle_state { default_particle_state' with
00:24:06 v #27235 > >         mass = 1
00:24:06 v #27236 > >     }
00:24:06 v #27237 > >
00:24:06 v #27238 > > inl newton_states = solver_ method (newton_second_ps forces) initial_state
00:24:06 v #27239 > > inl relativity_states = solver_ method (relativity_ps forces) initial_state
00:24:06 v #27240 > >
00:24:06 v #27241 > > inl newton_x, newton_y =
00:24:06 v #27242 > >     newton_states
00:24:06 v #27243 > >     >> Some
00:24:06 v #27244 > >     |> seq.take_while_ (fun (particle_state st) (_ : i32) => st.time <= year)
00:24:06 v #27245 > >     |> listm.map (fun (particle_state st) => st.time / year, st.velocity.x / c)
00:24:06 v #27246 > >     |> listm'.unzip
00:24:06 v #27247 > >
00:24:06 v #27248 > > inl _, relativity_y =
00:24:06 v #27249 > >     relativity_states
00:24:06 v #27250 > >     >> Some
00:24:06 v #27251 > >     |> seq.take_while_ (fun (particle_state st) (_ : i32) => st.time <= year)
00:24:06 v #27252 > >     |> listm.map (fun (particle_state st) => st.time / year, st.velocity.x / c)
00:24:06 v #27253 > >     |> listm'.unzip
00:24:06 v #27254 > >
00:24:06 v #27255 > > inl newton_x = newton_x |> listm'.box |> listm'.to_array'
00:24:06 v #27256 > > inl newton_y = newton_y |> listm'.box |> listm'.to_array'
00:24:06 v #27257 > > inl relativity_y = relativity_y |> listm'.box |> listm'.to_array'
00:24:06 v #27258 > >
00:24:06 v #27259 > > "response to a constant force",
00:24:06 v #27260 > > "time (years)",
00:24:06 v #27261 > > "velocity (multiples of c)",
00:24:06 v #27262 > > ;[[
00:24:06 v #27263 > >     "newtonian", newton_x, newton_y
00:24:06 v #27264 > >     "relativistic", newton_x, relativity_y
00:24:06 v #27265 > > ]]
00:24:07 v #27266 > >
00:24:07 v #27267 > > ╭─[ 687.58ms - return value ]──────────────────────────────────────────────────╮
00:24:07 v #27268 > > │ <svg width="640" height="480" viewBox="0 0 640 480"                          │
00:24:07 v #27269 > > │ xmlns="http://www.w3.org/2000/svg">                                          │
00:24:07 v #27270 > > │ <rect x="0" y="0" width="640" height="480" opacity="1" fill="#141414"        │
00:24:07 v #27271 > > │ stroke="none"/>                                                              │
00:24:07 v #27272 > > │ <text x="320" y="10" dy="0.76em" text-anchor="middle"                        │
00:24:07 v #27273 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1"            │
00:24:07 v #27274 > > │ fill="#FFFFFF">                                                              │
00:24:07 v #27275 > > │ response to a constant force                                                 │
00:24:07 v #27276 > > │ </text>                                                                      │
00:24:07 v #27277 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="59" y1="424" x2="59" │
00:24:07 v #27278 > > │ y2="75"/>                                                                    │
00:24:07 v #27279 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69" y1="424" x2="69" │
00:24:07 v #27280 > > │ y2="75"/>                                                                    │
00:24:07 v #27281 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="79" y1="424" x2="79" │
00:24:07 v #27282 > > │ y2="75"/>                                                                    │
00:24:07 v #27283 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="89" y1="424" x2="89" │
00:24:07 v #27284 > > │ y2="75"/>                                                                    │
00:24:07 v #27285 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="99" y1="424" x2="99" │
00:24:07 v #27286 > > │ y2="75"/>                                                                    │
00:24:07 v #27287 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="109" y1="424"        │
00:24:07 v #27288 > > │ x2="109" y2="75"/>                                                           │
00:24:07 v #27289 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="119" y1="424"        │
00:24:07 v #27290 > > │ x2="119" y2="75"/>                                                           │
00:24:07 v #27291 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="129" y1="424"        │
00:24:07 v #27292 > > │ x2="129" y2="75"/>                                                           │
00:24:07 v #27293 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="139" y1="424"        │
00:24:07 v #27294 > > │ x2="139" y2="75"/>                                                           │
00:24:07 v #27295 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="149" y1="424"        │
00:24:07 v #27296 > > │ x2="149" y2="75"/>                                                           │
00:24:07 v #27297 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="159" y1="424"        │
00:24:07 v #27298 > > │ x2="159" y2="75"/>                                                           │
00:24:07 v #27299 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="169" y1="424"        │
00:24:07 v #27300 > > │ x2="169" y2="75"/>                                                           │
00:24:07 v #27301 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="179" y1="424"        │
00:24:07 v #27302 > > │ x2="179" y2="75"/>                                                           │
00:24:07 v #27303 > > │ <line... 393,238 394,238 396,237 397,237 399,236 401,235 402,235 404,234     │
00:24:07 v #27304 > > │ 405,234 407,233 409,233 410,232 412,231 413,231 415,230 416,230 418,229      │
00:24:07 v #27305 > > │ 420,229 421,228 423,228 424,227 426,227 428,226 429,225 431,225 432,224      │
00:24:07 v #27306 > > │ 434,224 435,223 437,223 439,222 440,222 442,221 443,221 445,220 447,220      │
00:24:07 v #27307 > > │ 448,219 450,219 451,218 453,218 454,217 456,217 458,216 459,216 461,215      │
00:24:07 v #27308 > > │ 462,215 464,214 466,214 467,213 469,213 470,213 472,212 473,212 475,211      │
00:24:07 v #27309 > > │ 477,211 478,210 480,210 481,209 483,209 485,208 486,208 488,208 489,207      │
00:24:07 v #27310 > > │ 491,207 492,206 494,206 496,205 497,205 499,204 500,204 502,204 504,203      │
00:24:07 v #27311 > > │ 505,203 507,202 508,202 510,202 511,201 513,201 515,200 516,200 518,200      │
00:24:07 v #27312 > > │ 519,199 521,199 523,198 524,198 526,198 527,197 529,197 531,196 532,196      │
00:24:07 v #27313 > > │ 534,196 535,195 537,195 538,194 540,194 542,194 543,193 545,193 546,193      │
00:24:07 v #27314 > > │ 548,192 550,192 551,192 553,191 554,191 556,190 557,190 559,190 561,189      │
00:24:07 v #27315 > > │ 562,189 564,189 565,188 567,188 569,188 "/>                                  │
00:24:07 v #27316 > > │ <rect x="464" y="227" width="116" height="45" opacity="1" fill="none"        │
00:24:07 v #27317 > > │ stroke="#FFFFFF"/>                                                           │
00:24:07 v #27318 > > │ <text x="504" y="237" dy="0.76em" text-anchor="start"                        │
00:24:07 v #27319 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1"            │
00:24:07 v #27320 > > │ fill="#FFFFFF">                                                              │
00:24:07 v #27321 > > │ newtonian                                                                    │
00:24:07 v #27322 > > │ </text>                                                                      │
00:24:07 v #27323 > > │ <text x="504" y="252" dy="0.76em" text-anchor="start"                        │
00:24:07 v #27324 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1"            │
00:24:07 v #27325 > > │ fill="#FFFFFF">                                                              │
00:24:07 v #27326 > > │ relativistic                                                                 │
00:24:07 v #27327 > > │ </text>                                                                      │
00:24:07 v #27328 > > │ <polyline fill="none" opacity="1" stroke="#FF0000" stroke-width="1"          │
00:24:07 v #27329 > > │ points="474,242 494,242 "/>                                                  │
00:24:07 v #27330 > > │ <polyline fill="none" opacity="1" stroke="#0000FF" stroke-width="1"          │
00:24:07 v #27331 > > │ points="474,257 494,257 "/>                                                  │
00:24:07 v #27332 > > │ </svg>                                                                       │
00:24:07 v #27333 > > │                                                                              │
00:24:07 v #27334 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:24:07 v #27335 > >
00:24:07 v #27336 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:24:07 v #27337 > > inl uniform_lorentz_force v_e v_b (st : particle_state) =
00:24:07 v #27338 > >     st.charge *^ (v_e ^+^ st.velocity >< v_b)
00:24:07 v #27339 > >
00:24:07 v #27340 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:24:07 v #27341 > > //// test
00:24:07 v #27342 > >
00:24:07 v #27343 > > inl c : f64 = 299792458
00:24:07 v #27344 > > inl ~method = runge_kutta_4 0.000000001
00:24:07 v #27345 > > inl forces = [[ uniform_lorentz_force (zero_vec ()) (k_hat ()) ]]
00:24:07 v #27346 > > inl (particle_state default_particle_state') = default_particle_state ()
00:24:07 v #27347 > > inl initial_state =
00:24:07 v #27348 > >     particle_state { default_particle_state' with
00:24:07 v #27349 > >         mass = 0.000000000000000000000000001672621898
00:24:07 v #27350 > >         charge = 0.0000000000000000001602176621
00:24:07 v #27351 > >         velocity = 0.8 *^ (c *^ j_hat ())
00:24:07 v #27352 > >     }
00:24:07 v #27353 > >
00:24:07 v #27354 > > inl newton_states = solver_ method (newton_second_ps forces) initial_state
00:24:07 v #27355 > > inl relativity_states = solver_ method (relativity_ps forces) initial_state
00:24:07 v #27356 > >
00:24:07 v #27357 > > inl newton_x, newton_y =
00:24:07 v #27358 > >     newton_states
00:24:07 v #27359 > >     >> Some
00:24:07 v #27360 > >     |> seq.take_while_ (fun (particle_state st) i => i < 100i32)
00:24:07 v #27361 > >     |> listm.map (fun (particle_state st) => st.pos_vec.x, st.pos_vec.y)
00:24:07 v #27362 > >     |> listm'.unzip
00:24:07 v #27363 > >
00:24:07 v #27364 > > inl relativity_x, relativity_y =
00:24:07 v #27365 > >     relativity_states
00:24:07 v #27366 > >     >> Some
00:24:07 v #27367 > >     |> seq.take_while_ (fun (particle_state st) i => i < 165i32)
00:24:07 v #27368 > >     |> listm.map (fun (particle_state st) => st.pos_vec.x, st.pos_vec.y)
00:24:07 v #27369 > >     |> listm'.unzip
00:24:07 v #27370 > >
00:24:07 v #27371 > > inl newton_x = newton_x |> listm'.box |> listm'.to_array'
00:24:07 v #27372 > > inl newton_y = newton_y |> listm'.box |> listm'.to_array'
00:24:07 v #27373 > >
00:24:07 v #27374 > > inl relativity_x = relativity_x |> listm'.box |> listm'.to_array'
00:24:07 v #27375 > > inl relativity_y = relativity_y |> listm'.box |> listm'.to_array'
00:24:07 v #27376 > >
00:24:07 v #27377 > > "proton in a 1-t magnetic field",
00:24:07 v #27378 > > "x (m)",
00:24:07 v #27379 > > "y (m)",
00:24:07 v #27380 > > ;[[
00:24:07 v #27381 > >     "newtonian", newton_x, newton_y
00:24:07 v #27382 > >     "relativistic", relativity_x, relativity_y
00:24:07 v #27383 > > ]]
00:24:08 v #27384 > >
00:24:08 v #27385 > > ╭─[ 706.12ms - return value ]──────────────────────────────────────────────────╮
00:24:08 v #27386 > > │ <svg width="640" height="480" viewBox="0 0 640 480"                          │
00:24:08 v #27387 > > │ xmlns="http://www.w3.org/2000/svg">                                          │
00:24:08 v #27388 > > │ <rect x="0" y="0" width="640" height="480" opacity="1" fill="#141414"        │
00:24:08 v #27389 > > │ stroke="none"/>                                                              │
00:24:08 v #27390 > > │ <text x="320" y="10" dy="0.76em" text-anchor="middle"                        │
00:24:08 v #27391 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1"            │
00:24:08 v #27392 > > │ fill="#FFFFFF">                                                              │
00:24:08 v #27393 > > │ proton in a 1-t magnetic field                                               │
00:24:08 v #27394 > > │ </text>                                                                      │
00:24:08 v #27395 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="58" y1="424" x2="58" │
00:24:08 v #27396 > > │ y2="75"/>                                                                    │
00:24:08 v #27397 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69" y1="424" x2="69" │
00:24:08 v #27398 > > │ y2="75"/>                                                                    │
00:24:08 v #27399 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="81" y1="424" x2="81" │
00:24:08 v #27400 > > │ y2="75"/>                                                                    │
00:24:08 v #27401 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="93" y1="424" x2="93" │
00:24:08 v #27402 > > │ y2="75"/>                                                                    │
00:24:08 v #27403 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="105" y1="424"        │
00:24:08 v #27404 > > │ x2="105" y2="75"/>                                                           │
00:24:08 v #27405 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="117" y1="424"        │
00:24:08 v #27406 > > │ x2="117" y2="75"/>                                                           │
00:24:08 v #27407 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="129" y1="424"        │
00:24:08 v #27408 > > │ x2="129" y2="75"/>                                                           │
00:24:08 v #27409 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="141" y1="424"        │
00:24:08 v #27410 > > │ x2="141" y2="75"/>                                                           │
00:24:08 v #27411 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="153" y1="424"        │
00:24:08 v #27412 > > │ x2="153" y2="75"/>                                                           │
00:24:08 v #27413 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="165" y1="424"        │
00:24:08 v #27414 > > │ x2="165" y2="75"/>                                                           │
00:24:08 v #27415 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="177" y1="424"        │
00:24:08 v #27416 > > │ x2="177" y2="75"/>                                                           │
00:24:08 v #27417 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="189" y1="424"        │
00:24:08 v #27418 > > │ x2="189" y2="75"/>                                                           │
00:24:08 v #27419 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="201" y1="424"        │
00:24:08 v #27420 > > │ x2="201" y2="75"/>                                                           │
00:24:08 v #27421 > > │ <...555,197 560,206 563,216 566,225 567,234 568,244 568,253 568,263 566,272  │
00:24:08 v #27422 > > │ 564,281 561,291 557,300 552,309 547,317 540,326 533,334 526,342 517,350      │
00:24:08 v #27423 > > │ 508,357 499,364 488,371 478,377 466,383 455,388 442,393 430,398 417,402      │
00:24:08 v #27424 > > │ 403,405 390,408 376,410 362,412 348,414 333,414 319,415 305,414 290,414      │
00:24:08 v #27425 > > │ 276,412 262,410 248,408 235,405 221,401 208,397 196,393 183,388 171,383      │
00:24:08 v #27426 > > │ 160,377 149,371 139,364 129,357 120,350 112,342 104,334 97,326 91,317 86,309 │
00:24:08 v #27427 > > │ 81,300 77,290 74,281 72,272 70,263 70,253 70,244 71,234 72,225 75,215 78,206 │
00:24:08 v #27428 > > │ 83,197 88,188 93,180 100,171 107,163 115,155 124,148 133,140 143,133 153,127 │
00:24:08 v #27429 > > │ 164,121 176,115 188,110 200,105 213,101 226,97 239,94 253,91 267,89 281,87   │
00:24:08 v #27430 > > │ 295,86 310,85 324,85 338,86 353,87 367,88 381,90 394,93 408,96 421,100       │
00:24:08 v #27431 > > │ 434,104 447,109 459,114 470,119 482,125 492,131 502,138 512,145 520,153      │
00:24:08 v #27432 > > │ 529,161 536,169 543,177 549,186 554,194 558,203 562,213 565,222 567,231      │
00:24:08 v #27433 > > │ 568,241 569,250 "/>                                                          │
00:24:08 v #27434 > > │ <rect x="464" y="227" width="116" height="45" opacity="1" fill="none"        │
00:24:08 v #27435 > > │ stroke="#FFFFFF"/>                                                           │
00:24:08 v #27436 > > │ <text x="504" y="237" dy="0.76em" text-anchor="start"                        │
00:24:08 v #27437 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1"            │
00:24:08 v #27438 > > │ fill="#FFFFFF">                                                              │
00:24:08 v #27439 > > │ newtonian                                                                    │
00:24:08 v #27440 > > │ </text>                                                                      │
00:24:08 v #27441 > > │ <text x="504" y="252" dy="0.76em" text-anchor="start"                        │
00:24:08 v #27442 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1"            │
00:24:08 v #27443 > > │ fill="#FFFFFF">                                                              │
00:24:08 v #27444 > > │ relativistic                                                                 │
00:24:08 v #27445 > > │ </text>                                                                      │
00:24:08 v #27446 > > │ <polyline fill="none" opacity="1" stroke="#FF0000" stroke-width="1"          │
00:24:08 v #27447 > > │ points="474,242 494,242 "/>                                                  │
00:24:08 v #27448 > > │ <polyline fill="none" opacity="1" stroke="#0000FF" stroke-width="1"          │
00:24:08 v #27449 > > │ points="474,257 494,257 "/>                                                  │
00:24:08 v #27450 > > │ </svg>                                                                       │
00:24:08 v #27451 > > │                                                                              │
00:24:08 v #27452 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:24:08 v #27453 > >
00:24:08 v #27454 > > ── markdown ────────────────────────────────────────────────────────────────────
00:24:08 v #27455 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:24:08 v #27456 > > │ #### system kinetic energy versus time 1                                     │
00:24:08 v #27457 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:24:08 v #27458 > >
00:24:08 v #27459 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:24:08 v #27460 > > //// test
00:24:08 v #27461 > >
00:24:08 v #27462 > > inl central_force f (particle_state st1) (particle_state st2) =
00:24:08 v #27463 > >     inl r1 = st1.pos_vec
00:24:08 v #27464 > >     inl r2 = st2.pos_vec
00:24:08 v #27465 > >     inl r21 = r2 ^-^ r1
00:24:08 v #27466 > >     inl r21mag = magnitude r21
00:24:08 v #27467 > >     f r21mag *^ r21 ^/ r21mag
00:24:08 v #27468 > >
00:24:08 v #27469 > > inl billiard_force k re =
00:24:08 v #27470 > >     inl f r =
00:24:08 v #27471 > >         if r >= re
00:24:08 v #27472 > >         then 0
00:24:08 v #27473 > >         else -k * (r - re)
00:24:08 v #27474 > >     central_force f
00:24:08 v #27475 > >
00:24:08 v #27476 > > type force_vector = vec
00:24:08 v #27477 > > type two_body_force = particle_state -> particle_state -> force_vector
00:24:08 v #27478 > >
00:24:08 v #27479 > > union force =
00:24:08 v #27480 > >     | ExternalForce : i32 * one_body_force
00:24:08 v #27481 > >     | InternalForce : i32 * i32 * two_body_force
00:24:08 v #27482 > >
00:24:08 v #27483 > > nominal multi_particle_state = list particle_state
00:24:08 v #27484 > >
00:24:08 v #27485 > > nominal d_multi_particle_state = list d_particle_state
00:24:08 v #27486 > >
00:24:08 v #27487 > > inl force_on n sts force =
00:24:08 v #27488 > >     match force with
00:24:08 v #27489 > >     | ExternalForce (n0, f_one_body) =>
00:24:08 v #27490 > >         if n = n0
00:24:08 v #27491 > >         then f_one_body
00:24:08 v #27492 > >         else fun _ => zero_vec ()
00:24:08 v #27493 > >     | InternalForce (n0, n1, f_two_body) =>
00:24:08 v #27494 > >         if n = n0
00:24:08 v #27495 > >         then f_two_body (sts |> listm'.item n1)
00:24:08 v #27496 > >         elif n = n1
00:24:08 v #27497 > >         then f_two_body (sts |> listm'.item n0)
00:24:08 v #27498 > >         else fun _ => zero_vec ()
00:24:08 v #27499 > >
00:24:08 v #27500 > > inl forces_on n (multi_particle_state sts) fs =
00:24:08 v #27501 > >     fs |> listm.map (force_on n sts)
00:24:08 v #27502 > >
00:24:08 v #27503 > > inl newton_second_mps fs (multi_particle_state sts) : d_multi_particle_state =
00:24:08 v #27504 > >     inl deriv (n, st) =
00:24:08 v #27505 > >         newton_second_ps (forces_on n (multi_particle_state sts) fs) st
00:24:08 v #27506 > >     sts |> listm'.indexed |> listm.map deriv |> d_multi_particle_state
00:24:08 v #27507 > >
00:24:08 v #27508 > > instance (+++) d_multi_particle_state = fun (d_multi_particle_state dsts1)
00:24:08 v #27509 > > (d_multi_particle_state dsts2) =>
00:24:08 v #27510 > >     d_multi_particle_state (listm'.zip_with_ (+++) dsts1 dsts2)
00:24:08 v #27511 > >
00:24:08 v #27512 > > instance scale d_multi_particle_state = fun w (d_multi_particle_state dsts) =>
00:24:08 v #27513 > >     d_multi_particle_state (dsts |> listm.map (scale w))
00:24:08 v #27514 > >
00:24:08 v #27515 > > instance shift multi_particle_state = fun dt dsts (multi_particle_state sts) =>
00:24:08 v #27516 > >     inl (d_multi_particle_state dsts) =
00:24:08 v #27517 > >         real
00:24:08 v #27518 > >             match dsts with
00:24:08 v #27519 > >             | d_multi_particle_state _ => dsts
00:24:08 v #27520 > >     listm'.zip_with_ (shift dt) dsts sts |> multi_particle_state
00:24:08 v #27521 > >
00:24:08 v #27522 > > inl euler_cromer_mps dt : numerical_method multi_particle_state
00:24:08 v #27523 > > d_multi_particle_state =
00:24:08 v #27524 > >     fun deriv mpst0 =>
00:24:08 v #27525 > >         inl mpst1 = euler dt deriv mpst0
00:24:08 v #27526 > >         inl (multi_particle_state sts0) = mpst0
00:24:08 v #27527 > >         inl (multi_particle_state sts1) = mpst1
00:24:08 v #27528 > >         sts1
00:24:08 v #27529 > >         |> listm'.zip_ sts0
00:24:08 v #27530 > >         |> listm.map (fun ((particle_state st0), (particle_state st1)) =>
00:24:08 v #27531 > >             particle_state {
00:24:08 v #27532 > >                 st1 with
00:24:08 v #27533 > >                     pos_vec = st0.pos_vec ^+^ st1.velocity ^* dt
00:24:08 v #27534 > >             }
00:24:08 v #27535 > >         )
00:24:08 v #27536 > >         |> multi_particle_state
00:24:08 v #27537 > >
00:24:08 v #27538 > > inl update_mps (method : numerical_method multi_particle_state
00:24:08 v #27539 > > d_multi_particle_state) =
00:24:08 v #27540 > >     newton_second_mps >> method
00:24:08 v #27541 > >
00:24:08 v #27542 > > inl states_mps (method : numerical_method multi_particle_state
00:24:08 v #27543 > > d_multi_particle_state) =
00:24:08 v #27544 > >     newton_second_mps >> method >> seq.iterate_
00:24:08 v #27545 > >
00:24:08 v #27546 > >
00:24:08 v #27547 > > inl kinetic_energy (particle_state st) =
00:24:08 v #27548 > >     inl m = st.mass
00:24:08 v #27549 > >     inl v = magnitude st.velocity
00:24:08 v #27550 > >     0.5 * m * v ** 2
00:24:08 v #27551 > >
00:24:08 v #27552 > > inl system_ke (multi_particle_state sts) =
00:24:08 v #27553 > >     sts |> listm.map kinetic_energy |> listm'.sum
00:24:08 v #27554 > >
00:24:08 v #27555 > > inl linear_spring_pe k re (particle_state st1) (particle_state st2) =
00:24:08 v #27556 > >     inl r1 = st1.pos_vec
00:24:08 v #27557 > >     inl r2 = st2.pos_vec
00:24:08 v #27558 > >     inl r21 = r2 ^-^ r1
00:24:08 v #27559 > >     inl r21mag = magnitude r21
00:24:08 v #27560 > >     k * (r21mag - re) ** 2 / 2
00:24:08 v #27561 > >
00:24:08 v #27562 > > inl earth_surface_gravity_pe (particle_state st) =
00:24:08 v #27563 > >     inl g = 9.80665
00:24:08 v #27564 > >     inl m = st.mass
00:24:08 v #27565 > >     inl z = st.pos_vec.z
00:24:08 v #27566 > >     m * g * z
00:24:08 v #27567 > >
00:24:08 v #27568 > > inl two_springs_pe (multi_particle_state sts) =
00:24:08 v #27569 > >     inl st0 = sts |> listm'.item 0i32
00:24:08 v #27570 > >     inl st1 = sts |> listm'.item 1i32
00:24:08 v #27571 > >     linear_spring_pe 100 0.5 (default_particle_state ()) st0
00:24:08 v #27572 > >     + linear_spring_pe 100 0.5 st0 st1
00:24:08 v #27573 > >     + earth_surface_gravity_pe st0
00:24:08 v #27574 > >     + earth_surface_gravity_pe st1
00:24:08 v #27575 > >
00:24:08 v #27576 > > inl two_springs_me mpst =
00:24:08 v #27577 > >     system_ke mpst + two_springs_pe mpst
00:24:08 v #27578 > >
00:24:08 v #27579 > > inl ball_radius () = 0.03
00:24:08 v #27580 > >
00:24:08 v #27581 > > inl billiard_forces k =
00:24:08 v #27582 > >     [[ InternalForce (0, 1, billiard_force k (2 * ball_radius ())) ]]
00:24:08 v #27583 > >
00:24:08 v #27584 > > inl billiard_update n_method k dt =
00:24:08 v #27585 > >     update_mps (n_method dt) (billiard_forces k)
00:24:08 v #27586 > >
00:24:08 v #27587 > > inl billiard_initial () =
00:24:08 v #27588 > >     inl ball_mass = 0.160
00:24:08 v #27589 > >     inl (particle_state default_particle_state') = default_particle_state ()
00:24:08 v #27590 > >     multi_particle_state [[
00:24:08 v #27591 > >         particle_state {
00:24:08 v #27592 > >             default_particle_state' with
00:24:08 v #27593 > >                 mass = ball_mass
00:24:08 v #27594 > >                 pos_vec = zero_vec ()
00:24:08 v #27595 > >                 velocity = 0.2 *^ i_hat ()
00:24:08 v #27596 > >         }
00:24:08 v #27597 > >         particle_state {
00:24:08 v #27598 > >             default_particle_state' with
00:24:08 v #27599 > >                 mass = ball_mass
00:24:08 v #27600 > >                 pos_vec = i_hat () ^+^ 0.02 *^ j_hat ()
00:24:08 v #27601 > >                 velocity = zero_vec ()
00:24:08 v #27602 > >         }
00:24:08 v #27603 > >     ]]
00:24:08 v #27604 > >
00:24:08 v #27605 > > inl billiard_states ~n_method k dt =
00:24:08 v #27606 > >     states_mps (n_method dt) (billiard_forces k) (billiard_initial ())
00:24:08 v #27607 > >
00:24:08 v #27608 > > inl billiard_states_finite n_method k dt =
00:24:08 v #27609 > >     billiard_states n_method k dt
00:24:08 v #27610 > >     >> Some
00:24:08 v #27611 > >     |> seq.take_while_ (fun (multi_particle_state mpst) (_ : i32) =>
00:24:08 v #27612 > >         (mpst |> listm'.item 0i32).time <= 10
00:24:08 v #27613 > >     )
00:24:08 v #27614 > >
00:24:08 v #27615 > > inl momentum (particle_state st) =
00:24:08 v #27616 > >     inl m = st.mass
00:24:08 v #27617 > >     inl v = st.velocity
00:24:08 v #27618 > >     m *^ v
00:24:08 v #27619 > >
00:24:08 v #27620 > > inl system_p (multi_particle_state sts) =
00:24:08 v #27621 > >     sts |> listm.map momentum |> sum_vec
00:24:08 v #27622 > >
00:24:08 v #27623 > >
00:24:08 v #27624 > > inl time_ke_ec_x, time_ke_ec_y =
00:24:08 v #27625 > >     billiard_states_finite euler_cromer_mps 30 0.03
00:24:08 v #27626 > >     |> listm.map (fun (multi_particle_state mpst) =>
00:24:08 v #27627 > >         (mpst |> listm'.item 0i32).time, system_ke (multi_particle_state mpst)
00:24:08 v #27628 > >     )
00:24:08 v #27629 > >     |> listm'.unzip
00:24:08 v #27630 > >
00:24:08 v #27631 > > inl time_ke_rk4_x, time_ke_rk4_y =
00:24:08 v #27632 > >     billiard_states_finite runge_kutta_4 30 0.03
00:24:08 v #27633 > >     |> listm.map (fun (multi_particle_state mpst) =>
00:24:08 v #27634 > >         (mpst |> listm'.item 0i32).time, system_ke (multi_particle_state mpst)
00:24:08 v #27635 > >     )
00:24:08 v #27636 > >     |> listm'.unzip
00:24:08 v #27637 > >
00:24:08 v #27638 > > inl time_ke_ec_x = time_ke_ec_x |> listm'.box |> listm'.to_array'
00:24:08 v #27639 > > inl time_ke_ec_y = time_ke_ec_y |> listm'.box |> listm'.to_array'
00:24:08 v #27640 > >
00:24:08 v #27641 > > inl time_ke_rk4_x = time_ke_rk4_x |> listm'.box |> listm'.to_array'
00:24:08 v #27642 > > inl time_ke_rk4_y = time_ke_rk4_y |> listm'.box |> listm'.to_array'
00:24:08 v #27643 > >
00:24:08 v #27644 > > "system kinetic energy versus time",
00:24:08 v #27645 > > "time (s)",
00:24:08 v #27646 > > "system kinetic energy (j)",
00:24:08 v #27647 > > ;[[
00:24:08 v #27648 > >     "euler-cromer", time_ke_ec_x, time_ke_ec_y
00:24:08 v #27649 > >     "runge-kutta 4", time_ke_rk4_x, time_ke_rk4_y
00:24:08 v #27650 > > ]]
00:24:09 v #27651 > >
00:24:09 v #27652 > > ╭─[ 1.42s - return value ]─────────────────────────────────────────────────────╮
00:24:09 v #27653 > > │ <svg width="640" height="480" viewBox="0 0 640 480"                          │
00:24:09 v #27654 > > │ xmlns="http://www.w3.org/2000/svg">                                          │
00:24:09 v #27655 > > │ <rect x="0" y="0" width="640" height="480" opacity="1" fill="#141414"        │
00:24:09 v #27656 > > │ stroke="none"/>                                                              │
00:24:09 v #27657 > > │ <text x="320" y="10" dy="0.76em" text-anchor="middle"                        │
00:24:09 v #27658 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1"            │
00:24:09 v #27659 > > │ fill="#FFFFFF">                                                              │
00:24:09 v #27660 > > │ system kinetic energy versus time                                            │
00:24:09 v #27661 > > │ </text>                                                                      │
00:24:09 v #27662 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="59" y1="424" x2="59" │
00:24:09 v #27663 > > │ y2="75"/>                                                                    │
00:24:09 v #27664 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69" y1="424" x2="69" │
00:24:09 v #27665 > > │ y2="75"/>                                                                    │
00:24:09 v #27666 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="79" y1="424" x2="79" │
00:24:09 v #27667 > > │ y2="75"/>                                                                    │
00:24:09 v #27668 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="89" y1="424" x2="89" │
00:24:09 v #27669 > > │ y2="75"/>                                                                    │
00:24:09 v #27670 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="99" y1="424" x2="99" │
00:24:09 v #27671 > > │ y2="75"/>                                                                    │
00:24:09 v #27672 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="109" y1="424"        │
00:24:09 v #27673 > > │ x2="109" y2="75"/>                                                           │
00:24:09 v #27674 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="119" y1="424"        │
00:24:09 v #27675 > > │ x2="119" y2="75"/>                                                           │
00:24:09 v #27676 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="129" y1="424"        │
00:24:09 v #27677 > > │ x2="129" y2="75"/>                                                           │
00:24:09 v #27678 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="139" y1="424"        │
00:24:09 v #27679 > > │ x2="139" y2="75"/>                                                           │
00:24:09 v #27680 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="149" y1="424"        │
00:24:09 v #27681 > > │ x2="149" y2="75"/>                                                           │
00:24:09 v #27682 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="159" y1="424"        │
00:24:09 v #27683 > > │ x2="159" y2="75"/>                                                           │
00:24:09 v #27684 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="169" y1="424"        │
00:24:09 v #27685 > > │ x2="169" y2="75"/>                                                           │
00:24:09 v #27686 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="179" y1="424"        │
00:24:09 v #27687 > > │ x2="179" y2="75"/>                                                           │
00:24:09 v #27688 > > │ ...,104 404,104 405,104 407,104 408,104 410,104 411,104 413,104 414,104      │
00:24:09 v #27689 > > │ 416,104 417,104 419,104 420,104 422,104 423,104 425,104 426,104 428,104      │
00:24:09 v #27690 > > │ 429,104 431,104 432,104 434,104 435,104 437,104 438,104 440,104 441,104      │
00:24:09 v #27691 > > │ 443,104 444,104 446,104 447,104 449,104 450,104 452,104 453,104 455,104      │
00:24:09 v #27692 > > │ 456,104 458,104 459,104 461,104 462,104 464,104 465,104 467,104 468,104      │
00:24:09 v #27693 > > │ 470,104 471,104 473,104 474,104 476,104 477,104 479,104 480,104 482,104      │
00:24:09 v #27694 > > │ 483,104 485,104 486,104 488,104 489,104 491,104 492,104 494,104 495,104      │
00:24:09 v #27695 > > │ 497,104 498,104 500,104 501,104 503,104 504,104 506,104 507,104 509,104      │
00:24:09 v #27696 > > │ 510,104 512,104 513,104 515,104 516,104 518,104 519,104 521,104 522,104      │
00:24:09 v #27697 > > │ 524,104 525,104 527,104 528,104 530,104 531,104 533,104 534,104 536,104      │
00:24:09 v #27698 > > │ 537,104 539,104 540,104 542,104 543,104 545,104 546,104 548,104 549,104      │
00:24:09 v #27699 > > │ 551,104 552,104 554,104 555,104 557,104 558,104 560,104 561,104 563,104      │
00:24:09 v #27700 > > │ 564,104 566,104 567,104 569,104 "/>                                          │
00:24:09 v #27701 > > │ <rect x="459" y="227" width="121" height="45" opacity="1" fill="none"        │
00:24:09 v #27702 > > │ stroke="#FFFFFF"/>                                                           │
00:24:09 v #27703 > > │ <text x="499" y="237" dy="0.76em" text-anchor="start"                        │
00:24:09 v #27704 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1"            │
00:24:09 v #27705 > > │ fill="#FFFFFF">                                                              │
00:24:09 v #27706 > > │ euler-cromer                                                                 │
00:24:09 v #27707 > > │ </text>                                                                      │
00:24:09 v #27708 > > │ <text x="499" y="252" dy="0.76em" text-anchor="start"                        │
00:24:09 v #27709 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1"            │
00:24:09 v #27710 > > │ fill="#FFFFFF">                                                              │
00:24:09 v #27711 > > │ runge-kutta 4                                                                │
00:24:09 v #27712 > > │ </text>                                                                      │
00:24:09 v #27713 > > │ <polyline fill="none" opacity="1" stroke="#FF0000" stroke-width="1"          │
00:24:09 v #27714 > > │ points="469,242 489,242 "/>                                                  │
00:24:09 v #27715 > > │ <polyline fill="none" opacity="1" stroke="#0000FF" stroke-width="1"          │
00:24:09 v #27716 > > │ points="469,257 489,257 "/>                                                  │
00:24:09 v #27717 > > │ </svg>                                                                       │
00:24:09 v #27718 > > │                                                                              │
00:24:09 v #27719 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:24:09 v #27720 > >
00:24:09 v #27721 > > ── markdown ────────────────────────────────────────────────────────────────────
00:24:09 v #27722 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:24:09 v #27723 > > │ #### wave 1                                                                  │
00:24:09 v #27724 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:24:09 v #27725 > >
00:24:09 v #27726 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:24:09 v #27727 > > //// test
00:24:09 v #27728 > >
00:24:09 v #27729 > > inl linear_spring k re (particle_state st1) (particle_state st2) =
00:24:09 v #27730 > >     inl r1 = st1.pos_vec
00:24:09 v #27731 > >     inl r2 = st2.pos_vec
00:24:09 v #27732 > >     inl r21 = r2 ^-^ r1
00:24:09 v #27733 > >     inl r21mag = magnitude r21
00:24:09 v #27734 > >     -k * (r21mag - re) *^ r21 ^/ r21mag
00:24:09 v #27735 > >
00:24:09 v #27736 > > inl fixed_linear_spring k re r1 =
00:24:09 v #27737 > >     inl (particle_state default_particle_state') = default_particle_state ()
00:24:09 v #27738 > >     linear_spring k re (particle_state { default_particle_state' with pos_vec =
00:24:09 v #27739 > > r1 })
00:24:09 v #27740 > >
00:24:09 v #27741 > > inl forces_string () =
00:24:09 v #27742 > >     [[
00:24:09 v #27743 > >         ExternalForce (0, fixed_linear_spring 5384 0 (zero_vec ()))
00:24:09 v #27744 > >         ExternalForce (63, fixed_linear_spring 5384 0 (0.65 *^ i_hat ()))
00:24:09 v #27745 > >     ]] ++ (
00:24:09 v #27746 > >         listm'.init_series 0 59 1
00:24:09 v #27747 > >         |> listm.map (fun n => InternalForce (n, n + 1, linear_spring 5384 0))
00:24:09 v #27748 > >     )
00:24:09 v #27749 > >
00:24:09 v #27750 > > inl string_update dt =
00:24:09 v #27751 > >     update_mps (runge_kutta_4 dt) (forces_string ())
00:24:09 v #27752 > >
00:24:09 v #27753 > > inl string_initial_overtone n =
00:24:09 v #27754 > >     inl ball_mass = 0.0008293 * 0.65 / 64
00:24:09 v #27755 > >     inl (particle_state default_particle_state') = default_particle_state ()
00:24:09 v #27756 > >     listm'.init_series 0.01 0.64 0.01
00:24:09 v #27757 > >     |> listm.map (fun x =>
00:24:09 v #27758 > >         inl y = 0.005 * sin (conv n * pi * x / 0.65)
00:24:09 v #27759 > >         particle_state {
00:24:09 v #27760 > >             default_particle_state' with
00:24:09 v #27761 > >                 mass = ball_mass
00:24:09 v #27762 > >                 pos_vec = x *^ i_hat () ^+^ y *^ j_hat ()
00:24:09 v #27763 > >                 velocity = zero_vec ()
00:24:09 v #27764 > >         }
00:24:09 v #27765 > >     )
00:24:09 v #27766 > >     |> multi_particle_state
00:24:09 v #27767 > >
00:24:09 v #27768 > > inl string_initial_pluck () =
00:24:09 v #27769 > >     inl ball_mass = 0.0008293 * 0.65 / 64
00:24:09 v #27770 > >     inl (particle_state default_particle_state') = default_particle_state ()
00:24:09 v #27771 > >     listm'.init_series 0.01 0.64 0.01
00:24:09 v #27772 > >     |> listm.map (fun x =>
00:24:09 v #27773 > >         inl y =
00:24:09 v #27774 > >             inl n = if x <= 0.51 then 0 else 0.65
00:24:09 v #27775 > >             0.005 / (0.51 - n) * (x - n)
00:24:09 v #27776 > >         particle_state {
00:24:09 v #27777 > >             default_particle_state' with
00:24:09 v #27778 > >                 mass = ball_mass
00:24:09 v #27779 > >                 pos_vec = x *^ i_hat () ^+^ y *^ j_hat ()
00:24:09 v #27780 > >                 velocity = zero_vec ()
00:24:09 v #27781 > >         }
00:24:09 v #27782 > >     )
00:24:09 v #27783 > >     |> multi_particle_state
00:24:09 v #27784 > >
00:24:09 v #27785 > > let main () =
00:24:09 v #27786 > >     inl ~frames = listm'.init_series 0 9 1f64
00:24:09 v #27787 > >     inl initial_state = string_initial_overtone 3i32
00:24:09 v #27788 > >     inl frames =
00:24:09 v #27789 > >         frames
00:24:09 v #27790 > >         |> listm.map (fun n =>
00:24:09 v #27791 > >             inl (multi_particle_state sts) =
00:24:09 v #27792 > >                 seq.iterate' (string_update 0.000025) initial_state |> fun f =>
00:24:09 v #27793 > > f 0f64
00:24:09 v #27794 > >             inl rs =
00:24:09 v #27795 > >                 [[ zero_vec () ]]
00:24:09 v #27796 > >                 ++ (sts |> listm.map (fun (particle_state st) => st.pos_vec))
00:24:09 v #27797 > >                 ++ [[ 0.65 *^ i_hat () ]]
00:24:09 v #27798 > >             inl x, y =
00:24:09 v #27799 > >                 rs
00:24:09 v #27800 > >                 |> listm.map (fun r => r.x, r.y)
00:24:09 v #27801 > >                 |> listm'.unzip
00:24:09 v #27802 > >             inl x = x |> listm'.box |> listm'.to_array'
00:24:09 v #27803 > >             inl y = y |> listm'.box |> listm'.to_array'
00:24:09 v #27804 > >             x, y
00:24:09 v #27805 > >         )
00:24:09 v #27806 > >         |> listm'.box |> listm'.to_array'
00:24:09 v #27807 > >
00:24:09 v #27808 > >     inl n = 0i32
00:24:09 v #27809 > >
00:24:09 v #27810 > >     inl x, y = a frames |> am'.index n
00:24:09 v #27811 > >
00:24:09 v #27812 > >     "wave",
00:24:09 v #27813 > >     "position (m)",
00:24:09 v #27814 > >     "displacement (m)",
00:24:09 v #27815 > >     ;[[
00:24:09 v #27816 > >         ($'$"{!n}"' : string), x, y
00:24:09 v #27817 > >     ]]
00:24:10 v #27818 > >
00:24:10 v #27819 > > ╭─[ 646.81ms - return value ]──────────────────────────────────────────────────╮
00:24:10 v #27820 > > │ <svg width="640" height="480" viewBox="0 0 640 480"                          │
00:24:10 v #27821 > > │ xmlns="http://www.w3.org/2000/svg">                                          │
00:24:10 v #27822 > > │ <rect x="0" y="0" width="640" height="480" opacity="1" fill="#141414"        │
00:24:10 v #27823 > > │ stroke="none"/>                                                              │
00:24:10 v #27824 > > │ <text x="320" y="10" dy="0.76em" text-anchor="middle"                        │
00:24:10 v #27825 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1"            │
00:24:10 v #27826 > > │ fill="#FFFFFF">                                                              │
00:24:10 v #27827 > > │ wave                                                                         │
00:24:10 v #27828 > > │ </text>                                                                      │
00:24:10 v #27829 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="62" y1="424" x2="62" │
00:24:10 v #27830 > > │ y2="75"/>                                                                    │
00:24:10 v #27831 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69" y1="424" x2="69" │
00:24:10 v #27832 > > │ y2="75"/>                                                                    │
00:24:10 v #27833 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="77" y1="424" x2="77" │
00:24:10 v #27834 > > │ y2="75"/>                                                                    │
00:24:10 v #27835 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="85" y1="424" x2="85" │
00:24:10 v #27836 > > │ y2="75"/>                                                                    │
00:24:10 v #27837 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="93" y1="424" x2="93" │
00:24:10 v #27838 > > │ y2="75"/>                                                                    │
00:24:10 v #27839 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="100" y1="424"        │
00:24:10 v #27840 > > │ x2="100" y2="75"/>                                                           │
00:24:10 v #27841 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="108" y1="424"        │
00:24:10 v #27842 > > │ x2="108" y2="75"/>                                                           │
00:24:10 v #27843 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="116" y1="424"        │
00:24:10 v #27844 > > │ x2="116" y2="75"/>                                                           │
00:24:10 v #27845 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="123" y1="424"        │
00:24:10 v #27846 > > │ x2="123" y2="75"/>                                                           │
00:24:10 v #27847 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="131" y1="424"        │
00:24:10 v #27848 > > │ x2="131" y2="75"/>                                                           │
00:24:10 v #27849 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="139" y1="424"        │
00:24:10 v #27850 > > │ x2="139" y2="75"/>                                                           │
00:24:10 v #27851 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="146" y1="424"        │
00:24:10 v #27852 > > │ x2="146" y2="75"/>                                                           │
00:24:10 v #27853 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="154" y1="424"        │
00:24:10 v #27854 > > │ x2="154" y2="75"/>                                                           │
00:24:10 v #27855 > > │ <line opacity="1" stroke="#32...ne fill="none" opacity="1" stroke="#FFFFFF"  │
00:24:10 v #27856 > > │ stroke-width="1" points="585,250 590,250 "/>                                 │
00:24:10 v #27857 > > │ <text x="617" y="184" dy="0.5ex" text-anchor="end" font-family="sans-serif"  │
00:24:10 v #27858 > > │ font-size="9.67741935483871" opacity="1" fill="#FFFFFF">                     │
00:24:10 v #27859 > > │ 0.0                                                                          │
00:24:10 v #27860 > > │ </text>                                                                      │
00:24:10 v #27861 > > │ <polyline fill="none" opacity="1" stroke="#FFFFFF" stroke-width="1"          │
00:24:10 v #27862 > > │ points="585,184 590,184 "/>                                                  │
00:24:10 v #27863 > > │ <text x="617" y="118" dy="0.5ex" text-anchor="end" font-family="sans-serif"  │
00:24:10 v #27864 > > │ font-size="9.67741935483871" opacity="1" fill="#FFFFFF">                     │
00:24:10 v #27865 > > │ 0.0                                                                          │
00:24:10 v #27866 > > │ </text>                                                                      │
00:24:10 v #27867 > > │ <polyline fill="none" opacity="1" stroke="#FFFFFF" stroke-width="1"          │
00:24:10 v #27868 > > │ points="585,118 590,118 "/>                                                  │
00:24:10 v #27869 > > │ <polyline fill="none" opacity="1" stroke="#FF0000" stroke-width="1"          │
00:24:10 v #27870 > > │ points="69,250 77,226 85,203 93,181 100,160 108,141 116,124 123,110 131,99   │
00:24:10 v #27871 > > │ 139,91 146,87 154,85 162,88 169,93 177,102 185,115 192,129 200,147 208,167   │
00:24:10 v #27872 > > │ 215,188 223,211 231,234 238,258 246,282 254,305 261,327 269,347 277,365      │
00:24:10 v #27873 > > │ 284,381 292,394 300,404 307,411 315,415 323,415 331,411 338,404 346,394      │
00:24:10 v #27874 > > │ 354,381 361,365 369,347 377,327 384,305 392,282 400,258 407,234 415,211      │
00:24:10 v #27875 > > │ 423,188 430,167 438,147 446,129 453,115 461,102 469,93 476,88 484,85 492,87  │
00:24:10 v #27876 > > │ 499,91 507,99 515,110 522,124 530,141 538,160 545,181 553,203 561,226        │
00:24:10 v #27877 > > │ 569,250 "/>                                                                  │
00:24:10 v #27878 > > │ <rect x="525" y="235" width="55" height="30" opacity="1" fill="none"         │
00:24:10 v #27879 > > │ stroke="#FFFFFF"/>                                                           │
00:24:10 v #27880 > > │ <text x="565" y="245" dy="0.76em" text-anchor="start"                        │
00:24:10 v #27881 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1"            │
00:24:10 v #27882 > > │ fill="#FFFFFF">                                                              │
00:24:10 v #27883 > > │ 0                                                                            │
00:24:10 v #27884 > > │ </text>                                                                      │
00:24:10 v #27885 > > │ <polyline fill="none" opacity="1" stroke="#FF0000" stroke-width="1"          │
00:24:10 v #27886 > > │ points="535,250 555,250 "/>                                                  │
00:24:10 v #27887 > > │ </svg>                                                                       │
00:24:10 v #27888 > > │                                                                              │
00:24:10 v #27889 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:24:10 v #27890 > >
00:24:10 v #27891 > > ── markdown ────────────────────────────────────────────────────────────────────
00:24:10 v #27892 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:24:10 v #27893 > > │ #### system kinetic energy versus time 2                                     │
00:24:10 v #27894 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:24:10 v #27895 > >
00:24:10 v #27896 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:24:10 v #27897 > > //// test
00:24:10 v #27898 > >
00:24:10 v #27899 > > inl central_force f (particle_state st1) (particle_state st2) =
00:24:10 v #27900 > >     inl r1 = st1.pos_vec
00:24:10 v #27901 > >     inl r2 = st2.pos_vec
00:24:10 v #27902 > >     inl r21 = r2 ^-^ r1
00:24:10 v #27903 > >     inl r21mag = magnitude r21
00:24:10 v #27904 > >     f r21mag *^ r21 ^/ r21mag
00:24:10 v #27905 > >
00:24:10 v #27906 > > inl billiard_force k re =
00:24:10 v #27907 > >     inl f r =
00:24:10 v #27908 > >         if r >= re
00:24:10 v #27909 > >         then 0
00:24:10 v #27910 > >         else -k * (r - re)
00:24:10 v #27911 > >     central_force f
00:24:10 v #27912 > >
00:24:10 v #27913 > > type force_vector = vec
00:24:10 v #27914 > > type two_body_force = particle_state -> particle_state -> force_vector
00:24:10 v #27915 > >
00:24:10 v #27916 > > union force t =
00:24:10 v #27917 > >     | ExternalForce : t * one_body_force
00:24:10 v #27918 > >     | InternalForce : t * t * two_body_force
00:24:10 v #27919 > >
00:24:10 v #27920 > > nominal multi_particle_state = stream.stream particle_state
00:24:10 v #27921 > >
00:24:10 v #27922 > > nominal d_multi_particle_state = stream.stream d_particle_state
00:24:10 v #27923 > >
00:24:10 v #27924 > > inl force_on n s force =
00:24:10 v #27925 > >     match force with
00:24:10 v #27926 > >     | ExternalForce (n0, f_one_body) =>
00:24:10 v #27927 > >         if n = n0
00:24:10 v #27928 > >         then f_one_body
00:24:10 v #27929 > >         else fun _ => zero_vec ()
00:24:10 v #27930 > >     | InternalForce (n0, n1, f_two_body) =>
00:24:10 v #27931 > >         if n = n0
00:24:10 v #27932 > >         then s |> stream.try_item n1 |> optionm.map f_two_body
00:24:10 v #27933 > >         elif n = n1
00:24:10 v #27934 > >         then s |> stream.try_item n0 |> optionm.map f_two_body
00:24:10 v #27935 > >         else None
00:24:10 v #27936 > >         |> optionm'.default_value (fun _ => zero_vec ())
00:24:10 v #27937 > >
00:24:10 v #27938 > > inl forces_on n (multi_particle_state sts) fs =
00:24:10 v #27939 > >     fs
00:24:10 v #27940 > >     |> listm.map (force_on n sts)
00:24:10 v #27941 > >
00:24:10 v #27942 > > inl newton_second_mps fs ((multi_particle_state sts) as mpst) =
00:24:10 v #27943 > >     inl deriv (n, st) =
00:24:10 v #27944 > >         newton_second_ps (forces_on n mpst fs) st
00:24:10 v #27945 > >     sts |> stream.indexed |> stream.map deriv |> d_multi_particle_state
00:24:10 v #27946 > >
00:24:10 v #27947 > > instance (+++) d_multi_particle_state =
00:24:10 v #27948 > >     fun (d_multi_particle_state dsts1) (d_multi_particle_state dsts2) =>
00:24:10 v #27949 > >         (dsts1, dsts2)
00:24:10 v #27950 > >         ||> stream.zip_with (+++)
00:24:10 v #27951 > >         |> d_multi_particle_state
00:24:10 v #27952 > >
00:24:10 v #27953 > > instance scale d_multi_particle_state = fun w (d_multi_particle_state dsts) =>
00:24:10 v #27954 > >     dsts
00:24:10 v #27955 > >     |> stream.map (scale w)
00:24:10 v #27956 > >     |> d_multi_particle_state
00:24:10 v #27957 > >
00:24:10 v #27958 > > instance shift multi_particle_state = fun dt dsts (multi_particle_state sts) =>
00:24:10 v #27959 > >     inl (d_multi_particle_state dsts) =
00:24:10 v #27960 > >         real
00:24:10 v #27961 > >             match dsts with
00:24:10 v #27962 > >             | d_multi_particle_state _ => dsts
00:24:10 v #27963 > >     (dsts, sts)
00:24:10 v #27964 > >     ||> stream.zip_with (shift dt)
00:24:10 v #27965 > >     |> stream.memoize
00:24:10 v #27966 > >     |> fun x => x ()
00:24:10 v #27967 > >     |> multi_particle_state
00:24:10 v #27968 > >
00:24:10 v #27969 > > inl euler_cromer_mps dt : numerical_method multi_particle_state
00:24:10 v #27970 > > d_multi_particle_state =
00:24:10 v #27971 > >     fun deriv ((multi_particle_state sts0) as mpst0) =>
00:24:10 v #27972 > >         inl (multi_particle_state sts1) = euler dt deriv mpst0
00:24:10 v #27973 > >         (sts0, sts1)
00:24:10 v #27974 > >         ||> stream.zip
00:24:10 v #27975 > >         |> stream.map (fun ((particle_state st0), (particle_state st1)) =>
00:24:10 v #27976 > >             particle_state {
00:24:10 v #27977 > >                 st1 with
00:24:10 v #27978 > >                     pos_vec = st0.pos_vec ^+^ st1.velocity ^* dt
00:24:10 v #27979 > >             }
00:24:10 v #27980 > >         )
00:24:10 v #27981 > >         |> multi_particle_state
00:24:10 v #27982 > >
00:24:10 v #27983 > > inl update_mps (method : numerical_method multi_particle_state
00:24:10 v #27984 > > d_multi_particle_state) =
00:24:10 v #27985 > >     newton_second_mps >> method
00:24:10 v #27986 > >
00:24:10 v #27987 > > inl states_mps (method : numerical_method multi_particle_state
00:24:10 v #27988 > > d_multi_particle_state) =
00:24:10 v #27989 > >     newton_second_mps
00:24:10 v #27990 > >     >> method
00:24:10 v #27991 > >     >> (fun x (multi_particle_state y) =>
00:24:10 v #27992 > >         y
00:24:10 v #27993 > >         |> stream.memoize
00:24:10 v #27994 > >         |> (fun x => x ())
00:24:10 v #27995 > >         |> multi_particle_state |> x
00:24:10 v #27996 > >     )
00:24:10 v #27997 > >     // >> stream.iterate
00:24:10 v #27998 > >     >> seq.iterate'
00:24:10 v #27999 > >
00:24:10 v #28000 > > inl kinetic_energy (particle_state st) =
00:24:10 v #28001 > >     inl m = st.mass
00:24:10 v #28002 > >     inl v = magnitude st.velocity
00:24:10 v #28003 > >     0.5 * m * v ** 2
00:24:10 v #28004 > >
00:24:10 v #28005 > > inl system_ke (multi_particle_state sts) =
00:24:10 v #28006 > >     sts
00:24:10 v #28007 > >     |> stream.map kinetic_energy
00:24:10 v #28008 > >     |> stream.sum
00:24:10 v #28009 > >
00:24:10 v #28010 > > inl linear_spring_pe k re (particle_state st1) (particle_state st2) =
00:24:10 v #28011 > >     inl r1 = st1.pos_vec
00:24:10 v #28012 > >     inl r2 = st2.pos_vec
00:24:10 v #28013 > >     inl r21 = r2 ^-^ r1
00:24:10 v #28014 > >     inl r21mag = magnitude r21
00:24:10 v #28015 > >     k * (r21mag - re) ** 2 / 2
00:24:10 v #28016 > >
00:24:10 v #28017 > > inl earth_surface_gravity_pe (particle_state st) =
00:24:10 v #28018 > >     inl g = 9.80665
00:24:10 v #28019 > >     inl m = st.mass
00:24:10 v #28020 > >     inl z = st.pos_vec.z
00:24:10 v #28021 > >     m * g * z
00:24:10 v #28022 > >
00:24:10 v #28023 > > inl ball_radius () = 0.03
00:24:10 v #28024 > >
00:24:10 v #28025 > > inl billiard_forces k =
00:24:10 v #28026 > >     [[ InternalForce (0i32, 1, billiard_force k (2 * ball_radius ())) ]]
00:24:10 v #28027 > >
00:24:10 v #28028 > > inl billiard_initial () =
00:24:10 v #28029 > >     inl ball_mass = 0.160
00:24:10 v #28030 > >     inl (particle_state default_particle_state') = default_particle_state ()
00:24:10 v #28031 > >     [[
00:24:10 v #28032 > >         particle_state {
00:24:10 v #28033 > >             default_particle_state' with
00:24:10 v #28034 > >                 mass = ball_mass
00:24:10 v #28035 > >                 pos_vec = zero_vec ()
00:24:10 v #28036 > >                 velocity = 0.2 *^ i_hat ()
00:24:10 v #28037 > >         }
00:24:10 v #28038 > >         particle_state {
00:24:10 v #28039 > >             default_particle_state' with
00:24:10 v #28040 > >                 mass = ball_mass
00:24:10 v #28041 > >                 pos_vec = i_hat () ^+^ 0.02 *^ j_hat ()
00:24:10 v #28042 > >                 velocity = zero_vec ()
00:24:10 v #28043 > >         }
00:24:10 v #28044 > >     ]]
00:24:10 v #28045 > >     |> stream.from_list
00:24:10 v #28046 > >     |> multi_particle_state
00:24:10 v #28047 > >
00:24:10 v #28048 > > inl billiard_states ~n_method k dt =
00:24:10 v #28049 > >     states_mps (n_method dt) (billiard_forces k) (billiard_initial ())
00:24:10 v #28050 > >
00:24:10 v #28051 > > inl billiard_states_finite n_method k dt =
00:24:10 v #28052 > >     billiard_states n_method k dt
00:24:10 v #28053 > >     >> Some
00:24:10 v #28054 > >     |> seq.take_while_ (fun (multi_particle_state mpst) (_ : i32) =>
00:24:10 v #28055 > >         match mpst |> stream.try_item 0i32 with
00:24:10 v #28056 > >         | Some st =>
00:24:10 v #28057 > >             st.time <= 10
00:24:10 v #28058 > >         | None => false
00:24:10 v #28059 > >     )
00:24:10 v #28060 > >
00:24:10 v #28061 > > inl momentum (particle_state st) =
00:24:10 v #28062 > >     inl m = st.mass
00:24:10 v #28063 > >     inl v = st.velocity
00:24:10 v #28064 > >     m *^ v
00:24:10 v #28065 > >
00:24:10 v #28066 > > inl system_p (multi_particle_state sts) =
00:24:10 v #28067 > >     sts
00:24:10 v #28068 > >     |> stream.map momentum
00:24:10 v #28069 > >     |> stream.fold (^+^) (zero_vec ())
00:24:10 v #28070 > >
00:24:10 v #28071 > > inl time_ke_ec_x, time_ke_ec_y =
00:24:10 v #28072 > >     billiard_states_finite euler_cromer_mps 30 0.03
00:24:10 v #28073 > >     |> listm.map (fun (multi_particle_state mpst) =>
00:24:10 v #28074 > >         mpst |> stream.try_item 0i32
00:24:10 v #28075 > >         |> optionm.map (fun st =>
00:24:10 v #28076 > >             st.time, system_ke (multi_particle_state mpst)
00:24:10 v #28077 > >         )
00:24:10 v #28078 > >     )
00:24:10 v #28079 > >     // |> stream.to_list
00:24:10 v #28080 > >     |> listm'.choose id
00:24:10 v #28081 > >     |> listm'.unzip
00:24:10 v #28082 > >
00:24:10 v #28083 > > inl time_ke_rk4_x, time_ke_rk4_y =
00:24:10 v #28084 > >     billiard_states_finite runge_kutta_4 30 0.03
00:24:10 v #28085 > >     |> listm.map (fun (multi_particle_state mpst) =>
00:24:10 v #28086 > >         mpst |> stream.try_item 0i32
00:24:10 v #28087 > >         |> optionm.map (fun st =>
00:24:10 v #28088 > >             st.time, system_ke (multi_particle_state mpst)
00:24:10 v #28089 > >         )
00:24:10 v #28090 > >     )
00:24:10 v #28091 > >     // |> stream.to_list
00:24:10 v #28092 > >     |> listm'.choose id
00:24:10 v #28093 > >     |> listm'.unzip
00:24:10 v #28094 > >
00:24:10 v #28095 > > inl time_ke_ec_x = time_ke_ec_x |> listm'.box |> listm'.to_array'
00:24:10 v #28096 > > inl time_ke_ec_y = time_ke_ec_y |> listm'.box |> listm'.to_array'
00:24:10 v #28097 > >
00:24:10 v #28098 > > inl time_ke_rk4_x = time_ke_rk4_x |> listm'.box |> listm'.to_array'
00:24:10 v #28099 > > inl time_ke_rk4_y = time_ke_rk4_y |> listm'.box |> listm'.to_array'
00:24:10 v #28100 > >
00:24:10 v #28101 > > "system kinetic energy versus time",
00:24:10 v #28102 > > "time (s)",
00:24:10 v #28103 > > "system kinetic energy (j)",
00:24:10 v #28104 > > ;[[
00:24:10 v #28105 > >     "euler-cromer", time_ke_ec_x, time_ke_ec_y
00:24:10 v #28106 > >     "runge-kutta 4", time_ke_rk4_x, time_ke_rk4_y
00:24:10 v #28107 > > ]]
00:24:12 v #28108 > >
00:24:12 v #28109 > > ╭─[ 2.04s - return value ]─────────────────────────────────────────────────────╮
00:24:12 v #28110 > > │ <svg width="640" height="480" viewBox="0 0 640 480"                          │
00:24:12 v #28111 > > │ xmlns="http://www.w3.org/2000/svg">                                          │
00:24:12 v #28112 > > │ <rect x="0" y="0" width="640" height="480" opacity="1" fill="#141414"        │
00:24:12 v #28113 > > │ stroke="none"/>                                                              │
00:24:12 v #28114 > > │ <text x="320" y="10" dy="0.76em" text-anchor="middle"                        │
00:24:12 v #28115 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1"            │
00:24:12 v #28116 > > │ fill="#FFFFFF">                                                              │
00:24:12 v #28117 > > │ system kinetic energy versus time                                            │
00:24:12 v #28118 > > │ </text>                                                                      │
00:24:12 v #28119 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="59" y1="424" x2="59" │
00:24:12 v #28120 > > │ y2="75"/>                                                                    │
00:24:12 v #28121 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69" y1="424" x2="69" │
00:24:12 v #28122 > > │ y2="75"/>                                                                    │
00:24:12 v #28123 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="79" y1="424" x2="79" │
00:24:12 v #28124 > > │ y2="75"/>                                                                    │
00:24:12 v #28125 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="89" y1="424" x2="89" │
00:24:12 v #28126 > > │ y2="75"/>                                                                    │
00:24:12 v #28127 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="99" y1="424" x2="99" │
00:24:12 v #28128 > > │ y2="75"/>                                                                    │
00:24:12 v #28129 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="109" y1="424"        │
00:24:12 v #28130 > > │ x2="109" y2="75"/>                                                           │
00:24:12 v #28131 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="119" y1="424"        │
00:24:12 v #28132 > > │ x2="119" y2="75"/>                                                           │
00:24:12 v #28133 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="129" y1="424"        │
00:24:12 v #28134 > > │ x2="129" y2="75"/>                                                           │
00:24:12 v #28135 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="139" y1="424"        │
00:24:12 v #28136 > > │ x2="139" y2="75"/>                                                           │
00:24:12 v #28137 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="149" y1="424"        │
00:24:12 v #28138 > > │ x2="149" y2="75"/>                                                           │
00:24:12 v #28139 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="159" y1="424"        │
00:24:12 v #28140 > > │ x2="159" y2="75"/>                                                           │
00:24:12 v #28141 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="169" y1="424"        │
00:24:12 v #28142 > > │ x2="169" y2="75"/>                                                           │
00:24:12 v #28143 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="179" y1="424"        │
00:24:12 v #28144 > > │ x2="179" y2="75"/>                                                           │
00:24:12 v #28145 > > │ ...,104 404,104 405,104 407,104 408,104 410,104 411,104 413,104 414,104      │
00:24:12 v #28146 > > │ 416,104 417,104 419,104 420,104 422,104 423,104 425,104 426,104 428,104      │
00:24:12 v #28147 > > │ 429,104 431,104 432,104 434,104 435,104 437,104 438,104 440,104 441,104      │
00:24:12 v #28148 > > │ 443,104 444,104 446,104 447,104 449,104 450,104 452,104 453,104 455,104      │
00:24:12 v #28149 > > │ 456,104 458,104 459,104 461,104 462,104 464,104 465,104 467,104 468,104      │
00:24:12 v #28150 > > │ 470,104 471,104 473,104 474,104 476,104 477,104 479,104 480,104 482,104      │
00:24:12 v #28151 > > │ 483,104 485,104 486,104 488,104 489,104 491,104 492,104 494,104 495,104      │
00:24:12 v #28152 > > │ 497,104 498,104 500,104 501,104 503,104 504,104 506,104 507,104 509,104      │
00:24:12 v #28153 > > │ 510,104 512,104 513,104 515,104 516,104 518,104 519,104 521,104 522,104      │
00:24:12 v #28154 > > │ 524,104 525,104 527,104 528,104 530,104 531,104 533,104 534,104 536,104      │
00:24:12 v #28155 > > │ 537,104 539,104 540,104 542,104 543,104 545,104 546,104 548,104 549,104      │
00:24:12 v #28156 > > │ 551,104 552,104 554,104 555,104 557,104 558,104 560,104 561,104 563,104      │
00:24:12 v #28157 > > │ 564,104 566,104 567,104 569,104 "/>                                          │
00:24:12 v #28158 > > │ <rect x="459" y="227" width="121" height="45" opacity="1" fill="none"        │
00:24:12 v #28159 > > │ stroke="#FFFFFF"/>                                                           │
00:24:12 v #28160 > > │ <text x="499" y="237" dy="0.76em" text-anchor="start"                        │
00:24:12 v #28161 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1"            │
00:24:12 v #28162 > > │ fill="#FFFFFF">                                                              │
00:24:12 v #28163 > > │ euler-cromer                                                                 │
00:24:12 v #28164 > > │ </text>                                                                      │
00:24:12 v #28165 > > │ <text x="499" y="252" dy="0.76em" text-anchor="start"                        │
00:24:12 v #28166 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1"            │
00:24:12 v #28167 > > │ fill="#FFFFFF">                                                              │
00:24:12 v #28168 > > │ runge-kutta 4                                                                │
00:24:12 v #28169 > > │ </text>                                                                      │
00:24:12 v #28170 > > │ <polyline fill="none" opacity="1" stroke="#FF0000" stroke-width="1"          │
00:24:12 v #28171 > > │ points="469,242 489,242 "/>                                                  │
00:24:12 v #28172 > > │ <polyline fill="none" opacity="1" stroke="#0000FF" stroke-width="1"          │
00:24:12 v #28173 > > │ points="469,257 489,257 "/>                                                  │
00:24:12 v #28174 > > │ </svg>                                                                       │
00:24:12 v #28175 > > │                                                                              │
00:24:12 v #28176 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:24:12 v #28177 > >
00:24:12 v #28178 > > ── markdown ────────────────────────────────────────────────────────────────────
00:24:12 v #28179 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:24:12 v #28180 > > │ #### wave 2                                                                  │
00:24:12 v #28181 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:24:12 v #28182 > >
00:24:12 v #28183 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:24:12 v #28184 > > //// test
00:24:12 v #28185 > >
00:24:12 v #28186 > > inl linear_spring k re (particle_state st1) (particle_state st2) =
00:24:12 v #28187 > >     inl r1 = st1.pos_vec
00:24:12 v #28188 > >     inl r2 = st2.pos_vec
00:24:12 v #28189 > >     inl r21 = r2 ^-^ r1
00:24:12 v #28190 > >     inl r21mag = magnitude r21
00:24:12 v #28191 > >     -k * (r21mag - re) *^ r21 ^/ r21mag
00:24:12 v #28192 > >
00:24:12 v #28193 > > inl fixed_linear_spring k re r1 =
00:24:12 v #28194 > >     inl (particle_state default_particle_state') = default_particle_state ()
00:24:12 v #28195 > >     linear_spring k re (particle_state { default_particle_state' with pos_vec =
00:24:12 v #28196 > > r1 })
00:24:12 v #28197 > >
00:24:12 v #28198 > > inl forces_string () =
00:24:12 v #28199 > >     [[
00:24:12 v #28200 > >         ExternalForce (0i32, fixed_linear_spring 5384 0 (zero_vec ()))
00:24:12 v #28201 > >         ExternalForce (63, fixed_linear_spring 5384 0 (0.65 *^ i_hat ()))
00:24:12 v #28202 > >     ]] ++ (
00:24:12 v #28203 > >         listm'.init_series 0 59 1
00:24:12 v #28204 > >         |> listm.map (fun n => InternalForce (n, n + 1, linear_spring 5384 0))
00:24:12 v #28205 > >     )
00:24:12 v #28206 > >
00:24:12 v #28207 > > inl string_update dt =
00:24:12 v #28208 > >     update_mps (join runge_kutta_4 dt) (join forces_string ())
00:24:12 v #28209 > >
00:24:12 v #28210 > > inl string_initial_overtone n =
00:24:12 v #28211 > >     inl ball_mass = 0.0008293 * 0.65 / 64
00:24:12 v #28212 > >     inl (particle_state default_particle_state') = default_particle_state ()
00:24:12 v #28213 > >     listm'.init_series 0.01 0.64 0.01
00:24:12 v #28214 > >     |> listm.map (fun x =>
00:24:12 v #28215 > >         inl y = 0.005 * sin (conv n * pi * x / 0.65)
00:24:12 v #28216 > >         particle_state {
00:24:12 v #28217 > >             default_particle_state' with
00:24:12 v #28218 > >                 mass = ball_mass
00:24:12 v #28219 > >                 pos_vec = x *^ i_hat () ^+^ y *^ j_hat ()
00:24:12 v #28220 > >                 velocity = zero_vec ()
00:24:12 v #28221 > >         }
00:24:12 v #28222 > >     )
00:24:12 v #28223 > >     |> stream.from_list
00:24:12 v #28224 > >     |> multi_particle_state
00:24:12 v #28225 > >
00:24:12 v #28226 > > let main () =
00:24:12 v #28227 > >     inl ~frames = listm'.init_series 0 65 1f64 |> stream.from_list
00:24:12 v #28228 > >     inl ~initial_state = string_initial_overtone 3i32
00:24:12 v #28229 > >     inl frames =
00:24:12 v #28230 > >         frames
00:24:12 v #28231 > >         |> stream.map (fun n =>
00:24:12 v #28232 > >             inl (multi_particle_state sts) =
00:24:12 v #28233 > >                 stream.iterate (string_update 0.000025) initial_state |>
00:24:12 v #28234 > > stream.item n
00:24:12 v #28235 > >             inl x, y =
00:24:12 v #28236 > >                 [[ zero_vec () ]]
00:24:12 v #28237 > >                 ++ (sts |> stream.map (fun (particle_state st) => st.pos_vec) |>
00:24:12 v #28238 > > stream.to_list)
00:24:12 v #28239 > >                 ++ [[ 0.65 *^ i_hat () ]]
00:24:12 v #28240 > >                 |> listm.map (fun r => r.x, r.y)
00:24:12 v #28241 > >                 |> stream.from_list
00:24:12 v #28242 > >                 |> stream.unzip
00:24:12 v #28243 > >             inl x = x |> stream.to_list |> listm'.box |> listm'.to_array'
00:24:12 v #28244 > >             inl y = y |> stream.to_list |> listm'.box |> listm'.to_array'
00:24:12 v #28245 > >             x, y
00:24:12 v #28246 > >         )
00:24:12 v #28247 > >
00:24:12 v #28248 > >     inl plots =
00:24:12 v #28249 > >         frames
00:24:12 v #28250 > >         |> stream.indexed
00:24:12 v #28251 > >         |> stream.map (fun ((n : i32), (x, y)) =>
00:24:12 v #28252 > >             "wave",
00:24:12 v #28253 > >             "position (m)",
00:24:12 v #28254 > >             "displacement (m)",
00:24:12 v #28255 > >             ;[[
00:24:12 v #28256 > >                 ($'$"{!n}"' : string), x, y
00:24:12 v #28257 > >             ]]
00:24:12 v #28258 > >         )
00:24:12 v #28259 > >
00:24:12 v #28260 > >     plots |> stream.to_list |> listm'.box |> listm'.to_array'
00:24:17 v #28261 > >
00:24:17 v #28262 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:24:17 v #28263 > > ╭─[ 5.03s - diagnostics ]──────────────────────────────────────────────────────╮
00:24:17 v #28264 > > │ input.fsx (22,25)-(1084,1085) typecheck warning Incomplete pattern matches   │
00:24:17 v #28265 > > │ on this expression. For example, the value 'UH7_1 (_, _, _, _)' may indicate │
00:24:17 v #28266 > > │ a case not covered by the pattern(s).                                        │
00:24:17 v #28267 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:24:17 v #28268 > >
00:24:17 v #28269 > > ╭─[ 5.25s - return value ]─────────────────────────────────────────────────────╮
00:24:17 v #28270 > > │ <table><thead><tr><th><i>index</i></th><th>value</th></tr></thead><tbody><tr │
00:24:17 v #28271 > > │ ><td>0</td><td><svg width="640" height="480" viewBox="0 0 640 480"           │
00:24:17 v #28272 > > │ xmlns="http://www.w3.org/2000/svg">                                          │
00:24:17 v #28273 > > │ <rect x="0" y="0" width="640" height="480" opacity="1" fill="#141414"        │
00:24:17 v #28274 > > │ stroke="none"/>                                                              │
00:24:17 v #28275 > > │ <text x="320" y="10" dy="0.76em" text-anchor="middle"                        │
00:24:17 v #28276 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1"            │
00:24:17 v #28277 > > │ fill="#FFFFFF">                                                              │
00:24:17 v #28278 > > │ wave                                                                         │
00:24:17 v #28279 > > │ </text>                                                                      │
00:24:17 v #28280 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="62" y1="424" x2="62" │
00:24:17 v #28281 > > │ y2="75"/>                                                                    │
00:24:17 v #28282 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69" y1="424" x2="69" │
00:24:17 v #28283 > > │ y2="75"/>                                                                    │
00:24:17 v #28284 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="77" y1="424" x2="77" │
00:24:17 v #28285 > > │ y2="75"/>                                                                    │
00:24:17 v #28286 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="85" y1="424" x2="85" │
00:24:17 v #28287 > > │ y2="75"/>                                                                    │
00:24:17 v #28288 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="93" y1="424" x2="93" │
00:24:17 v #28289 > > │ y2="75"/>                                                                    │
00:24:17 v #28290 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="100" y1="424"        │
00:24:17 v #28291 > > │ x2="100" y2="75"/>                                                           │
00:24:17 v #28292 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="108" y1="424"        │
00:24:17 v #28293 > > │ x2="108" y2="75"/>                                                           │
00:24:17 v #28294 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="116" y1="424"        │
00:24:17 v #28295 > > │ x2="116" y2="75"/>                                                           │
00:24:17 v #28296 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="123" y1="424"        │
00:24:17 v #28297 > > │ x2="123" y2="75"/>                                                           │
00:24:17 v #28298 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="131" y1="424"        │
00:24:17 v #28299 > > │ x2="131" y2="75"/>                                                           │
00:24:17 v #28300 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="139" y1="424"        │
00:24:17 v #28301 > > │ x2="139" y2="75"/>                                                           │
00:24:17 v #28302 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="146" y1="424"        │
00:24:17 v #28303 > > │ x2="146" y2="75"/>                                                           │
00:24:17 v #28304 > > │ <line opacity="1" stroke="#...28 590,128 "/>                                 │
00:24:17 v #28305 > > │ <polyline fill="none" opacity="1" stroke="#FF0000" stroke-width="1"          │
00:24:17 v #28306 > > │ points="69,363 77,322 85,283 92,246 100,211 107,179 115,151 122,127 130,108  │
00:24:17 v #28307 > > │ 138,95 145,87 153,85 160,89 168,99 175,114 183,134 190,159 198,188 205,220   │
00:24:17 v #28308 > > │ 212,253 218,284 223,311 226,329 227,337 226,337 224,333 223,334 223,344      │
00:24:17 v #28309 > > │ 224,357 225,367 224,370 223,374 224,383 224,393 224,397 224,400 224,406      │
00:24:17 v #28310 > > │ 224,411 224,412 224,413 224,415 224,413 224,411 224,409 224,405 224,400      │
00:24:17 v #28311 > > │ 224,395 224,388 224,382 224,375 224,367 224,360 224,353 224,346 224,339      │
00:24:17 v #28312 > > │ 224,332 224,327 224,322 224,318 224,314 224,312 224,311 539,239 546,279      │
00:24:17 v #28313 > > │ 569,403 561,363 "/>                                                          │
00:24:17 v #28314 > > │ <rect x="519" y="235" width="61" height="30" opacity="1" fill="none"         │
00:24:17 v #28315 > > │ stroke="#FFFFFF"/>                                                           │
00:24:17 v #28316 > > │ <text x="559" y="245" dy="0.76em" text-anchor="start"                        │
00:24:17 v #28317 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1"            │
00:24:17 v #28318 > > │ fill="#FFFFFF">                                                              │
00:24:17 v #28319 > > │ 65                                                                           │
00:24:17 v #28320 > > │ </text>                                                                      │
00:24:17 v #28321 > > │ <polyline fill="none" opacity="1" stroke="#FF0000" stroke-width="1"          │
00:24:17 v #28322 > > │ points="529,250 549,250 "/>                                                  │
00:24:17 v #28323 > > │ </svg>                                                                       │
00:24:17 v #28324 > > │ </td></tr></tbody></table><style>                                            │
00:24:17 v #28325 > > │ .dni-code-hint {                                                             │
00:24:17 v #28326 > > │     font-style: italic;                                                      │
00:24:17 v #28327 > > │     overflow: hidden;                                                        │
00:24:17 v #28328 > > │     white-space: nowrap;                                                     │
00:24:17 v #28329 > > │ }                                                                            │
00:24:17 v #28330 > > │ .dni-treeview {                                                              │
00:24:17 v #28331 > > │     white-space: nowrap;                                                     │
00:24:17 v #28332 > > │ }                                                                            │
00:24:17 v #28333 > > │ .dni-treeview td {                                                           │
00:24:17 v #28334 > > │     vertical-align: top;                                                     │
00:24:17 v #28335 > > │     text-align: start;                                                       │
00:24:17 v #28336 > > │ }                                                                            │
00:24:17 v #28337 > > │ details.dni-treeview {                                                       │
00:24:17 v #28338 > > │     padding-left: 1em;                                                       │
00:24:17 v #28339 > > │ }                                                                            │
00:24:17 v #28340 > > │ table td {                                                                   │
00:24:17 v #28341 > > │     text-align: start;                                                       │
00:24:17 v #28342 > > │ }                                                                            │
00:24:17 v #28343 > > │ table tr {                                                                   │
00:24:17 v #28344 > > │     vertical-align: top;                                                     │
00:24:17 v #28345 > > │     margin: 0em 0px;                                                         │
00:24:17 v #28346 > > │ }                                                                            │
00:24:17 v #28347 > > │ table tr td pre                                                              │
00:24:17 v #28348 > > │ {                                                                            │
00:24:17 v #28349 > > │     vertical-align: top !important;                                          │
00:24:17 v #28350 > > │     margin: 0em 0px !important;                                              │
00:24:17 v #28351 > > │ }                                                                            │
00:24:17 v #28352 > > │ table th {                                                                   │
00:24:17 v #28353 > > │     text-align: start;                                                       │
00:24:17 v #28354 > > │ }                                                                            │
00:24:17 v #28355 > > │ </style>                                                                     │
00:24:17 v #28356 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:24:17 v #28357 > >
00:24:17 v #28358 > > ── markdown ────────────────────────────────────────────────────────────────────
00:24:17 v #28359 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:24:17 v #28360 > > │ ## end                                                                       │
00:24:17 v #28361 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:24:17 v #28362 > 00:01:00 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 157679 }
00:24:17 v #28363 > 00:01:00 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/polyglot/lib/spiral/physics.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/polyglot/lib/spiral/physics.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:24:19 v #28364 > 00:01:01 v #5 ! [NbConvertApp] Converting notebook c:/home/git/polyglot/lib/spiral/physics.dib.ipynb to html
00:24:19 v #28365 > 00:01:01 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:24:19 v #28366 > 00:01:01 v #7 !   validate(nb)
00:24:20 v #28367 > 00:01:02 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:24:20 v #28368 > 00:01:02 v #9 !   return _pygments_highlight(
00:24:23 v #28369 > 00:01:06 v #10 ! [NbConvertApp] Writing 2508212 bytes to c:\home\git\polyglot\lib\spiral\physics.dib.html
00:24:23 v #28370 > 00:01:06 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 857 }
00:24:23 v #28371 > 00:01:06 d #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 857 }
00:24:23 v #28372 > 00:01:06 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/physics.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/physics.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:24:24 v #28373 > 00:01:06 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:24:24 v #28374 > 00:01:06 d #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:24:24 v #28375 > 00:01:06 d #16 spiral_builder.run / dib / { exit_code = 0; result_length = 158595 }
00:24:24 d #28376 runtime.execute_with_options_async / { exit_code = 0; output_length = 167009 }
00:24:24 d #34 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder.exe dib --path physics.dib --retries 3
00:24:24 d #28377 runtime.execute_with_options_async / { file_name = ../../workspace/target/release/spiral_builder.exe; arguments = US5_0 "dib --path seq.dib --retries 3"; options = { command = ../../workspace/target/release/spiral_builder.exe dib --path seq.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:24:24 v #28378 > 00:00:00 d #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "seq.dib", "--retries", "3"])) }
00:24:24 v #28379 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/polyglot/lib/spiral/seq.dib", "--output-path", "c:/home/git/polyglot/lib/spiral/seq.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/polyglot/lib/spiral/seq.dib" --output-path "c:/home/git/polyglot/lib/spiral/seq.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:24:26 v #28380 > >
00:24:26 v #28381 > > ── markdown ────────────────────────────────────────────────────────────────────
00:24:26 v #28382 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:24:26 v #28383 > > │ # seq                                                                        │
00:24:26 v #28384 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:24:29 v #28385 > >
00:24:29 v #28386 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:24:29 v #28387 > > //// test
00:24:29 v #28388 > >
00:24:29 v #28389 > > open testing
00:24:30 v #28390 > >
00:24:30 v #28391 > > ── markdown ────────────────────────────────────────────────────────────────────
00:24:30 v #28392 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:24:30 v #28393 > > │ ## seq                                                                       │
00:24:30 v #28394 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:24:30 v #28395 > >
00:24:30 v #28396 > > ── markdown ────────────────────────────────────────────────────────────────────
00:24:30 v #28397 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:24:30 v #28398 > > │ ### seq                                                                      │
00:24:30 v #28399 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:24:30 v #28400 > >
00:24:30 v #28401 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:24:30 v #28402 > > type seq dim el = dim -> option el
00:24:30 v #28403 > >
00:24:30 v #28404 > > ── markdown ────────────────────────────────────────────────────────────────────
00:24:30 v #28405 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:24:30 v #28406 > > │ ### try_item                                                                 │
00:24:30 v #28407 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:24:30 v #28408 > >
00:24:30 v #28409 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:24:30 v #28410 > > inl try_item n s =
00:24:30 v #28411 > >     n |> s
00:24:31 v #28412 > >
00:24:31 v #28413 > > ── markdown ────────────────────────────────────────────────────────────────────
00:24:31 v #28414 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:24:31 v #28415 > > │ ### from_list                                                                │
00:24:31 v #28416 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:24:31 v #28417 > >
00:24:31 v #28418 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:24:31 v #28419 > > inl from_list list =
00:24:31 v #28420 > >     fun n =>
00:24:31 v #28421 > >         list
00:24:31 v #28422 > >         |> listm'.try_item n
00:24:31 v #28423 > >
00:24:31 v #28424 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:24:31 v #28425 > > //// test
00:24:31 v #28426 > >
00:24:31 v #28427 > > listm.init 10i32 print_and_return
00:24:31 v #28428 > > |> from_list
00:24:31 v #28429 > > |> try_item 5i32
00:24:31 v #28430 > > |> _assert_eq (Some 5i32)
00:24:32 v #28431 > >
00:24:32 v #28432 > > ╭─[ 1.45s - stdout ]───────────────────────────────────────────────────────────╮
00:24:32 v #28433 > > │ print_and_return / x: 0                                                      │
00:24:32 v #28434 > > │ print_and_return / x: 1                                                      │
00:24:32 v #28435 > > │ print_and_return / x: 2                                                      │
00:24:32 v #28436 > > │ print_and_return / x: 3                                                      │
00:24:32 v #28437 > > │ print_and_return / x: 4                                                      │
00:24:32 v #28438 > > │ print_and_return / x: 5                                                      │
00:24:32 v #28439 > > │ print_and_return / x: 6                                                      │
00:24:32 v #28440 > > │ print_and_return / x: 7                                                      │
00:24:32 v #28441 > > │ print_and_return / x: 8                                                      │
00:24:32 v #28442 > > │ print_and_return / x: 9                                                      │
00:24:32 v #28443 > > │ __assert_eq / actual: US0_0 5 / expected: US0_0 5                            │
00:24:32 v #28444 > > │                                                                              │
00:24:32 v #28445 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:24:32 v #28446 > >
00:24:32 v #28447 > > ── markdown ────────────────────────────────────────────────────────────────────
00:24:32 v #28448 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:24:32 v #28449 > > │ ### map                                                                      │
00:24:32 v #28450 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:24:32 v #28451 > >
00:24:32 v #28452 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:24:32 v #28453 > > inl map fn s =
00:24:32 v #28454 > >     fun n =>
00:24:32 v #28455 > >         n
00:24:32 v #28456 > >         |> s
00:24:32 v #28457 > >         |> optionm.map fn
00:24:33 v #28458 > >
00:24:33 v #28459 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:24:33 v #28460 > > //// test
00:24:33 v #28461 > >
00:24:33 v #28462 > > listm.init 10i32 id
00:24:33 v #28463 > > |> from_list
00:24:33 v #28464 > > |> map ((*) 2)
00:24:33 v #28465 > > |> try_item 5i32
00:24:33 v #28466 > > |> _assert_eq (Some 10i32)
00:24:33 v #28467 > >
00:24:33 v #28468 > > ╭─[ 452.08ms - stdout ]────────────────────────────────────────────────────────╮
00:24:33 v #28469 > > │ __assert_eq / actual: US0_0 10 / expected: US0_0 10                          │
00:24:33 v #28470 > > │                                                                              │
00:24:33 v #28471 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:24:33 v #28472 > >
00:24:33 v #28473 > > ── markdown ────────────────────────────────────────────────────────────────────
00:24:33 v #28474 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:24:33 v #28475 > > │ ### mapi                                                                     │
00:24:33 v #28476 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:24:33 v #28477 > >
00:24:33 v #28478 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:24:33 v #28479 > > inl mapi fn s =
00:24:33 v #28480 > >     fun n =>
00:24:33 v #28481 > >         n
00:24:33 v #28482 > >         |> s
00:24:33 v #28483 > >         |> optionm.map (fn n)
00:24:34 v #28484 > >
00:24:34 v #28485 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:24:34 v #28486 > > //// test
00:24:34 v #28487 > >
00:24:34 v #28488 > > listm.init 10i32 print_and_return
00:24:34 v #28489 > > |> from_list
00:24:34 v #28490 > > |> mapi fun i x => i + x
00:24:34 v #28491 > > |> try_item 5i32
00:24:34 v #28492 > > |> _assert_eq (Some 10i32)
00:24:34 v #28493 > >
00:24:34 v #28494 > > ╭─[ 444.18ms - stdout ]────────────────────────────────────────────────────────╮
00:24:34 v #28495 > > │ print_and_return / x: 0                                                      │
00:24:34 v #28496 > > │ print_and_return / x: 1                                                      │
00:24:34 v #28497 > > │ print_and_return / x: 2                                                      │
00:24:34 v #28498 > > │ print_and_return / x: 3                                                      │
00:24:34 v #28499 > > │ print_and_return / x: 4                                                      │
00:24:34 v #28500 > > │ print_and_return / x: 5                                                      │
00:24:34 v #28501 > > │ print_and_return / x: 6                                                      │
00:24:34 v #28502 > > │ print_and_return / x: 7                                                      │
00:24:34 v #28503 > > │ print_and_return / x: 8                                                      │
00:24:34 v #28504 > > │ print_and_return / x: 9                                                      │
00:24:34 v #28505 > > │ __assert_eq / actual: US0_0 10 / expected: US0_0 10                          │
00:24:34 v #28506 > > │                                                                              │
00:24:34 v #28507 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:24:34 v #28508 > >
00:24:34 v #28509 > > ── markdown ────────────────────────────────────────────────────────────────────
00:24:34 v #28510 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:24:34 v #28511 > > │ ### choose                                                                   │
00:24:34 v #28512 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:24:34 v #28513 > >
00:24:34 v #28514 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:24:34 v #28515 > > inl choose forall dim {number} t u. (fn : t -> option u) (s : seq dim t) : seq
00:24:34 v #28516 > > dim u =
00:24:34 v #28517 > >     fun n =>
00:24:34 v #28518 > >         inl rec body fn s i i' =
00:24:34 v #28519 > >             match i |> s with
00:24:34 v #28520 > >             | None => None
00:24:34 v #28521 > >             | Some x =>
00:24:34 v #28522 > >                 match x |> fn with
00:24:34 v #28523 > >                 | Some x when n = i' => Some x
00:24:34 v #28524 > >                 | Some _ => loop (i + 1) (i' + 1)
00:24:34 v #28525 > >                 | _ => loop (i + 1) i'
00:24:34 v #28526 > >         and inl loop i i' =
00:24:34 v #28527 > >             if n |> var_is |> not
00:24:34 v #28528 > >             then body fn s i i'
00:24:34 v #28529 > >             else
00:24:34 v #28530 > >                 inl fn = join fn
00:24:34 v #28531 > >                 inl s = join s
00:24:34 v #28532 > >                 join body fn s i i'
00:24:34 v #28533 > >         loop 0 0
00:24:35 v #28534 > >
00:24:35 v #28535 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:24:35 v #28536 > > //// test
00:24:35 v #28537 > >
00:24:35 v #28538 > > listm.init 10i32 print_and_return
00:24:35 v #28539 > > |> from_list
00:24:35 v #28540 > > |> choose (fun x => if x % 2 = 0 then Some x else None)
00:24:35 v #28541 > > |> try_item 1i32
00:24:35 v #28542 > > |> _assert_eq (Some 2i32)
00:24:35 v #28543 > >
00:24:35 v #28544 > > ╭─[ 407.74ms - stdout ]────────────────────────────────────────────────────────╮
00:24:35 v #28545 > > │ print_and_return / x: 0                                                      │
00:24:35 v #28546 > > │ print_and_return / x: 1                                                      │
00:24:35 v #28547 > > │ print_and_return / x: 2                                                      │
00:24:35 v #28548 > > │ print_and_return / x: 3                                                      │
00:24:35 v #28549 > > │ print_and_return / x: 4                                                      │
00:24:35 v #28550 > > │ print_and_return / x: 5                                                      │
00:24:35 v #28551 > > │ print_and_return / x: 6                                                      │
00:24:35 v #28552 > > │ print_and_return / x: 7                                                      │
00:24:35 v #28553 > > │ print_and_return / x: 8                                                      │
00:24:35 v #28554 > > │ print_and_return / x: 9                                                      │
00:24:35 v #28555 > > │ __assert_eq / actual: US0_0 2 / expected: US0_0 2                            │
00:24:35 v #28556 > > │                                                                              │
00:24:35 v #28557 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:24:35 v #28558 > >
00:24:35 v #28559 > > ── markdown ────────────────────────────────────────────────────────────────────
00:24:35 v #28560 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:24:35 v #28561 > > │ ### indexed                                                                  │
00:24:35 v #28562 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:24:35 v #28563 > >
00:24:35 v #28564 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:24:35 v #28565 > > inl indexed s =
00:24:35 v #28566 > >     s
00:24:35 v #28567 > >     |> mapi fun i x =>
00:24:35 v #28568 > >         i, x
00:24:35 v #28569 > >
00:24:35 v #28570 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:24:35 v #28571 > > //// test
00:24:35 v #28572 > >
00:24:35 v #28573 > > listm.init 10i32 ((*) 2)
00:24:35 v #28574 > > |> from_list
00:24:35 v #28575 > > |> indexed
00:24:35 v #28576 > > |> try_item 5i32
00:24:35 v #28577 > > |> _assert_eq (Some (5i32, 10i32))
00:24:36 v #28578 > >
00:24:36 v #28579 > > ╭─[ 406.40ms - stdout ]────────────────────────────────────────────────────────╮
00:24:36 v #28580 > > │ __assert_eq / actual: US0_0 (5, 10) / expected: US0_0 (5, 10)                │
00:24:36 v #28581 > > │                                                                              │
00:24:36 v #28582 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:24:36 v #28583 > >
00:24:36 v #28584 > > ── markdown ────────────────────────────────────────────────────────────────────
00:24:36 v #28585 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:24:36 v #28586 > > │ ### zip                                                                      │
00:24:36 v #28587 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:24:36 v #28588 > >
00:24:36 v #28589 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:24:36 v #28590 > > inl zip n seq1 seq2 =
00:24:36 v #28591 > >     seq1 n, seq2 n
00:24:36 v #28592 > >
00:24:36 v #28593 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:24:36 v #28594 > > //// test
00:24:36 v #28595 > >
00:24:36 v #28596 > > ((listm.init 10i32 id |> from_list), (listm.init 10i32 ((*) 2) |> from_list))
00:24:36 v #28597 > > ||> zip 5i32
00:24:36 v #28598 > > |> _assert_eq (Some 5, Some 10)
00:24:36 v #28599 > >
00:24:36 v #28600 > > ╭─[ 405.09ms - stdout ]────────────────────────────────────────────────────────╮
00:24:36 v #28601 > > │ __assert_eq / actual: struct (US0_0 5, US0_0 10) / expected: struct (US0_0   │
00:24:36 v #28602 > > │ 5, US0_0 10)                                                                 │
00:24:36 v #28603 > > │                                                                              │
00:24:36 v #28604 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:24:36 v #28605 > >
00:24:36 v #28606 > > ── markdown ────────────────────────────────────────────────────────────────────
00:24:36 v #28607 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:24:36 v #28608 > > │ ### zip_with                                                                 │
00:24:36 v #28609 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:24:36 v #28610 > >
00:24:36 v #28611 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:24:36 v #28612 > > inl zip_with fn seq1 seq2 =
00:24:36 v #28613 > >     fun n =>
00:24:36 v #28614 > >         fn (seq1 n) (seq2 n)
00:24:37 v #28615 > >
00:24:37 v #28616 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:24:37 v #28617 > > //// test
00:24:37 v #28618 > >
00:24:37 v #28619 > > ((listm.init 10i32 id |> from_list), (listm.init 10i32 ((*) 2) |> from_list))
00:24:37 v #28620 > > ||> zip_with (optionm'.choose (+))
00:24:37 v #28621 > > |> try_item 2i32
00:24:37 v #28622 > > |> _assert_eq (Some 6)
00:24:37 v #28623 > >
00:24:37 v #28624 > > ╭─[ 448.88ms - stdout ]────────────────────────────────────────────────────────╮
00:24:37 v #28625 > > │ __assert_eq / actual: US0_0 6 / expected: US0_0 6                            │
00:24:37 v #28626 > > │                                                                              │
00:24:37 v #28627 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:24:37 v #28628 > >
00:24:37 v #28629 > > ── markdown ────────────────────────────────────────────────────────────────────
00:24:37 v #28630 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:24:37 v #28631 > > │ ### fold                                                                     │
00:24:37 v #28632 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:24:37 v #28633 > >
00:24:37 v #28634 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:24:37 v #28635 > > inl fold fn init seq =
00:24:37 v #28636 > >     inl rec loop acc n =
00:24:37 v #28637 > >         match seq n with
00:24:37 v #28638 > >         | Some x => loop (fn acc x) (n + 1)
00:24:37 v #28639 > >         | None => acc
00:24:37 v #28640 > >     loop init 0
00:24:37 v #28641 > >
00:24:37 v #28642 > > inl fold_ fn init seq =
00:24:37 v #28643 > >     let rec loop acc n =
00:24:37 v #28644 > >         match seq n with
00:24:37 v #28645 > >         | Some x => loop (fn acc x) (n + 1)
00:24:37 v #28646 > >         | None => acc
00:24:37 v #28647 > >     loop init 0
00:24:38 v #28648 > >
00:24:38 v #28649 > > ── markdown ────────────────────────────────────────────────────────────────────
00:24:38 v #28650 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:24:38 v #28651 > > │ ### sum                                                                      │
00:24:38 v #28652 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:24:38 v #28653 > >
00:24:38 v #28654 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:24:38 v #28655 > > inl sum seq =
00:24:38 v #28656 > >     seq |> fold (+) 0
00:24:38 v #28657 > >
00:24:38 v #28658 > > inl sum_ seq =
00:24:38 v #28659 > >     seq |> fold_ (+) 0
00:24:38 v #28660 > >
00:24:38 v #28661 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:24:38 v #28662 > > //// test
00:24:38 v #28663 > >
00:24:38 v #28664 > > listm.init 10i32 id
00:24:38 v #28665 > > |> from_list
00:24:38 v #28666 > > |> fun f (n : i32) => f n
00:24:38 v #28667 > > |> sum
00:24:38 v #28668 > > |> _assert_eq 45
00:24:39 v #28669 > >
00:24:39 v #28670 > > ╭─[ 449.79ms - stdout ]────────────────────────────────────────────────────────╮
00:24:39 v #28671 > > │ __assert_eq / actual: 45 / expected: 45                                      │
00:24:39 v #28672 > > │                                                                              │
00:24:39 v #28673 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:24:39 v #28674 > >
00:24:39 v #28675 > > ── markdown ────────────────────────────────────────────────────────────────────
00:24:39 v #28676 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:24:39 v #28677 > > │ ### to_list                                                                  │
00:24:39 v #28678 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:24:39 v #28679 > >
00:24:39 v #28680 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:24:39 v #28681 > > inl to_list seq =
00:24:39 v #28682 > >     seq
00:24:39 v #28683 > >     |> fold (fun acc x => x :: acc) [[]]
00:24:39 v #28684 > >     |> listm.rev
00:24:39 v #28685 > >
00:24:39 v #28686 > > inl to_list_ seq =
00:24:39 v #28687 > >     seq
00:24:39 v #28688 > >     |> fold_ (fun acc x => x :: acc) [[]]
00:24:39 v #28689 > >     |> listm.rev
00:24:39 v #28690 > >
00:24:39 v #28691 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:24:39 v #28692 > > //// test
00:24:39 v #28693 > >
00:24:39 v #28694 > > listm.init 10i32 id
00:24:39 v #28695 > > |> from_list
00:24:39 v #28696 > > |> fun f (n : i32) => f n
00:24:39 v #28697 > > |> to_list
00:24:39 v #28698 > > |> _assert_eq (listm.init 10i32 id)
00:24:39 v #28699 > >
00:24:39 v #28700 > > ╭─[ 483.78ms - stdout ]────────────────────────────────────────────────────────╮
00:24:39 v #28701 > > │ __assert_eq / actual: UH0_1                                                  │
00:24:39 v #28702 > > │   (0,                                                                        │
00:24:39 v #28703 > > │    UH0_1                                                                     │
00:24:39 v #28704 > > │      (1,                                                                     │
00:24:39 v #28705 > > │       UH0_1                                                                  │
00:24:39 v #28706 > > │         (2,                                                                  │
00:24:39 v #28707 > > │          UH0_1                                                               │
00:24:39 v #28708 > > │            (3,                                                               │
00:24:39 v #28709 > > │             UH0_1                                                            │
00:24:39 v #28710 > > │               (4, UH0_1 (5, UH0_1 (6, UH0_1 (7, UH0_1 (8, UH0_1 (9,          │
00:24:39 v #28711 > > │ UH0_0)))))))))) / expected: UH0_1                                            │
00:24:39 v #28712 > > │   (0,                                                                        │
00:24:39 v #28713 > > │    UH0_1                                                                     │
00:24:39 v #28714 > > │      (1,                                                                     │
00:24:39 v #28715 > > │       UH0_1                                                                  │
00:24:39 v #28716 > > │         (2,                                                                  │
00:24:39 v #28717 > > │          UH0_1                                                               │
00:24:39 v #28718 > > │            (3,                                                               │
00:24:39 v #28719 > > │             UH0_1                                                            │
00:24:39 v #28720 > > │               (4, UH0_1 (5, UH0_1 (6, UH0_1 (7, UH0_1 (8, UH0_1 (9,          │
00:24:39 v #28721 > > │ UH0_0))))))))))                                                              │
00:24:39 v #28722 > > │                                                                              │
00:24:39 v #28723 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:24:39 v #28724 > >
00:24:39 v #28725 > > ── markdown ────────────────────────────────────────────────────────────────────
00:24:39 v #28726 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:24:39 v #28727 > > │ ### from_array                                                               │
00:24:39 v #28728 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:24:39 v #28729 > >
00:24:39 v #28730 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:24:39 v #28731 > > inl from_array forall dim {number; int} el. (array : a dim el) : seq dim el =
00:24:39 v #28732 > >     fun n =>
00:24:39 v #28733 > >         if n >= length array
00:24:39 v #28734 > >         then None
00:24:39 v #28735 > >         else index array n |> Some
00:24:40 v #28736 > >
00:24:40 v #28737 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:24:40 v #28738 > > //// test
00:24:40 v #28739 > >
00:24:40 v #28740 > > a ;[[ 1; 2; 3 ]]
00:24:40 v #28741 > > |> from_array
00:24:40 v #28742 > > |> try_item 1i32
00:24:40 v #28743 > > |> _assert_eq (Some 2i32)
00:24:40 v #28744 > >
00:24:40 v #28745 > > ╭─[ 533.81ms - stdout ]────────────────────────────────────────────────────────╮
00:24:40 v #28746 > > │ __assert_eq / actual: US0_0 2 / expected: US0_0 2                            │
00:24:40 v #28747 > > │                                                                              │
00:24:40 v #28748 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:24:40 v #28749 > >
00:24:40 v #28750 > > ── markdown ────────────────────────────────────────────────────────────────────
00:24:40 v #28751 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:24:40 v #28752 > > │ ### to_array                                                                 │
00:24:40 v #28753 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:24:40 v #28754 > >
00:24:40 v #28755 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:24:40 v #28756 > > inl to_array seq =
00:24:40 v #28757 > >     inl ar = a ;[[]] |> mut
00:24:40 v #28758 > >     ((), seq)
00:24:40 v #28759 > >     ||> fold fun _ x =>
00:24:40 v #28760 > >         ar <- *ar ++ a ;[[x]]
00:24:40 v #28761 > >     *ar
00:24:40 v #28762 > >
00:24:40 v #28763 > > inl to_array_ seq =
00:24:40 v #28764 > >     inl ar = a ;[[]] |> mut
00:24:40 v #28765 > >     ((), seq)
00:24:40 v #28766 > >     ||> fold_ fun _ x =>
00:24:40 v #28767 > >         ar <- *ar ++ a ;[[x]]
00:24:40 v #28768 > >     *ar
00:24:41 v #28769 > >
00:24:41 v #28770 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:24:41 v #28771 > > //// test
00:24:41 v #28772 > >
00:24:41 v #28773 > > listm.init 10i32 id
00:24:41 v #28774 > > |> from_list
00:24:41 v #28775 > > |> fun (x : i32 -> _) => x
00:24:41 v #28776 > > |> to_array
00:24:41 v #28777 > > |> _assert_eq (a ;[[ 0; 1; 2; 3; 4; 5; 6; 7; 8; 9 ]] : _ i32 _)
00:24:41 v #28778 > >
00:24:41 v #28779 > > ╭─[ 668.13ms - stdout ]────────────────────────────────────────────────────────╮
00:24:41 v #28780 > > │ __assert_eq / actual: [|0; 1; 2; 3; 4; 5; 6; 7; 8; 9|] / expected: [|0; 1;   │
00:24:41 v #28781 > > │ 2; 3; 4; 5; 6; 7; 8; 9|]                                                     │
00:24:41 v #28782 > > │                                                                              │
00:24:41 v #28783 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:24:41 v #28784 > >
00:24:41 v #28785 > > ── markdown ────────────────────────────────────────────────────────────────────
00:24:41 v #28786 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:24:41 v #28787 > > │ ### take_while                                                               │
00:24:41 v #28788 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:24:41 v #28789 > >
00:24:41 v #28790 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:24:41 v #28791 > > inl take_while cond seq =
00:24:41 v #28792 > >     inl rec loop acc i =
00:24:41 v #28793 > >         match seq i with
00:24:41 v #28794 > >         | Some st when cond st i => loop (st :: acc) (i + 1)
00:24:41 v #28795 > >         | _ => acc |> listm.rev
00:24:41 v #28796 > >     loop [[]] 0
00:24:42 v #28797 > >
00:24:42 v #28798 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:24:42 v #28799 > > //// test
00:24:42 v #28800 > >
00:24:42 v #28801 > > listm.init 10i32 id
00:24:42 v #28802 > > |> from_list
00:24:42 v #28803 > > |> take_while (fun n (_ : i32) => n < 5)
00:24:42 v #28804 > > |> listm'.sum
00:24:42 v #28805 > > |> _assert_eq 10
00:24:42 v #28806 > >
00:24:42 v #28807 > > ╭─[ 445.82ms - stdout ]────────────────────────────────────────────────────────╮
00:24:42 v #28808 > > │ __assert_eq / actual: 10 / expected: 10                                      │
00:24:42 v #28809 > > │                                                                              │
00:24:42 v #28810 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:24:42 v #28811 > >
00:24:42 v #28812 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:24:42 v #28813 > > //// test
00:24:42 v #28814 > >
00:24:42 v #28815 > > stream.new_finite_stream print_and_return 10i32
00:24:42 v #28816 > > |> flip stream.try_item
00:24:42 v #28817 > > |> take_while (fun n (_ : i32) => n < 5)
00:24:42 v #28818 > > |> listm'.sum
00:24:42 v #28819 > > |> _assert_eq 10
00:24:43 v #28820 > >
00:24:43 v #28821 > > ╭─[ 508.24ms - stdout ]────────────────────────────────────────────────────────╮
00:24:43 v #28822 > > │ print_and_return / x: 0                                                      │
00:24:43 v #28823 > > │ print_and_return / x: 1                                                      │
00:24:43 v #28824 > > │ print_and_return / x: 1                                                      │
00:24:43 v #28825 > > │ print_and_return / x: 2                                                      │
00:24:43 v #28826 > > │ print_and_return / x: 1                                                      │
00:24:43 v #28827 > > │ print_and_return / x: 2                                                      │
00:24:43 v #28828 > > │ print_and_return / x: 3                                                      │
00:24:43 v #28829 > > │ print_and_return / x: 1                                                      │
00:24:43 v #28830 > > │ print_and_return / x: 2                                                      │
00:24:43 v #28831 > > │ print_and_return / x: 3                                                      │
00:24:43 v #28832 > > │ print_and_return / x: 4                                                      │
00:24:43 v #28833 > > │ print_and_return / x: 1                                                      │
00:24:43 v #28834 > > │ print_and_return / x: 2                                                      │
00:24:43 v #28835 > > │ print_and_return / x: 3                                                      │
00:24:43 v #28836 > > │ print_and_return / x: 4                                                      │
00:24:43 v #28837 > > │ print_and_return / x: 5                                                      │
00:24:43 v #28838 > > │ __assert_eq / actual: 10 / expected: 10                                      │
00:24:43 v #28839 > > │                                                                              │
00:24:43 v #28840 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:24:43 v #28841 > >
00:24:43 v #28842 > > ── markdown ────────────────────────────────────────────────────────────────────
00:24:43 v #28843 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:24:43 v #28844 > > │ ### take_while_                                                              │
00:24:43 v #28845 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:24:43 v #28846 > >
00:24:43 v #28847 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:24:43 v #28848 > > inl take_while_ cond seq =
00:24:43 v #28849 > >     let rec loop acc i =
00:24:43 v #28850 > >         match seq i with
00:24:43 v #28851 > >         | Some st when cond st i => loop (st :: acc) (i + 1)
00:24:43 v #28852 > >         | _ => acc |> listm.rev
00:24:43 v #28853 > >     loop [[]] 0
00:24:43 v #28854 > >
00:24:43 v #28855 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:24:43 v #28856 > > //// test
00:24:43 v #28857 > >
00:24:43 v #28858 > > stream.new_infinite_stream_ print_and_return
00:24:43 v #28859 > > |> flip stream.try_item
00:24:43 v #28860 > > |> take_while_ (fun n (_ : i32) => n < 5i32)
00:24:43 v #28861 > > |> listm'.sum
00:24:43 v #28862 > > |> _assert_eq 10
00:24:44 v #28863 > >
00:24:44 v #28864 > > ╭─[ 538.07ms - stdout ]────────────────────────────────────────────────────────╮
00:24:44 v #28865 > > │ print_and_return / x: 0                                                      │
00:24:44 v #28866 > > │ print_and_return / x: 1                                                      │
00:24:44 v #28867 > > │ print_and_return / x: 1                                                      │
00:24:44 v #28868 > > │ print_and_return / x: 2                                                      │
00:24:44 v #28869 > > │ print_and_return / x: 1                                                      │
00:24:44 v #28870 > > │ print_and_return / x: 2                                                      │
00:24:44 v #28871 > > │ print_and_return / x: 3                                                      │
00:24:44 v #28872 > > │ print_and_return / x: 1                                                      │
00:24:44 v #28873 > > │ print_and_return / x: 2                                                      │
00:24:44 v #28874 > > │ print_and_return / x: 3                                                      │
00:24:44 v #28875 > > │ print_and_return / x: 4                                                      │
00:24:44 v #28876 > > │ print_and_return / x: 1                                                      │
00:24:44 v #28877 > > │ print_and_return / x: 2                                                      │
00:24:44 v #28878 > > │ print_and_return / x: 3                                                      │
00:24:44 v #28879 > > │ print_and_return / x: 4                                                      │
00:24:44 v #28880 > > │ print_and_return / x: 5                                                      │
00:24:44 v #28881 > > │ __assert_eq / actual: 10 / expected: 10                                      │
00:24:44 v #28882 > > │                                                                              │
00:24:44 v #28883 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:24:44 v #28884 > >
00:24:44 v #28885 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:24:44 v #28886 > > //// test
00:24:44 v #28887 > >
00:24:44 v #28888 > > stream.new_infinite_stream_ print_and_return
00:24:44 v #28889 > > |> stream.memoize
00:24:44 v #28890 > > |> fun list =>
00:24:44 v #28891 > >     inl list = list ()
00:24:44 v #28892 > >     fun n =>
00:24:44 v #28893 > >         list |> stream.try_item n
00:24:44 v #28894 > > |> take_while_ (fun n (_ : i32) => n < 5i32)
00:24:44 v #28895 > > |> listm'.sum
00:24:44 v #28896 > > |> _assert_eq 10
00:24:44 v #28897 > >
00:24:44 v #28898 > > ╭─[ 473.13ms - stdout ]────────────────────────────────────────────────────────╮
00:24:44 v #28899 > > │ print_and_return / x: 0                                                      │
00:24:44 v #28900 > > │ print_and_return / x: 1                                                      │
00:24:44 v #28901 > > │ print_and_return / x: 2                                                      │
00:24:44 v #28902 > > │ print_and_return / x: 3                                                      │
00:24:44 v #28903 > > │ print_and_return / x: 4                                                      │
00:24:44 v #28904 > > │ print_and_return / x: 5                                                      │
00:24:44 v #28905 > > │ __assert_eq / actual: 10 / expected: 10                                      │
00:24:44 v #28906 > > │                                                                              │
00:24:44 v #28907 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:24:44 v #28908 > >
00:24:44 v #28909 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:24:44 v #28910 > > //// test
00:24:44 v #28911 > >
00:24:44 v #28912 > > stream.new_finite_stream print_and_return 10i32
00:24:44 v #28913 > > |> stream.memoize
00:24:44 v #28914 > > |> fun list =>
00:24:44 v #28915 > >     inl list = list ()
00:24:44 v #28916 > >     fun n =>
00:24:44 v #28917 > >         list |> stream.try_item n
00:24:44 v #28918 > > |> take_while_ (fun n (_ : i32) => n < 5)
00:24:44 v #28919 > > |> listm'.sum
00:24:44 v #28920 > > |> _assert_eq 10
00:24:45 v #28921 > >
00:24:45 v #28922 > > ╭─[ 474.89ms - stdout ]────────────────────────────────────────────────────────╮
00:24:45 v #28923 > > │ print_and_return / x: 0                                                      │
00:24:45 v #28924 > > │ print_and_return / x: 1                                                      │
00:24:45 v #28925 > > │ print_and_return / x: 2                                                      │
00:24:45 v #28926 > > │ print_and_return / x: 3                                                      │
00:24:45 v #28927 > > │ print_and_return / x: 4                                                      │
00:24:45 v #28928 > > │ print_and_return / x: 5                                                      │
00:24:45 v #28929 > > │ __assert_eq / actual: 10 / expected: 10                                      │
00:24:45 v #28930 > > │                                                                              │
00:24:45 v #28931 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:24:45 v #28932 > >
00:24:45 v #28933 > > ── markdown ────────────────────────────────────────────────────────────────────
00:24:45 v #28934 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:24:45 v #28935 > > │ ### memoize                                                                  │
00:24:45 v #28936 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:24:45 v #28937 > >
00:24:45 v #28938 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:24:45 v #28939 > > inl memoize seq =
00:24:45 v #28940 > >     inl state = mut [[]]
00:24:45 v #28941 > >     fun n =>
00:24:45 v #28942 > >         match *state |> listm'.try_find (fun (n', _) => n' = n) with
00:24:45 v #28943 > >         | Some (_, v) => v
00:24:45 v #28944 > >         | None =>
00:24:45 v #28945 > >             inl new_state = seq n
00:24:45 v #28946 > >             state <- (n, new_state) :: *state
00:24:45 v #28947 > >             new_state
00:24:45 v #28948 > >
00:24:45 v #28949 > > inl memoize_ seq =
00:24:45 v #28950 > >     inl state = mut [[]]
00:24:45 v #28951 > >     fun n =>
00:24:45 v #28952 > >         match *state |> listm'.try_find_ (fun (n', _) => n' = n) with
00:24:45 v #28953 > >         | Some (_, v) => v
00:24:45 v #28954 > >         | None =>
00:24:45 v #28955 > >             inl new_state = seq n
00:24:45 v #28956 > >             state <- (n, new_state) :: *state
00:24:45 v #28957 > >             new_state
00:24:45 v #28958 > >
00:24:45 v #28959 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:24:45 v #28960 > > //// test
00:24:45 v #28961 > >
00:24:45 v #28962 > > inl seq =
00:24:45 v #28963 > >     fun n =>
00:24:45 v #28964 > >         n |> print_and_return |> Some
00:24:45 v #28965 > >     |> memoize_
00:24:45 v #28966 > >
00:24:45 v #28967 > > seq
00:24:45 v #28968 > > |> take_while_ (fun n (_ : i32) => n < 5)
00:24:45 v #28969 > > |> listm'.sum
00:24:45 v #28970 > > |> _assert_eq 10
00:24:45 v #28971 > >
00:24:45 v #28972 > > seq
00:24:45 v #28973 > > |> take_while_ (fun n _ => n < 5)
00:24:45 v #28974 > > |> listm'.sum
00:24:45 v #28975 > > |> _assert_eq 10
00:24:46 v #28976 > >
00:24:46 v #28977 > > ╭─[ 542.30ms - stdout ]────────────────────────────────────────────────────────╮
00:24:46 v #28978 > > │ print_and_return / x: 0                                                      │
00:24:46 v #28979 > > │ print_and_return / x: 1                                                      │
00:24:46 v #28980 > > │ print_and_return / x: 2                                                      │
00:24:46 v #28981 > > │ print_and_return / x: 3                                                      │
00:24:46 v #28982 > > │ print_and_return / x: 4                                                      │
00:24:46 v #28983 > > │ print_and_return / x: 5                                                      │
00:24:46 v #28984 > > │ __assert_eq / actual: 10 / expected: 10                                      │
00:24:46 v #28985 > > │ __assert_eq / actual: 10 / expected: 10                                      │
00:24:46 v #28986 > > │                                                                              │
00:24:46 v #28987 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:24:46 v #28988 > >
00:24:46 v #28989 > > ── markdown ────────────────────────────────────────────────────────────────────
00:24:46 v #28990 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:24:46 v #28991 > > │ ### iterate                                                                  │
00:24:46 v #28992 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:24:46 v #28993 > >
00:24:46 v #28994 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:24:46 v #28995 > > inl iterate f x0 num_steps =
00:24:46 v #28996 > >     inl rec loop x n =
00:24:46 v #28997 > >         if n <= 0
00:24:46 v #28998 > >         then x
00:24:46 v #28999 > >         else loop (f x) (n - 1)
00:24:46 v #29000 > >     loop x0 num_steps
00:24:46 v #29001 > >
00:24:46 v #29002 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:24:46 v #29003 > > //// test
00:24:46 v #29004 > >
00:24:46 v #29005 > > 10i32 |> iterate ((*) 2) 1i32
00:24:46 v #29006 > > |> _assert_eq 1024
00:24:46 v #29007 > >
00:24:46 v #29008 > > ╭─[ 369.86ms - stdout ]────────────────────────────────────────────────────────╮
00:24:46 v #29009 > > │ __assert_eq / actual: 1024 / expected: 1024                                  │
00:24:46 v #29010 > > │                                                                              │
00:24:46 v #29011 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:24:46 v #29012 > >
00:24:46 v #29013 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:24:46 v #29014 > > inl iterate_ f x0 num_steps =
00:24:46 v #29015 > >     let rec loop x n =
00:24:46 v #29016 > >         if n <= 0
00:24:46 v #29017 > >         then x
00:24:46 v #29018 > >         else loop (f x) (n - 1)
00:24:46 v #29019 > >     loop x0 num_steps
00:24:47 v #29020 > >
00:24:47 v #29021 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:24:47 v #29022 > > //// test
00:24:47 v #29023 > >
00:24:47 v #29024 > > 10i32 |> iterate_ ((*) 2) 1i32
00:24:47 v #29025 > > |> _assert_eq 1024
00:24:47 v #29026 > >
00:24:47 v #29027 > > ╭─[ 434.18ms - stdout ]────────────────────────────────────────────────────────╮
00:24:47 v #29028 > > │ __assert_eq / actual: 1024 / expected: 1024                                  │
00:24:47 v #29029 > > │                                                                              │
00:24:47 v #29030 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:24:47 v #29031 > >
00:24:47 v #29032 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:24:47 v #29033 > > inl iterate' f x0 num_steps =
00:24:47 v #29034 > >     listm.init num_steps id
00:24:47 v #29035 > >     |> listm.fold (fun x _ => f x) x0
00:24:48 v #29036 > >
00:24:48 v #29037 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:24:48 v #29038 > > //// test
00:24:48 v #29039 > >
00:24:48 v #29040 > > 10i32 |> iterate' ((*) 2) 1i32
00:24:48 v #29041 > > |> _assert_eq 1024
00:24:48 v #29042 > >
00:24:48 v #29043 > > ╭─[ 399.25ms - stdout ]────────────────────────────────────────────────────────╮
00:24:48 v #29044 > > │ __assert_eq / actual: 1024 / expected: 1024                                  │
00:24:48 v #29045 > > │                                                                              │
00:24:48 v #29046 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:24:48 v #29047 > >
00:24:48 v #29048 > > ── markdown ────────────────────────────────────────────────────────────────────
00:24:48 v #29049 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:24:48 v #29050 > > │ ### find_last                                                                │
00:24:48 v #29051 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:24:48 v #29052 > >
00:24:48 v #29053 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:24:48 v #29054 > > inl find_last forall item result. fold_fn fn target : option result =
00:24:48 v #29055 > >     fold_fn (fun (item : item) (result : option result) =>
00:24:48 v #29056 > >         match result with
00:24:48 v #29057 > >         | None => fn item
00:24:48 v #29058 > >         | result => result
00:24:48 v #29059 > >     ) target (None : option result)
00:24:48 v #29060 > >
00:24:48 v #29061 > > inl array_find_last forall item result. (fn : item -> option result) (target : a
00:24:48 v #29062 > > i32 item) : option result =
00:24:48 v #29063 > >     find_last am.foldBack fn target
00:24:48 v #29064 > >
00:24:48 v #29065 > > inl list_find_last forall item result. (fn : item -> option result) (target :
00:24:48 v #29066 > > list item) : option result =
00:24:48 v #29067 > >     find_last listm.foldBack fn target
00:24:48 v #29068 > >
00:24:48 v #29069 > > ── markdown ────────────────────────────────────────────────────────────────────
00:24:48 v #29070 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:24:48 v #29071 > > │ ## fsharp                                                                    │
00:24:48 v #29072 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:24:48 v #29073 > >
00:24:48 v #29074 > > ── markdown ────────────────────────────────────────────────────────────────────
00:24:48 v #29075 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:24:48 v #29076 > > │ ### seq'                                                                     │
00:24:48 v #29077 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:24:48 v #29078 > >
00:24:48 v #29079 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:24:48 v #29080 > > nominal seq' t = $"backend_switch `({ Fsharp : $'`t seq'; Python : $'list' })"
00:24:49 v #29081 > >
00:24:49 v #29082 > > ── markdown ────────────────────────────────────────────────────────────────────
00:24:49 v #29083 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:24:49 v #29084 > > │ ### length'                                                                  │
00:24:49 v #29085 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:24:49 v #29086 > >
00:24:49 v #29087 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:24:49 v #29088 > > inl length' forall t. (items : seq' t) : int =
00:24:49 v #29089 > >     backend_switch {
00:24:49 v #29090 > >         Fsharp = fun () => items |> $'Seq.length' : int
00:24:49 v #29091 > >         Python = fun () => $'len(!items)' : int
00:24:49 v #29092 > >     }
00:24:49 v #29093 > >
00:24:49 v #29094 > > ── markdown ────────────────────────────────────────────────────────────────────
00:24:49 v #29095 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:24:49 v #29096 > > │ ### to_list'                                                                 │
00:24:49 v #29097 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:24:49 v #29098 > >
00:24:49 v #29099 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:24:49 v #29100 > > inl to_list' forall t. (items : seq' t) : listm'.list' t =
00:24:49 v #29101 > >     backend_switch {
00:24:49 v #29102 > >         Fsharp = fun () => items |> $'Seq.toList' : listm'.list' t
00:24:49 v #29103 > >         Python = fun () => $'!items ' : listm'.list' t
00:24:49 v #29104 > >     }
00:24:50 v #29105 > >
00:24:50 v #29106 > > ── markdown ────────────────────────────────────────────────────────────────────
00:24:50 v #29107 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:24:50 v #29108 > > │ ### new_seq                                                                  │
00:24:50 v #29109 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:24:50 v #29110 > >
00:24:50 v #29111 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:24:50 v #29112 > > inl new_seq forall t. fn : seq' t =
00:24:50 v #29113 > >     backend_switch {
00:24:50 v #29114 > >         Fsharp = fun () =>
00:24:50 v #29115 > >             fun () =>
00:24:50 v #29116 > >                 $'seq {'
00:24:50 v #29117 > >                 fn |> indent
00:24:50 v #29118 > >                 $'}' : ()
00:24:50 v #29119 > >             |> let'
00:24:50 v #29120 > >             |> fun x => x : seq' t
00:24:50 v #29121 > >         Python = fun () =>
00:24:50 v #29122 > >             $'list(!fn())' : seq' t
00:24:50 v #29123 > >     }
00:24:50 v #29124 > >
00:24:50 v #29125 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:24:50 v #29126 > > //// test
00:24:50 v #29127 > > ///! fsharp
00:24:50 v #29128 > > ///! cuda
00:24:50 v #29129 > >
00:24:50 v #29130 > > fun () =>
00:24:50 v #29131 > >     "a" |> yield
00:24:50 v #29132 > >     "b" |> yield
00:24:50 v #29133 > > |> new_seq
00:24:50 v #29134 > > |> to_list'
00:24:50 v #29135 > > |> listm'.unbox
00:24:50 v #29136 > > |> _assert_eq [[ "a"; "b" ]]
00:24:51 v #29137 > >
00:24:51 v #29138 > > ╭─[ 1.31s - return value ]─────────────────────────────────────────────────────╮
00:24:51 v #29139 > > │ .py output (Cuda):                                                           │
00:24:51 v #29140 > > │ __assert_eq / actual: UH0_1(v0='a', v1=UH0_1(v0='b', v1=UH0_0())) /          │
00:24:51 v #29141 > > │ expected: UH0_1(v0='a', v1=UH0_1(v0='b', v1=UH0_0()))                        │
00:24:51 v #29142 > > │                                                                              │
00:24:51 v #29143 > > │                                                                              │
00:24:51 v #29144 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:24:51 v #29145 > >
00:24:51 v #29146 > > ╭─[ 1.31s - stdout ]───────────────────────────────────────────────────────────╮
00:24:51 v #29147 > > │ .fsx output:                                                                 │
00:24:51 v #29148 > > │ __assert_eq / actual: UH0_1 ("a", UH0_1 ("b", UH0_0)) / expected: UH0_1      │
00:24:51 v #29149 > > │ ("a", UH0_1 ("b", UH0_0))                                                    │
00:24:51 v #29150 > > │                                                                              │
00:24:51 v #29151 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:24:51 v #29152 > >
00:24:51 v #29153 > > ── markdown ────────────────────────────────────────────────────────────────────
00:24:51 v #29154 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:24:51 v #29155 > > │ ### of_array'                                                                │
00:24:51 v #29156 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:24:51 v #29157 > >
00:24:51 v #29158 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:24:51 v #29159 > > inl of_array' forall dim t. (items : a dim t) : seq' t =
00:24:51 v #29160 > >     backend_switch {
00:24:51 v #29161 > >         Fsharp = fun () =>
00:24:51 v #29162 > >             fun () =>
00:24:51 v #29163 > >                 $'for i = 0 to !items.Length - 1 do yield !items.[[i]]'
00:24:51 v #29164 > >             |> new_seq
00:24:51 v #29165 > >             |> fun x => x : seq' t
00:24:51 v #29166 > >         Python = fun () => $'[[item for item in !items]]' : seq' t
00:24:51 v #29167 > >     }
00:24:52 v #29168 > >
00:24:52 v #29169 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:24:52 v #29170 > > //// test
00:24:52 v #29171 > > ///! fsharp
00:24:52 v #29172 > > ///! cuda
00:24:52 v #29173 > > ///! rust
00:24:52 v #29174 > > ///! typescript
00:24:52 v #29175 > > ///! python
00:24:52 v #29176 > >
00:24:52 v #29177 > > (a ;[[ "a"; "b" ]] : _ int _)
00:24:52 v #29178 > > |> of_array'
00:24:52 v #29179 > > |> to_list'
00:24:52 v #29180 > > |> listm'.unbox
00:24:52 v #29181 > > |> _assert_eq [[ "a"; "b" ]]
00:24:56 v #29182 > >
00:24:56 v #29183 > > ╭─[ 4.19s - return value ]─────────────────────────────────────────────────────╮
00:24:56 v #29184 > > │ .py output (Cuda):                                                           │
00:24:56 v #29185 > > │ __assert_eq / actual: UH0_1(v0='a', v1=UH0_1(v0='b', v1=UH0_0())) /          │
00:24:56 v #29186 > > │ expected: UH0_1(v0='a', v1=UH0_1(v0='b', v1=UH0_0()))                        │
00:24:56 v #29187 > > │                                                                              │
00:24:56 v #29188 > > │ .rs output:                                                                  │
00:24:56 v #29189 > > │ __assert_eq / actual: UH0_1("a", UH0_1("b", UH0_0)) / expected: UH0_1("a",   │
00:24:56 v #29190 > > │ UH0_1("b", UH0_0))                                                           │
00:24:56 v #29191 > > │                                                                              │
00:24:56 v #29192 > > │ .ts output:                                                                  │
00:24:56 v #29193 > > │ __assert_eq / actual: UH0_1 (a, UH0_1 (b, UH0_0)) / expected: UH0_1 (a,      │
00:24:56 v #29194 > > │ UH0_1 (b, UH0_0))                                                            │
00:24:56 v #29195 > > │                                                                              │
00:24:56 v #29196 > > │ .py output:                                                                  │
00:24:56 v #29197 > > │ __assert_eq / actual: UH0_1 ("a", UH0_1 ("b", UH0_0)) / expected: UH0_1      │
00:24:56 v #29198 > > │ ("a", UH0_1 ("b", UH0_0))                                                    │
00:24:56 v #29199 > > │                                                                              │
00:24:56 v #29200 > > │                                                                              │
00:24:56 v #29201 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:24:56 v #29202 > >
00:24:56 v #29203 > > ╭─[ 4.19s - stdout ]───────────────────────────────────────────────────────────╮
00:24:56 v #29204 > > │ .fsx output:                                                                 │
00:24:56 v #29205 > > │ __assert_eq / actual: UH0_1 ("a", UH0_1 ("b", UH0_0)) / expected: UH0_1      │
00:24:56 v #29206 > > │ ("a", UH0_1 ("b", UH0_0))                                                    │
00:24:56 v #29207 > > │                                                                              │
00:24:56 v #29208 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:24:56 v #29209 > >
00:24:56 v #29210 > > ── markdown ────────────────────────────────────────────────────────────────────
00:24:56 v #29211 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:24:56 v #29212 > > │ ### of_array                                                                 │
00:24:56 v #29213 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:24:56 v #29214 > >
00:24:56 v #29215 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:24:56 v #29216 > > inl of_array forall dim t. (items : a dim t) : seq' t =
00:24:56 v #29217 > >     backend_switch {
00:24:56 v #29218 > >         Fsharp = fun () => $'!items |> Seq.ofArray' : seq' t
00:24:56 v #29219 > >         Python = fun () => $'list(iter(!items))' : seq' t
00:24:56 v #29220 > >     }
00:24:56 v #29221 > >
00:24:56 v #29222 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:24:56 v #29223 > > //// test
00:24:56 v #29224 > > ///! fsharp
00:24:56 v #29225 > > ///! cuda
00:24:56 v #29226 > > ///! rust
00:24:56 v #29227 > > ///! typescript
00:24:56 v #29228 > > ///! python
00:24:56 v #29229 > >
00:24:56 v #29230 > > (a ;[[ "a"; "b" ]] : _ int _)
00:24:56 v #29231 > > |> of_array
00:24:56 v #29232 > > |> to_list'
00:24:56 v #29233 > > |> listm'.unbox
00:24:56 v #29234 > > |> _assert_eq [[ "a"; "b" ]]
00:25:00 v #29235 > >
00:25:00 v #29236 > > ╭─[ 3.51s - return value ]─────────────────────────────────────────────────────╮
00:25:00 v #29237 > > │ .py output (Cuda):                                                           │
00:25:00 v #29238 > > │ __assert_eq / actual: UH0_1(v0='a', v1=UH0_1(v0='b', v1=UH0_0())) /          │
00:25:00 v #29239 > > │ expected: UH0_1(v0='a', v1=UH0_1(v0='b', v1=UH0_0()))                        │
00:25:00 v #29240 > > │                                                                              │
00:25:00 v #29241 > > │ .rs output:                                                                  │
00:25:00 v #29242 > > │ __assert_eq / actual: UH0_1("a", UH0_1("b", UH0_0)) / expected: UH0_1("a",   │
00:25:00 v #29243 > > │ UH0_1("b", UH0_0))                                                           │
00:25:00 v #29244 > > │                                                                              │
00:25:00 v #29245 > > │ .ts output:                                                                  │
00:25:00 v #29246 > > │ __assert_eq / actual: UH0_1 (a, UH0_1 (b, UH0_0)) / expected: UH0_1 (a,      │
00:25:00 v #29247 > > │ UH0_1 (b, UH0_0))                                                            │
00:25:00 v #29248 > > │                                                                              │
00:25:00 v #29249 > > │ .py output:                                                                  │
00:25:00 v #29250 > > │ __assert_eq / actual: UH0_1 ("a", UH0_1 ("b", UH0_0)) / expected: UH0_1      │
00:25:00 v #29251 > > │ ("a", UH0_1 ("b", UH0_0))                                                    │
00:25:00 v #29252 > > │                                                                              │
00:25:00 v #29253 > > │                                                                              │
00:25:00 v #29254 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:25:00 v #29255 > >
00:25:00 v #29256 > > ╭─[ 3.51s - stdout ]───────────────────────────────────────────────────────────╮
00:25:00 v #29257 > > │ .fsx output:                                                                 │
00:25:00 v #29258 > > │ __assert_eq / actual: UH0_1 ("a", UH0_1 ("b", UH0_0)) / expected: UH0_1      │
00:25:00 v #29259 > > │ ("a", UH0_1 ("b", UH0_0))                                                    │
00:25:00 v #29260 > > │                                                                              │
00:25:00 v #29261 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:25:00 v #29262 > >
00:25:00 v #29263 > > ── markdown ────────────────────────────────────────────────────────────────────
00:25:00 v #29264 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:25:00 v #29265 > > │ ### of_array_base                                                            │
00:25:00 v #29266 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:25:00 v #29267 > >
00:25:00 v #29268 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:25:00 v #29269 > > inl of_array_base forall t. (items : array_base t) : seq' t =
00:25:00 v #29270 > >     a items
00:25:00 v #29271 > >     |> fun x => x : _ int _
00:25:00 v #29272 > >     |> of_array
00:25:00 v #29273 > >
00:25:00 v #29274 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:25:00 v #29275 > > //// test
00:25:00 v #29276 > > ///! fsharp
00:25:00 v #29277 > > ///! cuda
00:25:00 v #29278 > > ///! rust
00:25:00 v #29279 > > ///! typescript
00:25:00 v #29280 > > ///! python
00:25:00 v #29281 > >
00:25:00 v #29282 > > ;[[ "a"; "b" ]]
00:25:00 v #29283 > > |> of_array_base
00:25:00 v #29284 > > |> to_list'
00:25:00 v #29285 > > |> listm'.unbox
00:25:00 v #29286 > > |> _assert_eq [[ "a"; "b" ]]
00:25:03 v #29287 > >
00:25:03 v #29288 > > ╭─[ 3.00s - return value ]─────────────────────────────────────────────────────╮
00:25:03 v #29289 > > │ .py output (Cuda):                                                           │
00:25:03 v #29290 > > │ __assert_eq / actual: UH0_1(v0='a', v1=UH0_1(v0='b', v1=UH0_0())) /          │
00:25:03 v #29291 > > │ expected: UH0_1(v0='a', v1=UH0_1(v0='b', v1=UH0_0()))                        │
00:25:03 v #29292 > > │                                                                              │
00:25:03 v #29293 > > │ .rs output:                                                                  │
00:25:03 v #29294 > > │ __assert_eq / actual: UH0_1("a", UH0_1("b", UH0_0)) / expected: UH0_1("a",   │
00:25:03 v #29295 > > │ UH0_1("b", UH0_0))                                                           │
00:25:03 v #29296 > > │                                                                              │
00:25:03 v #29297 > > │ .ts output:                                                                  │
00:25:03 v #29298 > > │ __assert_eq / actual: UH0_1 (a, UH0_1 (b, UH0_0)) / expected: UH0_1 (a,      │
00:25:03 v #29299 > > │ UH0_1 (b, UH0_0))                                                            │
00:25:03 v #29300 > > │                                                                              │
00:25:03 v #29301 > > │ .py output:                                                                  │
00:25:03 v #29302 > > │ __assert_eq / actual: UH0_1 ("a", UH0_1 ("b", UH0_0)) / expected: UH0_1      │
00:25:03 v #29303 > > │ ("a", UH0_1 ("b", UH0_0))                                                    │
00:25:03 v #29304 > > │                                                                              │
00:25:03 v #29305 > > │                                                                              │
00:25:03 v #29306 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:25:03 v #29307 > >
00:25:03 v #29308 > > ╭─[ 3.00s - stdout ]───────────────────────────────────────────────────────────╮
00:25:03 v #29309 > > │ .fsx output:                                                                 │
00:25:03 v #29310 > > │ __assert_eq / actual: UH0_1 ("a", UH0_1 ("b", UH0_0)) / expected: UH0_1      │
00:25:03 v #29311 > > │ ("a", UH0_1 ("b", UH0_0))                                                    │
00:25:03 v #29312 > > │                                                                              │
00:25:03 v #29313 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:25:03 v #29314 > >
00:25:03 v #29315 > > ── markdown ────────────────────────────────────────────────────────────────────
00:25:03 v #29316 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:25:03 v #29317 > > │ ### to_array'                                                                │
00:25:03 v #29318 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:25:03 v #29319 > >
00:25:03 v #29320 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:25:03 v #29321 > > inl to_array' forall dim t. (items : seq' t) : a dim t =
00:25:03 v #29322 > >     backend_switch {
00:25:03 v #29323 > >         Fsharp = fun () => items |> $'Seq.toArray' : a dim t
00:25:03 v #29324 > >         Python = fun () => $'(cp if cuda else np).array(!items)' : a dim t
00:25:03 v #29325 > >     }
00:25:04 v #29326 > >
00:25:04 v #29327 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:25:04 v #29328 > > //// test
00:25:04 v #29329 > > ///! fsharp
00:25:04 v #29330 > > ///! cuda
00:25:04 v #29331 > > ///! rust
00:25:04 v #29332 > > ///! typescript
00:25:04 v #29333 > > ///! python
00:25:04 v #29334 > >
00:25:04 v #29335 > > ;[[ "a"; "b" ]]
00:25:04 v #29336 > > |> of_array_base
00:25:04 v #29337 > > |> to_array'
00:25:04 v #29338 > > |> fun x => x : _ int _
00:25:04 v #29339 > > |> am'.to_list'
00:25:04 v #29340 > > |> listm'.unbox
00:25:04 v #29341 > > |> _assert_eq [[ "a"; "b" ]]
00:25:07 v #29342 > >
00:25:07 v #29343 > > ╭─[ 3.61s - return value ]─────────────────────────────────────────────────────╮
00:25:07 v #29344 > > │ .py output (Cuda):                                                           │
00:25:07 v #29345 > > │ __assert_eq / actual: UH0_1(v0=np.str_('a'), v1=UH0_1(v0=np.str_('b'),       │
00:25:07 v #29346 > > │ v1=UH0_0())) / expected: UH0_1(v0='a', v1=UH0_1(v0='b', v1=UH0_0()))         │
00:25:07 v #29347 > > │                                                                              │
00:25:07 v #29348 > > │ .rs output:                                                                  │
00:25:07 v #29349 > > │ __assert_eq / actual: UH0_1("a", UH0_1("b", UH0_0)) / expected: UH0_1("a",   │
00:25:07 v #29350 > > │ UH0_1("b", UH0_0))                                                           │
00:25:07 v #29351 > > │                                                                              │
00:25:07 v #29352 > > │ .ts output:                                                                  │
00:25:07 v #29353 > > │ __assert_eq / actual: UH0_1 (a, UH0_1 (b, UH0_0)) / expected: UH0_1 (a,      │
00:25:07 v #29354 > > │ UH0_1 (b, UH0_0))                                                            │
00:25:07 v #29355 > > │                                                                              │
00:25:07 v #29356 > > │ .py output:                                                                  │
00:25:07 v #29357 > > │ __assert_eq / actual: UH0_1 ("a", UH0_1 ("b", UH0_0)) / expected: UH0_1      │
00:25:07 v #29358 > > │ ("a", UH0_1 ("b", UH0_0))                                                    │
00:25:07 v #29359 > > │                                                                              │
00:25:07 v #29360 > > │                                                                              │
00:25:07 v #29361 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:25:07 v #29362 > >
00:25:07 v #29363 > > ╭─[ 3.62s - stdout ]───────────────────────────────────────────────────────────╮
00:25:07 v #29364 > > │ .fsx output:                                                                 │
00:25:07 v #29365 > > │ __assert_eq / actual: UH0_1 ("a", UH0_1 ("b", UH0_0)) / expected: UH0_1      │
00:25:07 v #29366 > > │ ("a", UH0_1 ("b", UH0_0))                                                    │
00:25:07 v #29367 > > │                                                                              │
00:25:07 v #29368 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:25:07 v #29369 > >
00:25:07 v #29370 > > ── markdown ────────────────────────────────────────────────────────────────────
00:25:07 v #29371 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:25:07 v #29372 > > │ ### of_list'                                                                 │
00:25:07 v #29373 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:25:07 v #29374 > >
00:25:07 v #29375 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:25:07 v #29376 > > inl of_list' forall t. (items : listm'.list' t) : seq' t =
00:25:07 v #29377 > >     backend_switch {
00:25:07 v #29378 > >         Fsharp = fun () =>
00:25:07 v #29379 > >             fun () =>
00:25:07 v #29380 > >                 $'for i = 0 to !items.Length - 1 do yield !items.[[i]]'
00:25:07 v #29381 > >             |> new_seq
00:25:07 v #29382 > >             |> fun x => x : seq' t
00:25:07 v #29383 > >         Python = fun () => $'!items ' : seq' t
00:25:07 v #29384 > >     }
00:25:08 v #29385 > >
00:25:08 v #29386 > > ── markdown ────────────────────────────────────────────────────────────────────
00:25:08 v #29387 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:25:08 v #29388 > > │ ### cast'                                                                    │
00:25:08 v #29389 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:25:08 v #29390 > >
00:25:08 v #29391 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:25:08 v #29392 > > inl cast' forall t u. (items : u) : seq' t =
00:25:08 v #29393 > >     backend_switch {
00:25:08 v #29394 > >         Fsharp = fun () => items |> $'Seq.cast' : seq' t
00:25:08 v #29395 > >         Python = fun () => $'list(!items)' : seq' t
00:25:08 v #29396 > >     }
00:25:08 v #29397 > >
00:25:08 v #29398 > > ── markdown ────────────────────────────────────────────────────────────────────
00:25:08 v #29399 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:25:08 v #29400 > > │ ### rev'                                                                     │
00:25:08 v #29401 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:25:08 v #29402 > >
00:25:08 v #29403 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:25:08 v #29404 > > inl rev'' forall t. (items : seq' t) : seq' t =
00:25:08 v #29405 > >     backend_switch {
00:25:08 v #29406 > >         Fsharp = fun () => items |> $'Seq.rev' : seq' t
00:25:08 v #29407 > >         Python = fun () => $'list(reversed(!items))' : seq' t
00:25:08 v #29408 > >     }
00:25:09 v #29409 > >
00:25:09 v #29410 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:25:09 v #29411 > > //// test
00:25:09 v #29412 > > ///! fsharp
00:25:09 v #29413 > > ///! cuda
00:25:09 v #29414 > > ///! rust
00:25:09 v #29415 > > ///! typescript
00:25:09 v #29416 > > ///! python
00:25:09 v #29417 > >
00:25:09 v #29418 > > [[ "a"; "b" ]]
00:25:09 v #29419 > > |> listm'.box
00:25:09 v #29420 > > |> of_list'
00:25:09 v #29421 > > |> rev''
00:25:09 v #29422 > > |> to_list'
00:25:09 v #29423 > > |> listm'.unbox
00:25:09 v #29424 > > |> _assert_eq [[ "b"; "a" ]]
00:25:13 v #29425 > >
00:25:13 v #29426 > > ╭─[ 3.83s - return value ]─────────────────────────────────────────────────────╮
00:25:13 v #29427 > > │ .py output (Cuda):                                                           │
00:25:13 v #29428 > > │ __assert_eq / actual: UH0_1(v0='b', v1=UH0_1(v0='a', v1=UH0_0())) /          │
00:25:13 v #29429 > > │ expected: UH0_1(v0='b', v1=UH0_1(v0='a', v1=UH0_0()))                        │
00:25:13 v #29430 > > │                                                                              │
00:25:13 v #29431 > > │ .rs output:                                                                  │
00:25:13 v #29432 > > │ __assert_eq / actual: UH0_1("b", UH0_1("a", UH0_0)) / expected: UH0_1("b",   │
00:25:13 v #29433 > > │ UH0_1("a", UH0_0))                                                           │
00:25:13 v #29434 > > │                                                                              │
00:25:13 v #29435 > > │ .ts output:                                                                  │
00:25:13 v #29436 > > │ __assert_eq / actual: UH0_1 (b, UH0_1 (a, UH0_0)) / expected: UH0_1 (b,      │
00:25:13 v #29437 > > │ UH0_1 (a, UH0_0))                                                            │
00:25:13 v #29438 > > │                                                                              │
00:25:13 v #29439 > > │ .py output:                                                                  │
00:25:13 v #29440 > > │ __assert_eq / actual: UH0_1 ("b", UH0_1 ("a", UH0_0)) / expected: UH0_1      │
00:25:13 v #29441 > > │ ("b", UH0_1 ("a", UH0_0))                                                    │
00:25:13 v #29442 > > │                                                                              │
00:25:13 v #29443 > > │                                                                              │
00:25:13 v #29444 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:25:13 v #29445 > >
00:25:13 v #29446 > > ╭─[ 3.83s - stdout ]───────────────────────────────────────────────────────────╮
00:25:13 v #29447 > > │ .fsx output:                                                                 │
00:25:13 v #29448 > > │ __assert_eq / actual: UH0_1 ("b", UH0_1 ("a", UH0_0)) / expected: UH0_1      │
00:25:13 v #29449 > > │ ("b", UH0_1 ("a", UH0_0))                                                    │
00:25:13 v #29450 > > │                                                                              │
00:25:13 v #29451 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:25:13 v #29452 > >
00:25:13 v #29453 > > ── markdown ────────────────────────────────────────────────────────────────────
00:25:13 v #29454 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:25:13 v #29455 > > │ ## rust                                                                      │
00:25:13 v #29456 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:25:13 v #29457 > >
00:25:13 v #29458 > > ── markdown ────────────────────────────────────────────────────────────────────
00:25:13 v #29459 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:25:13 v #29460 > > │ ### fuse                                                                     │
00:25:13 v #29461 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:25:13 v #29462 > >
00:25:13 v #29463 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:25:13 v #29464 > > nominal fuse t =
00:25:13 v #29465 > >     `(
00:25:13 v #29466 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:25:13 v #29467 > > Fable.Core.Emit(\"core::iter::Fuse<$0>\")>]]\n#endif\ntype core_iter_Fuse<'T> =
00:25:13 v #29468 > > class end"
00:25:13 v #29469 > >         $'' : $'core_iter_Fuse<`t>'
00:25:13 v #29470 > >     )
00:25:13 v #29471 > 00:00:49 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 52475 }
00:25:13 v #29472 > 00:00:49 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/polyglot/lib/spiral/seq.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/polyglot/lib/spiral/seq.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:25:14 v #29473 > 00:00:50 v #5 ! [NbConvertApp] Converting notebook c:/home/git/polyglot/lib/spiral/seq.dib.ipynb to html
00:25:14 v #29474 > 00:00:50 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:25:14 v #29475 > 00:00:50 v #7 !   validate(nb)
00:25:15 v #29476 > 00:00:51 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:25:15 v #29477 > 00:00:51 v #9 !   return _pygments_highlight(
00:25:16 v #29478 > 00:00:52 v #10 ! [NbConvertApp] Writing 398774 bytes to c:\home\git\polyglot\lib\spiral\seq.dib.html
00:25:16 v #29479 > 00:00:52 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 848 }
00:25:16 v #29480 > 00:00:52 d #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 848 }
00:25:16 v #29481 > 00:00:52 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/seq.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/seq.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:25:16 v #29482 > 00:00:52 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:25:16 v #29483 > 00:00:52 d #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:25:16 v #29484 > 00:00:52 d #16 spiral_builder.run / dib / { exit_code = 0; result_length = 53382 }
00:25:16 d #29485 runtime.execute_with_options_async / { exit_code = 0; output_length = 58104 }
00:25:16 d #35 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder.exe dib --path seq.dib --retries 3
00:25:16 d #29486 runtime.execute_with_options_async / { file_name = ../../workspace/target/release/spiral_builder.exe; arguments = US5_0 "dib --path env.dib --retries 3"; options = { command = ../../workspace/target/release/spiral_builder.exe dib --path env.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:25:16 v #29487 > 00:00:00 d #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "env.dib", "--retries", "3"])) }
00:25:16 v #29488 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/polyglot/lib/spiral/env.dib", "--output-path", "c:/home/git/polyglot/lib/spiral/env.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/polyglot/lib/spiral/env.dib" --output-path "c:/home/git/polyglot/lib/spiral/env.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:25:18 v #29489 > >
00:25:18 v #29490 > > ── markdown ────────────────────────────────────────────────────────────────────
00:25:18 v #29491 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:25:18 v #29492 > > │ # env                                                                        │
00:25:18 v #29493 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:25:21 v #29494 > >
00:25:21 v #29495 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:25:21 v #29496 > > //// test
00:25:21 v #29497 > >
00:25:21 v #29498 > > open testing
00:25:22 v #29499 > >
00:25:22 v #29500 > > ── markdown ────────────────────────────────────────────────────────────────────
00:25:22 v #29501 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:25:22 v #29502 > > │ ## rust                                                                      │
00:25:22 v #29503 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:25:22 v #29504 > >
00:25:22 v #29505 > > ── markdown ────────────────────────────────────────────────────────────────────
00:25:22 v #29506 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:25:22 v #29507 > > │ ### var_error                                                                │
00:25:22 v #29508 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:25:22 v #29509 > >
00:25:22 v #29510 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:25:22 v #29511 > > nominal var_error =
00:25:22 v #29512 > >     `(
00:25:22 v #29513 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:25:22 v #29514 > > Fable.Core.Emit(\"std::env::VarError\")>]]\n#endif\ntype std_env_VarError =
00:25:22 v #29515 > > class end"
00:25:22 v #29516 > >         $'' : $'std_env_VarError'
00:25:22 v #29517 > >     )
00:25:23 v #29518 > >
00:25:23 v #29519 > > ── markdown ────────────────────────────────────────────────────────────────────
00:25:23 v #29520 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:25:23 v #29521 > > │ ### get_environment_variable_comptime                                        │
00:25:23 v #29522 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:25:23 v #29523 > >
00:25:23 v #29524 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:25:23 v #29525 > > inl get_environment_variable_comptime (var : string) : string =
00:25:23 v #29526 > >     run_target_args (fun () => var) function
00:25:23 v #29527 > >         | Rust _ => fun var =>
00:25:23 v #29528 > >             open rust.rust_operators
00:25:23 v #29529 > >             !\($'"env\!(\\\"" + !var + "\\\")"')
00:25:23 v #29530 > >             |> sm'.ref_to_std_string
00:25:23 v #29531 > >             |> sm'.from_std_string
00:25:23 v #29532 > >         | target => fun _ => null ()
00:25:23 v #29533 > >
00:25:23 v #29534 > > ── markdown ────────────────────────────────────────────────────────────────────
00:25:23 v #29535 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:25:23 v #29536 > > │ ## python                                                                    │
00:25:23 v #29537 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:25:23 v #29538 > >
00:25:23 v #29539 > > ── markdown ────────────────────────────────────────────────────────────────────
00:25:23 v #29540 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:25:23 v #29541 > > │ ### os_environ                                                               │
00:25:23 v #29542 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:25:23 v #29543 > >
00:25:23 v #29544 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:25:23 v #29545 > > nominal os_environ = any
00:25:24 v #29546 > >
00:25:24 v #29547 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:25:24 v #29548 > > inl os_environ () : os_environ =
00:25:24 v #29549 > >     backend_switch {
00:25:24 v #29550 > >         Fsharp = fun () =>
00:25:24 v #29551 > >             open python_operators
00:25:24 v #29552 > >             global "type IOsEnviron = abstract environ: x: unit -> obj"
00:25:24 v #29553 > >             inl os : $'IOsEnviron' = python.import_all "os"
00:25:24 v #29554 > >             !\($'"!os.environ"') : os_environ
00:25:24 v #29555 > >         Python = fun () =>
00:25:24 v #29556 > >             global "import os"
00:25:24 v #29557 > >             $'os.environ' : os_environ
00:25:24 v #29558 > >     }
00:25:24 v #29559 > >
00:25:24 v #29560 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:25:24 v #29561 > > inl environ_get (key : string) (os_environ : os_environ) : string =
00:25:24 v #29562 > >     backend_switch {
00:25:24 v #29563 > >         Fsharp = fun () =>
00:25:24 v #29564 > >             open python_operators
00:25:24 v #29565 > >             !\\(key, $'"!os_environ.get($0)"') : string
00:25:24 v #29566 > >         Python = fun () =>
00:25:24 v #29567 > >             $'!os_environ.get(!key)' : string
00:25:24 v #29568 > >     }
00:25:24 v #29569 > >
00:25:24 v #29570 > > ── markdown ────────────────────────────────────────────────────────────────────
00:25:24 v #29571 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:25:24 v #29572 > > │ ## env                                                                       │
00:25:24 v #29573 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:25:24 v #29574 > >
00:25:24 v #29575 > > ── markdown ────────────────────────────────────────────────────────────────────
00:25:24 v #29576 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:25:24 v #29577 > > │ ### get_environment_variable                                                 │
00:25:24 v #29578 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:25:24 v #29579 > >
00:25:24 v #29580 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:25:24 v #29581 > > let get_environment_variable (var : string) : string =
00:25:24 v #29582 > >     run_target_args (fun () => var) function
00:25:24 v #29583 > >         | Rust (Native) => fun var =>
00:25:24 v #29584 > >             open rust.rust_operators
00:25:24 v #29585 > >             !\\(var, $'"std::env::var(&*$0)"')
00:25:24 v #29586 > >             |> fun x => x : resultm.result' sm'.std_string var_error
00:25:24 v #29587 > >             |> resultm.map' sm'.from_std_string
00:25:24 v #29588 > >             |> resultm.unwrap_or' (join "")
00:25:24 v #29589 > >         | Fsharp (Native) => fun var =>
00:25:24 v #29590 > >             var
00:25:24 v #29591 > >             |> $'System.Environment.GetEnvironmentVariable'
00:25:24 v #29592 > >             |> optionm'.of_obj
00:25:24 v #29593 > >             |> optionm'.unbox
00:25:24 v #29594 > >             |> optionm'.default_value ""
00:25:24 v #29595 > >         | TypeScript _ => fun var =>
00:25:24 v #29596 > >             open typescript_operators
00:25:24 v #29597 > >             !\\(var, $'"process.env[[$0]] ?? \\\"\\\""')
00:25:24 v #29598 > >         | Python _ | Cuda _ => fun var =>
00:25:24 v #29599 > >             os_environ ()
00:25:24 v #29600 > >             |> environ_get var
00:25:24 v #29601 > >             |> optionm'.of_obj
00:25:24 v #29602 > >             |> optionm'.unbox
00:25:24 v #29603 > >             |> optionm'.default_value ""
00:25:24 v #29604 > >         | target => fun var => failwith $'$"env.get_environment_variable
00:25:24 v #29605 > > target: {!target} / var: {!var}"'
00:25:25 v #29606 > >
00:25:25 v #29607 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:25:25 v #29608 > > //// test
00:25:25 v #29609 > > ///! fsharp
00:25:25 v #29610 > > ///! cuda
00:25:25 v #29611 > > ///! rust
00:25:25 v #29612 > > ///! typescript
00:25:25 v #29613 > > ///! python
00:25:25 v #29614 > >
00:25:25 v #29615 > > "PATH"
00:25:25 v #29616 > > |> get_environment_variable
00:25:25 v #29617 > > |> sm'.length
00:25:25 v #29618 > > |> fun x =>
00:25:25 v #29619 > >     if x > 0i32
00:25:25 v #29620 > >     then 1
00:25:25 v #29621 > >     else 0
00:25:25 v #29622 > >     |> _assert_ne 0i32
00:25:30 v #29623 > >
00:25:30 v #29624 > > ╭─[ 5.14s - return value ]─────────────────────────────────────────────────────╮
00:25:30 v #29625 > > │ .py output (Cuda):                                                           │
00:25:30 v #29626 > > │ __assert_ne / actual: 1 / expected: 0                                        │
00:25:30 v #29627 > > │                                                                              │
00:25:30 v #29628 > > │ .rs output:                                                                  │
00:25:30 v #29629 > > │ __assert_ne / actual: 1 / expected: 0                                        │
00:25:30 v #29630 > > │                                                                              │
00:25:30 v #29631 > > │ .ts output:                                                                  │
00:25:30 v #29632 > > │ __assert_ne / actual: 1 / expected: 0                                        │
00:25:30 v #29633 > > │                                                                              │
00:25:30 v #29634 > > │ .py output:                                                                  │
00:25:30 v #29635 > > │ __assert_ne / actual: 1 / expected: 0                                        │
00:25:30 v #29636 > > │                                                                              │
00:25:30 v #29637 > > │                                                                              │
00:25:30 v #29638 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:25:30 v #29639 > >
00:25:30 v #29640 > > ╭─[ 5.14s - stdout ]───────────────────────────────────────────────────────────╮
00:25:30 v #29641 > > │ .fsx output:                                                                 │
00:25:30 v #29642 > > │ __assert_ne / actual: 1 / expected: 0                                        │
00:25:30 v #29643 > > │                                                                              │
00:25:30 v #29644 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:25:30 v #29645 > >
00:25:30 v #29646 > > ── markdown ────────────────────────────────────────────────────────────────────
00:25:30 v #29647 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:25:30 v #29648 > > │ ### get_entry_assembly_name                                                  │
00:25:30 v #29649 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:25:30 v #29650 > >
00:25:30 v #29651 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:25:30 v #29652 > > let get_entry_assembly_name () : string =
00:25:30 v #29653 > >     run_target function
00:25:30 v #29654 > >         | Rust _ => fun () =>
00:25:30 v #29655 > >             (join "CARGO_PKG_NAME") |> get_environment_variable
00:25:30 v #29656 > >         | Fsharp _ => fun () =>
00:25:30 v #29657 > >             $'System.Reflection.Assembly.GetEntryAssembly().GetName().Name'
00:25:30 v #29658 > >         | target => fun () => failwith $'$"env.get_entry_assembly_name / target:
00:25:30 v #29659 > > {!target}"'
00:25:30 v #29660 > >
00:25:30 v #29661 > > ── markdown ────────────────────────────────────────────────────────────────────
00:25:30 v #29662 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:25:30 v #29663 > > │ ### append_path                                                              │
00:25:30 v #29664 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:25:30 v #29665 > >
00:25:30 v #29666 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:25:30 v #29667 > > inl append_path (path : string) : option string =
00:25:30 v #29668 > >     inl env_path = "PATH" |> get_environment_variable
00:25:30 v #29669 > >     if env_path = ""
00:25:30 v #29670 > >     then None
00:25:30 v #29671 > >     else
00:25:30 v #29672 > >         inl env_sep =
00:25:30 v #29673 > >             if platform.is_windows ()
00:25:30 v #29674 > >             then ";"
00:25:30 v #29675 > >             else ":"
00:25:30 v #29676 > >         Some $'$"{!path}{!env_sep}{!env_path}"'
00:25:31 v #29677 > 00:00:14 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 8865 }
00:25:31 v #29678 > 00:00:14 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/polyglot/lib/spiral/env.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/polyglot/lib/spiral/env.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:25:32 v #29679 > 00:00:15 v #5 ! [NbConvertApp] Converting notebook c:/home/git/polyglot/lib/spiral/env.dib.ipynb to html
00:25:32 v #29680 > 00:00:15 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:25:32 v #29681 > 00:00:15 v #7 !   validate(nb)
00:25:33 v #29682 > 00:00:16 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:25:33 v #29683 > 00:00:16 v #9 !   return _pygments_highlight(
00:25:33 v #29684 > 00:00:16 v #10 ! [NbConvertApp] Writing 294632 bytes to c:\home\git\polyglot\lib\spiral\env.dib.html
00:25:33 v #29685 > 00:00:16 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 848 }
00:25:33 v #29686 > 00:00:16 d #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 848 }
00:25:33 v #29687 > 00:00:16 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/env.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/env.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:25:33 v #29688 > 00:00:17 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:25:33 v #29689 > 00:00:17 d #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:25:33 v #29690 > 00:00:17 d #16 spiral_builder.run / dib / { exit_code = 0; result_length = 9772 }
00:25:33 d #29691 runtime.execute_with_options_async / { exit_code = 0; output_length = 12686 }
00:25:33 d #36 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder.exe dib --path env.dib --retries 3
00:25:33 d #29692 runtime.execute_with_options_async / { file_name = ../../workspace/target/release/spiral_builder.exe; arguments = US5_0 "dib --path python.dib --retries 3"; options = { command = ../../workspace/target/release/spiral_builder.exe dib --path python.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:25:33 v #29693 > 00:00:00 d #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "python.dib", "--retries", "3"])) }
00:25:33 v #29694 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/polyglot/lib/spiral/python.dib", "--output-path", "c:/home/git/polyglot/lib/spiral/python.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/polyglot/lib/spiral/python.dib" --output-path "c:/home/git/polyglot/lib/spiral/python.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:25:35 v #29695 > >
00:25:35 v #29696 > > ── markdown ────────────────────────────────────────────────────────────────────
00:25:35 v #29697 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:25:35 v #29698 > > │ # python                                                                     │
00:25:35 v #29699 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:25:35 v #29700 > >
00:25:35 v #29701 > > ── markdown ────────────────────────────────────────────────────────────────────
00:25:35 v #29702 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:25:35 v #29703 > > │ ### emit_expr                                                                │
00:25:35 v #29704 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:25:38 v #29705 > >
00:25:38 v #29706 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:25:38 v #29707 > > inl emit_expr forall a t. (args : a) (code : string) : t =
00:25:38 v #29708 > >     real
00:25:38 v #29709 > >         $'Fable.Core.PyInterop.emitPyExpr !args !code ' : t
00:25:40 v #29710 > >
00:25:40 v #29711 > > ── markdown ────────────────────────────────────────────────────────────────────
00:25:40 v #29712 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:25:40 v #29713 > > │ ###                                                                          │
00:25:40 v #29714 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:25:40 v #29715 > >
00:25:40 v #29716 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:25:40 v #29717 > > inl (~!\) forall t. (code : string) : t =
00:25:40 v #29718 > >     emit_expr () code
00:25:40 v #29719 > >
00:25:40 v #29720 > > ── markdown ────────────────────────────────────────────────────────────────────
00:25:40 v #29721 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:25:40 v #29722 > > │ ###                                                                          │
00:25:40 v #29723 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:25:40 v #29724 > >
00:25:40 v #29725 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:25:40 v #29726 > > inl (~!\\) forall t u. ((args : t), (code : string)) : u =
00:25:40 v #29727 > >     emit_expr args code
00:25:40 v #29728 > >
00:25:40 v #29729 > > ── markdown ────────────────────────────────────────────────────────────────────
00:25:40 v #29730 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:25:40 v #29731 > > │ ###                                                                          │
00:25:40 v #29732 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:25:40 v #29733 > >
00:25:40 v #29734 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:25:40 v #29735 > > inl import_all forall t. (file : string) : t =
00:25:40 v #29736 > >     real
00:25:40 v #29737 > >         $'Fable.Core.PyInterop.importAll !file ' : t
00:25:41 v #29738 > >
00:25:41 v #29739 > > ── markdown ────────────────────────────────────────────────────────────────────
00:25:41 v #29740 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:25:41 v #29741 > > │ ###                                                                          │
00:25:41 v #29742 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:25:41 v #29743 > >
00:25:41 v #29744 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:25:41 v #29745 > > inl import forall t. (name : string) (file : string) : t =
00:25:41 v #29746 > >     real
00:25:41 v #29747 > >         $'Fable.Core.PyInterop.import !name !file ' : t
00:25:41 v #29748 > 00:00:07 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 2867 }
00:25:41 v #29749 > 00:00:07 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/polyglot/lib/spiral/python.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/polyglot/lib/spiral/python.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:25:43 v #29750 > 00:00:09 v #5 ! [NbConvertApp] Converting notebook c:/home/git/polyglot/lib/spiral/python.dib.ipynb to html
00:25:43 v #29751 > 00:00:09 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:25:43 v #29752 > 00:00:09 v #7 !   validate(nb)
00:25:43 v #29753 > 00:00:09 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:25:43 v #29754 > 00:00:09 v #9 !   return _pygments_highlight(
00:25:43 v #29755 > 00:00:09 v #10 ! [NbConvertApp] Writing 278614 bytes to c:\home\git\polyglot\lib\spiral\python.dib.html
00:25:43 v #29756 > 00:00:10 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 854 }
00:25:43 v #29757 > 00:00:10 d #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 854 }
00:25:43 v #29758 > 00:00:10 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/python.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/python.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:25:44 v #29759 > 00:00:10 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:25:44 v #29760 > 00:00:10 d #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:25:44 v #29761 > 00:00:10 d #16 spiral_builder.run / dib / { exit_code = 0; result_length = 3780 }
00:25:44 d #29762 runtime.execute_with_options_async / { exit_code = 0; output_length = 6451 }
00:25:44 d #37 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder.exe dib --path python.dib --retries 3
00:25:44 d #29763 runtime.execute_with_options_async / { file_name = ../../workspace/target/release/spiral_builder.exe; arguments = US5_0 "dib --path typescript.dib --retries 3"; options = { command = ../../workspace/target/release/spiral_builder.exe dib --path typescript.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:25:44 v #29764 > 00:00:00 d #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "typescript.dib", "--retries", "3"])) }
00:25:44 v #29765 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/polyglot/lib/spiral/typescript.dib", "--output-path", "c:/home/git/polyglot/lib/spiral/typescript.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/polyglot/lib/spiral/typescript.dib" --output-path "c:/home/git/polyglot/lib/spiral/typescript.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:25:46 v #29766 > >
00:25:46 v #29767 > > ── markdown ────────────────────────────────────────────────────────────────────
00:25:46 v #29768 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:25:46 v #29769 > > │ # typescript                                                                 │
00:25:46 v #29770 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:25:46 v #29771 > >
00:25:46 v #29772 > > ── markdown ────────────────────────────────────────────────────────────────────
00:25:46 v #29773 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:25:46 v #29774 > > │ ### emit_expr                                                                │
00:25:46 v #29775 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:25:49 v #29776 > >
00:25:49 v #29777 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:25:49 v #29778 > > inl emit_expr forall a t. (args : a) (code : string) : t =
00:25:49 v #29779 > >     real
00:25:49 v #29780 > >         $'Fable.Core.JsInterop.emitJsExpr !args !code ' : t
00:25:50 v #29781 > >
00:25:50 v #29782 > > ── markdown ────────────────────────────────────────────────────────────────────
00:25:50 v #29783 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:25:50 v #29784 > > │ ###                                                                          │
00:25:50 v #29785 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:25:50 v #29786 > >
00:25:50 v #29787 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:25:50 v #29788 > > inl (~!\) forall t. (code : string) : t =
00:25:50 v #29789 > >     emit_expr () code
00:25:50 v #29790 > >
00:25:50 v #29791 > > ── markdown ────────────────────────────────────────────────────────────────────
00:25:50 v #29792 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:25:50 v #29793 > > │ ###                                                                          │
00:25:50 v #29794 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:25:50 v #29795 > >
00:25:50 v #29796 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:25:50 v #29797 > > inl (~!\\) forall t u. ((args : t), (code : string)) : u =
00:25:50 v #29798 > >     emit_expr args code
00:25:51 v #29799 > >
00:25:51 v #29800 > > ── markdown ────────────────────────────────────────────────────────────────────
00:25:51 v #29801 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:25:51 v #29802 > > │ ###                                                                          │
00:25:51 v #29803 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:25:51 v #29804 > >
00:25:51 v #29805 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:25:51 v #29806 > > inl import_all forall t. (file : string) : t =
00:25:51 v #29807 > >     real
00:25:51 v #29808 > >         $'Fable.Core.JsInterop.importAll !file ' : t
00:25:51 v #29809 > >
00:25:51 v #29810 > > ── markdown ────────────────────────────────────────────────────────────────────
00:25:51 v #29811 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:25:51 v #29812 > > │ ###                                                                          │
00:25:51 v #29813 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:25:51 v #29814 > >
00:25:51 v #29815 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:25:51 v #29816 > > inl import forall t. (name : string) (file : string) : t =
00:25:51 v #29817 > >     real
00:25:51 v #29818 > >         $'Fable.Core.JsInterop.import !name !file ' : t
00:25:52 v #29819 > 00:00:07 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 2867 }
00:25:52 v #29820 > 00:00:07 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/polyglot/lib/spiral/typescript.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/polyglot/lib/spiral/typescript.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:25:53 v #29821 > 00:00:09 v #5 ! [NbConvertApp] Converting notebook c:/home/git/polyglot/lib/spiral/typescript.dib.ipynb to html
00:25:53 v #29822 > 00:00:09 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:25:53 v #29823 > 00:00:09 v #7 !   validate(nb)
00:25:54 v #29824 > 00:00:09 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:25:54 v #29825 > 00:00:09 v #9 !   return _pygments_highlight(
00:25:54 v #29826 > 00:00:09 v #10 ! [NbConvertApp] Writing 278630 bytes to c:\home\git\polyglot\lib\spiral\typescript.dib.html
00:25:54 v #29827 > 00:00:10 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 862 }
00:25:54 v #29828 > 00:00:10 d #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 862 }
00:25:54 v #29829 > 00:00:10 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/typescript.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/typescript.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:25:54 v #29830 > 00:00:10 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:25:54 v #29831 > 00:00:10 d #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:25:54 v #29832 > 00:00:10 d #16 spiral_builder.run / dib / { exit_code = 0; result_length = 3788 }
00:25:54 d #29833 runtime.execute_with_options_async / { exit_code = 0; output_length = 6495 }
00:25:54 d #38 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder.exe dib --path typescript.dib --retries 3
00:25:54 d #29834 runtime.execute_with_options_async / { file_name = ../../workspace/target/release/spiral_builder.exe; arguments = US5_0 "dib --path file_system.dib --retries 3"; options = { command = ../../workspace/target/release/spiral_builder.exe dib --path file_system.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:25:54 v #29835 > 00:00:00 d #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "file_system.dib", "--retries", "3"])) }
00:25:54 v #29836 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/polyglot/lib/spiral/file_system.dib", "--output-path", "c:/home/git/polyglot/lib/spiral/file_system.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/polyglot/lib/spiral/file_system.dib" --output-path "c:/home/git/polyglot/lib/spiral/file_system.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:25:56 v #29837 > >
00:25:56 v #29838 > > ── markdown ────────────────────────────────────────────────────────────────────
00:25:56 v #29839 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:25:56 v #29840 > > │ # file_system                                                                │
00:25:56 v #29841 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:25:59 v #29842 > >
00:25:59 v #29843 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:25:59 v #29844 > > open sm'_operators
00:25:59 v #29845 > > open rust
00:25:59 v #29846 > > open rust_operators
00:26:00 v #29847 > >
00:26:00 v #29848 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:26:00 v #29849 > > //// test
00:26:00 v #29850 > >
00:26:00 v #29851 > > open testing
00:26:01 v #29852 > >
00:26:01 v #29853 > > ── markdown ────────────────────────────────────────────────────────────────────
00:26:01 v #29854 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:26:01 v #29855 > > │ ## fsharp                                                                    │
00:26:01 v #29856 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:26:01 v #29857 > >
00:26:01 v #29858 > > ── markdown ────────────────────────────────────────────────────────────────────
00:26:01 v #29859 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:26:01 v #29860 > > │ ### file_mode                                                                │
00:26:01 v #29861 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:26:01 v #29862 > >
00:26:01 v #29863 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:26:01 v #29864 > > nominal file_mode' = $'System.IO.FileMode'
00:26:01 v #29865 > >
00:26:01 v #29866 > > union file_mode =
00:26:01 v #29867 > >     | ModeCreateNew
00:26:01 v #29868 > >     | ModeCreate
00:26:01 v #29869 > >     | ModeOpen
00:26:01 v #29870 > >     | ModeOpenOrCreate
00:26:01 v #29871 > >     | Truncate
00:26:01 v #29872 > >     | Append
00:26:01 v #29873 > >
00:26:01 v #29874 > > inl file_mode = function
00:26:01 v #29875 > >     | ModeCreateNew => $'System.IO.FileMode.CreateNew' : file_mode'
00:26:01 v #29876 > >     | ModeCreate => $'System.IO.FileMode.Create' : file_mode'
00:26:01 v #29877 > >     | ModeOpen => $'System.IO.FileMode.Open' : file_mode'
00:26:01 v #29878 > >     | ModeOpenOrCreate => $'System.IO.FileMode.OpenOrCreate' : file_mode'
00:26:01 v #29879 > >     | Truncate => $'System.IO.FileMode.Truncate' : file_mode'
00:26:01 v #29880 > >     | Append => $'System.IO.FileMode.Append' : file_mode'
00:26:01 v #29881 > >
00:26:01 v #29882 > > ── markdown ────────────────────────────────────────────────────────────────────
00:26:01 v #29883 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:26:01 v #29884 > > │ ### file_access                                                              │
00:26:01 v #29885 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:26:01 v #29886 > >
00:26:01 v #29887 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:26:01 v #29888 > > nominal file_access' = $'System.IO.FileAccess'
00:26:01 v #29889 > >
00:26:01 v #29890 > > union file_access =
00:26:01 v #29891 > >     | AccessRead
00:26:01 v #29892 > >     | AccessWrite
00:26:01 v #29893 > >     | AccessReadWrite
00:26:01 v #29894 > >
00:26:01 v #29895 > > inl file_access = function
00:26:01 v #29896 > >     | AccessRead => $'System.IO.FileAccess.Read' : file_access'
00:26:01 v #29897 > >     | AccessWrite => $'System.IO.FileAccess.ReadWrite' : file_access'
00:26:01 v #29898 > >     | AccessReadWrite => $'System.IO.FileAccess.ReadWrite' : file_access'
00:26:01 v #29899 > >
00:26:01 v #29900 > > ── markdown ────────────────────────────────────────────────────────────────────
00:26:01 v #29901 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:26:01 v #29902 > > │ ### file_share                                                               │
00:26:01 v #29903 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:26:01 v #29904 > >
00:26:01 v #29905 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:26:01 v #29906 > > nominal file_share' = $'System.IO.FileShare'
00:26:01 v #29907 > >
00:26:01 v #29908 > > union file_share =
00:26:01 v #29909 > >     | ShareNone
00:26:01 v #29910 > >     | ShareRead
00:26:01 v #29911 > >     | ShareWrite
00:26:01 v #29912 > >     | ShareReadWrite
00:26:01 v #29913 > >     | ShareDelete
00:26:01 v #29914 > >
00:26:01 v #29915 > > inl file_share = function
00:26:01 v #29916 > >     | ShareNone => $'System.IO.FileShare.None' : file_share'
00:26:01 v #29917 > >     | ShareRead => $'System.IO.FileShare.Read' : file_share'
00:26:01 v #29918 > >     | ShareWrite => $'System.IO.FileShare.Write' : file_share'
00:26:01 v #29919 > >     | ShareReadWrite => $'System.IO.FileShare.ReadWrite' : file_share'
00:26:01 v #29920 > >     | ShareDelete => $'System.IO.FileShare.Delete' : file_share'
00:26:02 v #29921 > >
00:26:02 v #29922 > > ── markdown ────────────────────────────────────────────────────────────────────
00:26:02 v #29923 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:26:02 v #29924 > > │ ### file_stream                                                              │
00:26:02 v #29925 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:26:02 v #29926 > >
00:26:02 v #29927 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:26:02 v #29928 > > nominal file_stream' = $'System.IO.FileStream'
00:26:02 v #29929 > >
00:26:02 v #29930 > > inl file_stream (path : string) mode access share : file_stream' =
00:26:02 v #29931 > >     run_target function
00:26:02 v #29932 > >         | Fsharp (Native) => fun () =>
00:26:02 v #29933 > >             inl mode = mode |> file_mode
00:26:02 v #29934 > >             inl access = access |> file_access
00:26:02 v #29935 > >             inl share = share |> file_share
00:26:02 v #29936 > >             $'new System.IO.FileStream (!path, !mode, !access, !share)'
00:26:02 v #29937 > >         | _ => fun () => null ()
00:26:02 v #29938 > >
00:26:02 v #29939 > > ── markdown ────────────────────────────────────────────────────────────────────
00:26:02 v #29940 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:26:02 v #29941 > > │ ### file_info                                                                │
00:26:02 v #29942 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:26:02 v #29943 > >
00:26:02 v #29944 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:26:02 v #29945 > > nominal file_info =
00:26:02 v #29946 > >     `(
00:26:02 v #29947 > >         global "#if FABLE_COMPILER\ntype System_IO_FileInfo = unit\n#else\ntype
00:26:02 v #29948 > > System_IO_FileInfo = System.IO.FileInfo\n#endif\n"
00:26:02 v #29949 > >         $'' : $'System_IO_FileInfo'
00:26:02 v #29950 > >     )
00:26:02 v #29951 > >
00:26:02 v #29952 > > inl file_info (path : string) : file_info =
00:26:02 v #29953 > >     run_target function
00:26:02 v #29954 > >         | Fsharp (Native) => fun () => path |> $'`file_info '
00:26:02 v #29955 > >         | _ => fun () => null ()
00:26:02 v #29956 > >
00:26:02 v #29957 > > ── markdown ────────────────────────────────────────────────────────────────────
00:26:02 v #29958 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:26:02 v #29959 > > │ ### directory_info                                                           │
00:26:02 v #29960 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:26:02 v #29961 > >
00:26:02 v #29962 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:26:02 v #29963 > > nominal directory_info =
00:26:02 v #29964 > >     `(
00:26:02 v #29965 > >         global "#if FABLE_COMPILER\ntype System_IO_DirectoryInfo =
00:26:02 v #29966 > > unit\n#else\ntype System_IO_DirectoryInfo = System.IO.DirectoryInfo\n#endif\n"
00:26:02 v #29967 > >         $'' : $'System_IO_DirectoryInfo'
00:26:02 v #29968 > >     )
00:26:02 v #29969 > >
00:26:02 v #29970 > > inl directory_info (path : string) : directory_info =
00:26:02 v #29971 > >     run_target function
00:26:02 v #29972 > >         | Fsharp (Native) => fun () => path |> $'`directory_info '
00:26:02 v #29973 > >         | _ => fun () => null ()
00:26:03 v #29974 > >
00:26:03 v #29975 > > ── markdown ────────────────────────────────────────────────────────────────────
00:26:03 v #29976 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:26:03 v #29977 > > │ ### directory_info_exists                                                    │
00:26:03 v #29978 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:26:03 v #29979 > >
00:26:03 v #29980 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:26:03 v #29981 > > inl directory_info_exists (info : directory_info) : bool =
00:26:03 v #29982 > >     run_target function
00:26:03 v #29983 > >         | Fsharp (Native) => fun () => $'!info.Exists'
00:26:03 v #29984 > >         | _ => fun () => null ()
00:26:03 v #29985 > >
00:26:03 v #29986 > > ── markdown ────────────────────────────────────────────────────────────────────
00:26:03 v #29987 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:26:03 v #29988 > > │ ### directory_info_creation_time                                             │
00:26:03 v #29989 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:26:03 v #29990 > >
00:26:03 v #29991 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:26:03 v #29992 > > inl directory_info_creation_time (info : directory_info) : date_time.date_time =
00:26:03 v #29993 > >     run_target function
00:26:03 v #29994 > >         | Fsharp (Native) => fun () => $'!info.CreationTime'
00:26:03 v #29995 > >         | _ => fun () => null ()
00:26:04 v #29996 > >
00:26:04 v #29997 > > ── markdown ────────────────────────────────────────────────────────────────────
00:26:04 v #29998 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:26:04 v #29999 > > │ ### directory_info_name                                                      │
00:26:04 v #30000 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:26:04 v #30001 > >
00:26:04 v #30002 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:26:04 v #30003 > > inl directory_info_name (info : directory_info) : string =
00:26:04 v #30004 > >     run_target function
00:26:04 v #30005 > >         | Fsharp (Native) => fun () => $'!info.Name'
00:26:04 v #30006 > >         | _ => fun () => null ()
00:26:04 v #30007 > >
00:26:04 v #30008 > > ── markdown ────────────────────────────────────────────────────────────────────
00:26:04 v #30009 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:26:04 v #30010 > > │ ### directory_info_full_name                                                 │
00:26:04 v #30011 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:26:04 v #30012 > >
00:26:04 v #30013 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:26:04 v #30014 > > inl directory_info_full_name (info : directory_info) : string =
00:26:04 v #30015 > >     run_target function
00:26:04 v #30016 > >         | Fsharp (Native) => fun () => $'!info.FullName'
00:26:04 v #30017 > >         | _ => fun () => null ()
00:26:05 v #30018 > >
00:26:05 v #30019 > > ── markdown ────────────────────────────────────────────────────────────────────
00:26:05 v #30020 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:26:05 v #30021 > > │ ### file_attributes                                                          │
00:26:05 v #30022 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:26:05 v #30023 > >
00:26:05 v #30024 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:26:05 v #30025 > > nominal file_attributes = $'System.IO.FileAttributes'
00:26:05 v #30026 > >
00:26:05 v #30027 > > ── markdown ────────────────────────────────────────────────────────────────────
00:26:05 v #30028 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:26:05 v #30029 > > │ ### directory_info_attributes                                                │
00:26:05 v #30030 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:26:05 v #30031 > >
00:26:05 v #30032 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:26:05 v #30033 > > inl directory_info_attributes (info : directory_info) : file_attributes =
00:26:05 v #30034 > >     run_target function
00:26:05 v #30035 > >         | Fsharp (Native) => fun () => $'!info.Attributes'
00:26:05 v #30036 > >         | _ => fun () => null ()
00:26:05 v #30037 > >
00:26:05 v #30038 > > ── markdown ────────────────────────────────────────────────────────────────────
00:26:05 v #30039 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:26:05 v #30040 > > │ ### file_attributes_reparse_point                                            │
00:26:05 v #30041 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:26:05 v #30042 > >
00:26:05 v #30043 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:26:05 v #30044 > > inl file_attributes_reparse_point () : file_attributes =
00:26:05 v #30045 > >     run_target function
00:26:05 v #30046 > >         | Fsharp (Native) => fun () => $'`file_attributes.ReparsePoint'
00:26:05 v #30047 > >         | _ => fun () => null ()
00:26:06 v #30048 > >
00:26:06 v #30049 > > ── markdown ────────────────────────────────────────────────────────────────────
00:26:06 v #30050 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:26:06 v #30051 > > │ ### file_attributes_has_flag                                                 │
00:26:06 v #30052 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:26:06 v #30053 > >
00:26:06 v #30054 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:26:06 v #30055 > > inl file_attributes_has_flag (flag : file_attributes) (file_attributes :
00:26:06 v #30056 > > file_attributes) : bool =
00:26:06 v #30057 > >     run_target function
00:26:06 v #30058 > >         | Fsharp (Native) => fun () => $'!file_attributes.HasFlag !flag '
00:26:06 v #30059 > >         | _ => fun () => null ()
00:26:06 v #30060 > >
00:26:06 v #30061 > > ── markdown ────────────────────────────────────────────────────────────────────
00:26:06 v #30062 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:26:06 v #30063 > > │ ### create_directory                                                         │
00:26:06 v #30064 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:26:06 v #30065 > >
00:26:06 v #30066 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:26:06 v #30067 > > inl create_directory (path : string) : directory_info =
00:26:06 v #30068 > >     run_target function
00:26:06 v #30069 > >         | Fsharp (Native) => fun () => path |>
00:26:06 v #30070 > > $'System.IO.Directory.CreateDirectory'
00:26:06 v #30071 > >         | _ => fun () => null ()
00:26:07 v #30072 > >
00:26:07 v #30073 > > ── markdown ────────────────────────────────────────────────────────────────────
00:26:07 v #30074 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:26:07 v #30075 > > │ ### directory_get_files                                                      │
00:26:07 v #30076 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:26:07 v #30077 > >
00:26:07 v #30078 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:26:07 v #30079 > > inl directory_get_files (path : string) : array_base string =
00:26:07 v #30080 > >     run_target function
00:26:07 v #30081 > >         | Fsharp (Native) => fun () => path |> $'System.IO.Directory.GetFiles'
00:26:07 v #30082 > >         | _ => fun () => null ()
00:26:07 v #30083 > >
00:26:07 v #30084 > > ── markdown ────────────────────────────────────────────────────────────────────
00:26:07 v #30085 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:26:07 v #30086 > > │ ### file_move                                                                │
00:26:07 v #30087 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:26:07 v #30088 > >
00:26:07 v #30089 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:26:07 v #30090 > > inl file_move (new_path : string) (old_path : string) : () =
00:26:07 v #30091 > >     run_target function
00:26:07 v #30092 > >         | Fsharp (Native) => fun () => $'System.IO.File.Move (!old_path,
00:26:07 v #30093 > > !new_path)'
00:26:07 v #30094 > >         | _ => fun () => ()
00:26:07 v #30095 > >
00:26:07 v #30096 > > ── markdown ────────────────────────────────────────────────────────────────────
00:26:07 v #30097 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:26:07 v #30098 > > │ ### read_all_text_async                                                      │
00:26:07 v #30099 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:26:07 v #30100 > >
00:26:07 v #30101 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:26:07 v #30102 > > inl read_all_text_async (path : string) : _ string =
00:26:07 v #30103 > >     run_target function
00:26:07 v #30104 > >         | Fsharp (Native) => fun () => path |>
00:26:07 v #30105 > > $'System.IO.File.ReadAllTextAsync' |> async.await_task
00:26:07 v #30106 > >         | _ => fun () => null ()
00:26:08 v #30107 > >
00:26:08 v #30108 > > ── markdown ────────────────────────────────────────────────────────────────────
00:26:08 v #30109 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:26:08 v #30110 > > │ ### write_all_text_async                                                     │
00:26:08 v #30111 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:26:08 v #30112 > >
00:26:08 v #30113 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:26:08 v #30114 > > inl write_all_text_async (path : string) (text : string) : _ () =
00:26:08 v #30115 > >     run_target function
00:26:08 v #30116 > >         | Fsharp (Native) => fun () => $'System.IO.File.WriteAllTextAsync
00:26:08 v #30117 > > (!path, !text)' |> async.await_task
00:26:08 v #30118 > >         | _ => fun () => null ()
00:26:08 v #30119 > >
00:26:08 v #30120 > > ── markdown ────────────────────────────────────────────────────────────────────
00:26:08 v #30121 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:26:08 v #30122 > > │ ### file_system_info                                                         │
00:26:08 v #30123 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:26:08 v #30124 > >
00:26:08 v #30125 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:26:08 v #30126 > > nominal file_system_info = $'System.IO.FileSystemInfo'
00:26:09 v #30127 > >
00:26:09 v #30128 > > ── markdown ────────────────────────────────────────────────────────────────────
00:26:09 v #30129 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:26:09 v #30130 > > │ ### get_source_directory                                                     │
00:26:09 v #30131 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:26:09 v #30132 > >
00:26:09 v #30133 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:26:09 v #30134 > > inl get_source_directory () =
00:26:09 v #30135 > >     $'__SOURCE_DIRECTORY__' : string
00:26:09 v #30136 > >
00:26:09 v #30137 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:26:09 v #30138 > > //// test
00:26:09 v #30139 > >
00:26:09 v #30140 > > get_source_directory ()
00:26:09 v #30141 > > |> directory_info
00:26:09 v #30142 > > |> directory_info_name
00:26:09 v #30143 > > |> _assert_eq "spiral"
00:26:10 v #30144 > >
00:26:10 v #30145 > > ╭─[ 1.16s - stdout ]───────────────────────────────────────────────────────────╮
00:26:10 v #30146 > > │ __assert_eq / actual: "spiral" / expected: "spiral"                          │
00:26:10 v #30147 > > │                                                                              │
00:26:10 v #30148 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:26:10 v #30149 > >
00:26:10 v #30150 > > ── markdown ────────────────────────────────────────────────────────────────────
00:26:10 v #30151 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:26:10 v #30152 > > │ ## rust                                                                      │
00:26:10 v #30153 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:26:10 v #30154 > >
00:26:10 v #30155 > > ── markdown ────────────────────────────────────────────────────────────────────
00:26:10 v #30156 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:26:10 v #30157 > > │ ### display                                                                  │
00:26:10 v #30158 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:26:10 v #30159 > >
00:26:10 v #30160 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:26:10 v #30161 > > nominal display =
00:26:10 v #30162 > >     `(
00:26:10 v #30163 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:26:10 v #30164 > > Fable.Core.Emit(\"std::path::Display\")>]]\ntype std_path_Display = class
00:26:10 v #30165 > > end\n#else\ntype std_path_Display = string\n#endif\n"
00:26:10 v #30166 > >         $'' : $'std_path_Display'
00:26:10 v #30167 > >     )
00:26:11 v #30168 > >
00:26:11 v #30169 > > ── markdown ────────────────────────────────────────────────────────────────────
00:26:11 v #30170 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:26:11 v #30171 > > │ ### path                                                                     │
00:26:11 v #30172 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:26:11 v #30173 > >
00:26:11 v #30174 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:26:11 v #30175 > > nominal path =
00:26:11 v #30176 > >     `(
00:26:11 v #30177 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:26:11 v #30178 > > Fable.Core.Emit(\"std::path::Path\")>]]\n#endif\ntype std_path_Path = class end"
00:26:11 v #30179 > >         $'' : $'std_path_Path'
00:26:11 v #30180 > >     )
00:26:11 v #30181 > >
00:26:11 v #30182 > > ── markdown ────────────────────────────────────────────────────────────────────
00:26:11 v #30183 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:26:11 v #30184 > > │ ### path_buf                                                                 │
00:26:11 v #30185 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:26:11 v #30186 > >
00:26:11 v #30187 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:26:11 v #30188 > > nominal path_buf =
00:26:11 v #30189 > >     `(
00:26:11 v #30190 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:26:11 v #30191 > > Fable.Core.Emit(\"std::path::PathBuf\")>]]\ntype std_path_PathBuf = class
00:26:11 v #30192 > > end\n#else\ntype std_path_PathBuf = string\n#endif\n"
00:26:11 v #30193 > >         $'' : $'std_path_PathBuf'
00:26:11 v #30194 > >     )
00:26:11 v #30195 > >
00:26:11 v #30196 > > ── markdown ────────────────────────────────────────────────────────────────────
00:26:11 v #30197 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:26:11 v #30198 > > │ ### new_path_buf                                                             │
00:26:11 v #30199 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:26:11 v #30200 > >
00:26:11 v #30201 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:26:11 v #30202 > > inl new_path_buf (path : sm'.std_string) : path_buf =
00:26:11 v #30203 > >     run_target function
00:26:11 v #30204 > >         | Rust _ => fun () => !\\(path, $'"std::path::PathBuf::from($0)"')
00:26:11 v #30205 > >         | _ => fun () => path |> unbox
00:26:12 v #30206 > >
00:26:12 v #30207 > > ── markdown ────────────────────────────────────────────────────────────────────
00:26:12 v #30208 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:26:12 v #30209 > > │ ### path_buf_from                                                            │
00:26:12 v #30210 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:26:12 v #30211 > >
00:26:12 v #30212 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:26:12 v #30213 > > inl path_buf_from (path : rust.box path) : path_buf =
00:26:12 v #30214 > >     !\\(path, $'"std::path::PathBuf::from($0)"')
00:26:12 v #30215 > >
00:26:12 v #30216 > > ── markdown ────────────────────────────────────────────────────────────────────
00:26:12 v #30217 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:26:12 v #30218 > > │ ### path_buf_join                                                            │
00:26:12 v #30219 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:26:12 v #30220 > >
00:26:12 v #30221 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:26:12 v #30222 > > inl path_buf_join (s : string) (path_buf : path_buf) : path_buf =
00:26:12 v #30223 > >     !\\((path_buf, s |> sm'.to_std_string), $'"$0.join($1)"')
00:26:13 v #30224 > >
00:26:13 v #30225 > > ── markdown ────────────────────────────────────────────────────────────────────
00:26:13 v #30226 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:26:13 v #30227 > > │ ### path_buf_strip_prefix                                                    │
00:26:13 v #30228 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:26:13 v #30229 > >
00:26:13 v #30230 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:26:13 v #30231 > > inl path_buf_strip_prefix (s : string) (path_buf : path_buf) : path_buf =
00:26:13 v #30232 > >     !\\((path_buf, s |> sm'.to_std_string),
00:26:13 v #30233 > > $'"$0.strip_prefix($1).unwrap().to_path_buf()"')
00:26:13 v #30234 > >
00:26:13 v #30235 > > ── markdown ────────────────────────────────────────────────────────────────────
00:26:13 v #30236 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:26:13 v #30237 > > │ ### path_display                                                             │
00:26:13 v #30238 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:26:13 v #30239 > >
00:26:13 v #30240 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:26:13 v #30241 > > inl path_display (path : rust.ref path) : display =
00:26:13 v #30242 > >     !\\(path, $'"$0.display()"')
00:26:13 v #30243 > >
00:26:13 v #30244 > > ── markdown ────────────────────────────────────────────────────────────────────
00:26:13 v #30245 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:26:13 v #30246 > > │ ### path_buf_display                                                         │
00:26:13 v #30247 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:26:13 v #30248 > >
00:26:13 v #30249 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:26:13 v #30250 > > inl path_buf_display (path_buf : path_buf) : display =
00:26:13 v #30251 > >     run_target_args (fun () => path_buf) function
00:26:13 v #30252 > >         | Rust _ => fun path_buf => !\\(path_buf, $'"$0.display()"')
00:26:13 v #30253 > >         | _ => fun path_buf => path_buf |> unbox
00:26:14 v #30254 > >
00:26:14 v #30255 > > ── markdown ────────────────────────────────────────────────────────────────────
00:26:14 v #30256 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:26:14 v #30257 > > │ ### path_buf_file_name                                                       │
00:26:14 v #30258 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:26:14 v #30259 > >
00:26:14 v #30260 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:26:14 v #30261 > > inl path_buf_file_name (path : path_buf) : optionm'.option' (rust.ref
00:26:14 v #30262 > > sm'.os_str) =
00:26:14 v #30263 > >     !\\(path, $'"$0.file_name()"')
00:26:14 v #30264 > >
00:26:14 v #30265 > > ── markdown ────────────────────────────────────────────────────────────────────
00:26:14 v #30266 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:26:14 v #30267 > > │ ### path_buf_exists                                                          │
00:26:14 v #30268 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:26:14 v #30269 > >
00:26:14 v #30270 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:26:14 v #30271 > > inl path_buf_exists (path_buf : path_buf) : bool =
00:26:14 v #30272 > >     !\\(path_buf, $'"$0.exists()"')
00:26:15 v #30273 > >
00:26:15 v #30274 > > ── markdown ────────────────────────────────────────────────────────────────────
00:26:15 v #30275 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:26:15 v #30276 > > │ ### path_buf_is_dir                                                          │
00:26:15 v #30277 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:26:15 v #30278 > >
00:26:15 v #30279 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:26:15 v #30280 > > inl path_buf_is_dir (path_buf : path_buf) : bool =
00:26:15 v #30281 > >     !\\(path_buf, $'"$0.is_dir()"')
00:26:15 v #30282 > >
00:26:15 v #30283 > > ── markdown ────────────────────────────────────────────────────────────────────
00:26:15 v #30284 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:26:15 v #30285 > > │ ### path_buf_is_file                                                         │
00:26:15 v #30286 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:26:15 v #30287 > >
00:26:15 v #30288 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:26:15 v #30289 > > inl path_buf_is_file (path_buf : path_buf) : bool =
00:26:15 v #30290 > >     !\\(path_buf, $'"$0.is_file()"')
00:26:16 v #30291 > >
00:26:16 v #30292 > > ── markdown ────────────────────────────────────────────────────────────────────
00:26:16 v #30293 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:26:16 v #30294 > > │ ### path_buf_is_symlink                                                      │
00:26:16 v #30295 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:26:16 v #30296 > >
00:26:16 v #30297 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:26:16 v #30298 > > inl path_buf_is_symlink (path_buf : path_buf) : bool =
00:26:16 v #30299 > >     !\\(path_buf, $'"$0.is_symlink()"')
00:26:16 v #30300 > >
00:26:16 v #30301 > > ── markdown ────────────────────────────────────────────────────────────────────
00:26:16 v #30302 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:26:16 v #30303 > > │ ### path_buf_parent                                                          │
00:26:16 v #30304 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:26:16 v #30305 > >
00:26:16 v #30306 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:26:16 v #30307 > > inl path_buf_parent (path_buf : path_buf) : optionm'.option' path_buf =
00:26:16 v #30308 > >     !\\(path_buf, $'"$0.parent().map(std::path::PathBuf::from)"')
00:26:16 v #30309 > >
00:26:16 v #30310 > > ── markdown ────────────────────────────────────────────────────────────────────
00:26:16 v #30311 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:26:16 v #30312 > > │ ### dir_entry                                                                │
00:26:16 v #30313 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:26:16 v #30314 > >
00:26:16 v #30315 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:26:16 v #30316 > > nominal dir_entry =
00:26:16 v #30317 > >     `(
00:26:16 v #30318 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:26:16 v #30319 > > Fable.Core.Emit(\"async_walkdir::DirEntry\")>]]\n#endif\ntype
00:26:16 v #30320 > > async_walkdir_DirEntry = class end"
00:26:16 v #30321 > >         $'' : $'async_walkdir_DirEntry'
00:26:16 v #30322 > >     )
00:26:17 v #30323 > >
00:26:17 v #30324 > > ── markdown ────────────────────────────────────────────────────────────────────
00:26:17 v #30325 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:26:17 v #30326 > > │ ### walk_dir                                                                 │
00:26:17 v #30327 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:26:17 v #30328 > >
00:26:17 v #30329 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:26:17 v #30330 > > nominal walk_dir =
00:26:17 v #30331 > >     `(
00:26:17 v #30332 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:26:17 v #30333 > > Fable.Core.Emit(\"async_walkdir::WalkDir\")>]]\n#endif\ntype
00:26:17 v #30334 > > async_walkdir_WalkDir = class end"
00:26:17 v #30335 > >         $'' : $'async_walkdir_WalkDir'
00:26:17 v #30336 > >     )
00:26:17 v #30337 > >
00:26:17 v #30338 > > ── markdown ────────────────────────────────────────────────────────────────────
00:26:17 v #30339 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:26:17 v #30340 > > │ ### async_walkdir_filtering                                                  │
00:26:17 v #30341 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:26:17 v #30342 > >
00:26:17 v #30343 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:26:17 v #30344 > > nominal async_walkdir_filtering =
00:26:17 v #30345 > >     `(
00:26:17 v #30346 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:26:17 v #30347 > > Fable.Core.Emit(\"async_walkdir::Filtering\")>]]\n#endif\ntype
00:26:17 v #30348 > > async_walkdir_Filtering = class end"
00:26:17 v #30349 > >         $'' : $'async_walkdir_Filtering'
00:26:17 v #30350 > >     )
00:26:18 v #30351 > >
00:26:18 v #30352 > > ── markdown ────────────────────────────────────────────────────────────────────
00:26:18 v #30353 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:26:18 v #30354 > > │ ### filtering                                                                │
00:26:18 v #30355 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:26:18 v #30356 > >
00:26:18 v #30357 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:26:18 v #30358 > > union filtering =
00:26:18 v #30359 > >     | Ignore
00:26:18 v #30360 > >     | IgnoreDir
00:26:18 v #30361 > >     | Continue
00:26:18 v #30362 > >
00:26:18 v #30363 > > ── markdown ────────────────────────────────────────────────────────────────────
00:26:18 v #30364 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:26:18 v #30365 > > │ ### async_walkdir_error                                                      │
00:26:18 v #30366 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:26:18 v #30367 > >
00:26:18 v #30368 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:26:18 v #30369 > > nominal async_walkdir_error =
00:26:18 v #30370 > >     `(
00:26:18 v #30371 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:26:18 v #30372 > > Fable.Core.Emit(\"async_walkdir::Error\")>]]\n#endif\ntype async_walkdir_Error =
00:26:18 v #30373 > > class end"
00:26:18 v #30374 > >         $'' : $'async_walkdir_Error'
00:26:18 v #30375 > >     )
00:26:18 v #30376 > >
00:26:18 v #30377 > > ── markdown ────────────────────────────────────────────────────────────────────
00:26:18 v #30378 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:26:18 v #30379 > > │ ### new_walk_dir                                                             │
00:26:18 v #30380 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:26:18 v #30381 > >
00:26:18 v #30382 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:26:18 v #30383 > > inl new_walk_dir (dir : string) : walk_dir =
00:26:18 v #30384 > >     !\\(dir, $'"async_walkdir::WalkDir::new(&*$0)"')
00:26:18 v #30385 > >     // inl walk_dir : walk_dir = walk_dir |> rust.to_mut
00:26:18 v #30386 > >     // (!\($'"true; let mut !walk_dir = !walk_dir"') : bool) |> ignore
00:26:19 v #30387 > >
00:26:19 v #30388 > > ── markdown ────────────────────────────────────────────────────────────────────
00:26:19 v #30389 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:26:19 v #30390 > > │ ### walk_dir_filter                                                          │
00:26:19 v #30391 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:26:19 v #30392 > >
00:26:19 v #30393 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:26:19 v #30394 > > inl walk_dir_filter (fn : dir_entry -> async.future_pin_send filtering)
00:26:19 v #30395 > > (walk_dir : walk_dir) : walk_dir =
00:26:19 v #30396 > >     inl fn entry = async.new_future_send fun () =>
00:26:19 v #30397 > >         inl result = fn entry |> async.await_send
00:26:19 v #30398 > >         inl filtering : async_walkdir_filtering =
00:26:19 v #30399 > >             match result with
00:26:19 v #30400 > >             | Ignore => !\($'"async_walkdir::Filtering::Ignore"')
00:26:19 v #30401 > >             | IgnoreDir => !\($'"async_walkdir::Filtering::IgnoreDir"')
00:26:19 v #30402 > >             | Continue => !\($'"async_walkdir::Filtering::Continue"')
00:26:19 v #30403 > >         filtering
00:26:19 v #30404 > >     !\\((walk_dir, fn), $'"async_walkdir::WalkDir::filter($0, move |x| $1(x))"')
00:26:19 v #30405 > >
00:26:19 v #30406 > > ── markdown ────────────────────────────────────────────────────────────────────
00:26:19 v #30407 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:26:19 v #30408 > > │ ### file_type                                                                │
00:26:19 v #30409 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:26:19 v #30410 > >
00:26:19 v #30411 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:26:19 v #30412 > > nominal file_type =
00:26:19 v #30413 > >     `(
00:26:19 v #30414 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:26:19 v #30415 > > Fable.Core.Emit(\"std::fs::FileType\")>]]\n#endif\ntype std_fs_FileType = class
00:26:19 v #30416 > > end"
00:26:19 v #30417 > >         $'' : $'std_fs_FileType'
00:26:19 v #30418 > >     )
00:26:20 v #30419 > >
00:26:20 v #30420 > > ── markdown ────────────────────────────────────────────────────────────────────
00:26:20 v #30421 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:26:20 v #30422 > > │ ### dir_entry_file_type                                                      │
00:26:20 v #30423 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:26:20 v #30424 > >
00:26:20 v #30425 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:26:20 v #30426 > > inl dir_entry_file_type (dir_entry : dir_entry) : async.future_pin_send
00:26:20 v #30427 > > (resultm.result' file_type stream.io_error) =
00:26:20 v #30428 > >     inl dir_entry = join dir_entry
00:26:20 v #30429 > >     !\($'"Box::pin(async_walkdir::DirEntry::file_type(&!dir_entry))"')
00:26:20 v #30430 > >
00:26:20 v #30431 > > ── markdown ────────────────────────────────────────────────────────────────────
00:26:20 v #30432 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:26:20 v #30433 > > │ ### file_type_is_dir                                                         │
00:26:20 v #30434 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:26:20 v #30435 > >
00:26:20 v #30436 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:26:20 v #30437 > > inl file_type_is_dir (file_type : file_type) : bool =
00:26:20 v #30438 > >     inl file_type = join file_type
00:26:20 v #30439 > >     !\($'"std::fs::FileType::is_dir(&!file_type)"')
00:26:21 v #30440 > >
00:26:21 v #30441 > > ── markdown ────────────────────────────────────────────────────────────────────
00:26:21 v #30442 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:26:21 v #30443 > > │ ### file                                                                     │
00:26:21 v #30444 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:26:21 v #30445 > >
00:26:21 v #30446 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:26:21 v #30447 > > nominal file =
00:26:21 v #30448 > >     `(
00:26:21 v #30449 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:26:21 v #30450 > > Fable.Core.Emit(\"std::fs::File\")>]]\n#endif\ntype std_fs_File = class end"
00:26:21 v #30451 > >         $'' : $'std_fs_File'
00:26:21 v #30452 > >     )
00:26:21 v #30453 > >
00:26:21 v #30454 > > ── markdown ────────────────────────────────────────────────────────────────────
00:26:21 v #30455 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:26:21 v #30456 > > │ ### file_open                                                                │
00:26:21 v #30457 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:26:21 v #30458 > >
00:26:21 v #30459 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:26:21 v #30460 > > inl file_open (path : string) : resultm.result' file stream.io_error =
00:26:21 v #30461 > >     !\($'"std::fs::File::open(&*!path)"')
00:26:21 v #30462 > >
00:26:21 v #30463 > > ── markdown ────────────────────────────────────────────────────────────────────
00:26:21 v #30464 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:26:21 v #30465 > > │ ### rename                                                                   │
00:26:21 v #30466 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:26:21 v #30467 > >
00:26:21 v #30468 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:26:21 v #30469 > > inl rename (to : string) (path : string) : resultm.result' () stream.io_error =
00:26:21 v #30470 > >     !\($'"std::fs::rename(&*!path, &*!to)"')
00:26:22 v #30471 > >
00:26:22 v #30472 > > ── markdown ────────────────────────────────────────────────────────────────────
00:26:22 v #30473 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:26:22 v #30474 > > │ ### dir_entry_path                                                           │
00:26:22 v #30475 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:26:22 v #30476 > >
00:26:22 v #30477 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:26:22 v #30478 > > inl dir_entry_path (dir_entry : dir_entry) : path_buf =
00:26:22 v #30479 > >     !\\(dir_entry, $'"async_walkdir::DirEntry::path(&$0)"')
00:26:22 v #30480 > >
00:26:22 v #30481 > > ── markdown ────────────────────────────────────────────────────────────────────
00:26:22 v #30482 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:26:22 v #30483 > > │ ### create_dir_all                                                           │
00:26:22 v #30484 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:26:22 v #30485 > >
00:26:22 v #30486 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:26:22 v #30487 > > inl create_dir_all (path : string) : resultm.result' () stream.io_error =
00:26:22 v #30488 > >     !\\(path, $'"std::fs::create_dir_all(&*$0)"')
00:26:23 v #30489 > >
00:26:23 v #30490 > > ── markdown ────────────────────────────────────────────────────────────────────
00:26:23 v #30491 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:26:23 v #30492 > > │ ### file_info_link_target                                                    │
00:26:23 v #30493 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:26:23 v #30494 > >
00:26:23 v #30495 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:26:23 v #30496 > > inl file_info_link_target (file_info : file_info) : string =
00:26:23 v #30497 > >     run_target function
00:26:23 v #30498 > >         | Fsharp (Native) => fun () =>
00:26:23 v #30499 > >             $'!file_info.LinkTarget'
00:26:23 v #30500 > >         | _ => fun () => null ()
00:26:23 v #30501 > >
00:26:23 v #30502 > > ── markdown ────────────────────────────────────────────────────────────────────
00:26:23 v #30503 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:26:23 v #30504 > > │ ### read                                                                     │
00:26:23 v #30505 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:26:23 v #30506 > >
00:26:23 v #30507 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:26:23 v #30508 > > inl read (path : string) : resultm.result' (am'.vec u8) stream.io_error =
00:26:23 v #30509 > >     !\\(path, $'"std::fs::read(&*$0)"')
00:26:23 v #30510 > >
00:26:23 v #30511 > > ── markdown ────────────────────────────────────────────────────────────────────
00:26:23 v #30512 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:26:23 v #30513 > > │ ## typescript                                                                │
00:26:23 v #30514 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:26:23 v #30515 > >
00:26:23 v #30516 > > ── markdown ────────────────────────────────────────────────────────────────────
00:26:23 v #30517 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:26:23 v #30518 > > │ ### ts_path_join                                                             │
00:26:23 v #30519 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:26:23 v #30520 > >
00:26:23 v #30521 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:26:23 v #30522 > > inl ts_path_join (b : string) (a : string) : string =
00:26:23 v #30523 > >     open typescript_operators
00:26:23 v #30524 > >     global "type IPathJoin = abstract join: [[<System.ParamArray>]] paths:
00:26:23 v #30525 > > string[[]] -> string"
00:26:23 v #30526 > >     inl path : $'IPathJoin' = typescript.import_all "path"
00:26:23 v #30527 > >     !\\((join a, join b), $'"!path.join($0, $1)"')
00:26:24 v #30528 > >
00:26:24 v #30529 > > ── markdown ────────────────────────────────────────────────────────────────────
00:26:24 v #30530 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:26:24 v #30531 > > │ ## file_system                                                               │
00:26:24 v #30532 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:26:24 v #30533 > >
00:26:24 v #30534 > > ── markdown ────────────────────────────────────────────────────────────────────
00:26:24 v #30535 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:26:24 v #30536 > > │ ### (< />)                                                                   │
00:26:24 v #30537 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:26:24 v #30538 > >
00:26:24 v #30539 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:26:24 v #30540 > > let (</>) (a : string) (b : string) : string =
00:26:24 v #30541 > >     run_target function
00:26:24 v #30542 > >         | Rust (Contract) => fun () => null ()
00:26:24 v #30543 > >         | Rust (Native) => fun () =>
00:26:24 v #30544 > >             a
00:26:24 v #30545 > >             |> sm'.to_std_string
00:26:24 v #30546 > >             |> new_path_buf
00:26:24 v #30547 > >             |> path_buf_join b
00:26:24 v #30548 > >             |> path_buf_display
00:26:24 v #30549 > >             |> sm'.format'
00:26:24 v #30550 > >             |> sm'.from_std_string
00:26:24 v #30551 > >         | TypeScript (Native) => fun () =>
00:26:24 v #30552 > >             a |> ts_path_join b
00:26:24 v #30553 > >         | Fsharp (Native) => fun () =>
00:26:24 v #30554 > >             $'System.IO.Path.Combine (!a, !b)'
00:26:24 v #30555 > >         | target => fun () => failwith $'$"file_system.(</>) / target: {!target}
00:26:24 v #30556 > > / a: {!a} / b: {!b}"'
00:26:24 v #30557 > >
00:26:24 v #30558 > > ── markdown ────────────────────────────────────────────────────────────────────
00:26:24 v #30559 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:26:24 v #30560 > > │ ### get_temp_path                                                            │
00:26:24 v #30561 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:26:24 v #30562 > >
00:26:24 v #30563 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:26:24 v #30564 > > let get_temp_path () : string =
00:26:24 v #30565 > >     run_target function
00:26:24 v #30566 > >         | Rust (Contract) => fun () => null ()
00:26:24 v #30567 > >         | Rust (Native) => fun () =>
00:26:24 v #30568 > >             !\($'"std::env::temp_dir()"')
00:26:24 v #30569 > >             |> path_buf_display
00:26:24 v #30570 > >             |> sm'.format'
00:26:24 v #30571 > >             |> sm'.from_std_string
00:26:24 v #30572 > >         | Fsharp (Native) => fun () =>
00:26:24 v #30573 > >             $'System.IO.Path.GetTempPath' ()
00:26:24 v #30574 > >         | target => fun () => failwith $'$"file_system.get_temp_path / target:
00:26:24 v #30575 > > {!target}"'
00:26:25 v #30576 > >
00:26:25 v #30577 > > ── markdown ────────────────────────────────────────────────────────────────────
00:26:25 v #30578 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:26:25 v #30579 > > │ ### get_file_name                                                            │
00:26:25 v #30580 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:26:25 v #30581 > >
00:26:25 v #30582 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:26:25 v #30583 > > let get_file_name (path : string) : string =
00:26:25 v #30584 > >     run_target function
00:26:25 v #30585 > >         | Fsharp (Native) => fun () =>
00:26:25 v #30586 > >             path |> $'System.IO.Path.GetFileName'
00:26:25 v #30587 > >         | Rust (Native) => fun () =>
00:26:25 v #30588 > >             path
00:26:25 v #30589 > >             |> sm'.to_std_string
00:26:25 v #30590 > >             |> new_path_buf
00:26:25 v #30591 > >             |> path_buf_file_name
00:26:25 v #30592 > >             |> optionm'.map' sm'.from_os_str_ref
00:26:25 v #30593 > >             |> optionm'.unbox
00:26:25 v #30594 > >             |> optionm'.default_value ""
00:26:25 v #30595 > >         | Rust (Contract) => fun () => null ()
00:26:25 v #30596 > >         | target => fun () => failwith $'$"file_system.get_file_name / target:
00:26:25 v #30597 > > {!target} / path: {!path}"'
00:26:25 v #30598 > >
00:26:25 v #30599 > > ── markdown ────────────────────────────────────────────────────────────────────
00:26:25 v #30600 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:26:25 v #30601 > > │ ### get_file_name_without_extension                                          │
00:26:25 v #30602 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:26:25 v #30603 > >
00:26:25 v #30604 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:26:25 v #30605 > > let get_file_name_without_extension (path : string) : string =
00:26:25 v #30606 > >     run_target function
00:26:25 v #30607 > >         | Rust (Contract) => fun () => null ()
00:26:25 v #30608 > >         | Rust (Native) => fun () =>
00:26:25 v #30609 > >             inl path_buf = path |> sm'.to_std_string |> new_path_buf
00:26:25 v #30610 > >             inl file_stem = !\\(path_buf, $'"$0.file_stem()"')
00:26:25 v #30611 > >             match file_stem |> optionm'.map' sm'.from_os_str_ref |>
00:26:25 v #30612 > > optionm'.unbox with
00:26:25 v #30613 > >             | Some file_stem => file_stem
00:26:25 v #30614 > >             | None => ""
00:26:25 v #30615 > >         | _ => fun () =>
00:26:25 v #30616 > >             path |> $'System.IO.Path.GetFileNameWithoutExtension'
00:26:25 v #30617 > >
00:26:25 v #30618 > > ── markdown ────────────────────────────────────────────────────────────────────
00:26:25 v #30619 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:26:25 v #30620 > > │ ### get_directory_name                                                       │
00:26:25 v #30621 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:26:25 v #30622 > >
00:26:25 v #30623 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:26:25 v #30624 > > let get_directory_name (path : string) : string =
00:26:25 v #30625 > >     run_target function
00:26:25 v #30626 > >         | Fsharp _ => fun () =>
00:26:25 v #30627 > >             path |> $'System.IO.Path.GetDirectoryName'
00:26:25 v #30628 > >         | Rust (Native) => fun () =>
00:26:25 v #30629 > >             path
00:26:25 v #30630 > >             |> sm'.to_std_string
00:26:25 v #30631 > >             |> new_path_buf
00:26:25 v #30632 > >             |> path_buf_file_name
00:26:25 v #30633 > >             |> optionm'.map' sm'.from_os_str_ref
00:26:25 v #30634 > >             |> optionm'.unbox
00:26:25 v #30635 > >             |> optionm'.default_value ""
00:26:25 v #30636 > >         | _ => fun () => null ()
00:26:26 v #30637 > >
00:26:26 v #30638 > > ── markdown ────────────────────────────────────────────────────────────────────
00:26:26 v #30639 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:26:26 v #30640 > > │ ### get_extension                                                            │
00:26:26 v #30641 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:26:26 v #30642 > >
00:26:26 v #30643 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:26:26 v #30644 > > let get_extension (path : string) : string =
00:26:26 v #30645 > >     run_target function
00:26:26 v #30646 > >         | Rust (Contract) => fun () => null ()
00:26:26 v #30647 > >         | Rust (Native) => fun () =>
00:26:26 v #30648 > >             inl path_buf = path |> sm'.to_std_string |> new_path_buf
00:26:26 v #30649 > >             !\\(path_buf, $'"$0.extension()"')
00:26:26 v #30650 > >             |> optionm'.unwrap
00:26:26 v #30651 > >             |> sm'.from_os_str_ref
00:26:26 v #30652 > >         | _ => fun () =>
00:26:26 v #30653 > >             path |> $'System.IO.Path.GetExtension'
00:26:26 v #30654 > >
00:26:26 v #30655 > > ── markdown ────────────────────────────────────────────────────────────────────
00:26:26 v #30656 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:26:26 v #30657 > > │ ### directory_separator_char                                                 │
00:26:26 v #30658 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:26:26 v #30659 > >
00:26:26 v #30660 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:26:26 v #30661 > > let directory_separator_char () : char =
00:26:26 v #30662 > >     run_target function
00:26:26 v #30663 > >         | Rust (Native) => fun () =>
00:26:26 v #30664 > >             !\($'"std::path::MAIN_SEPARATOR"')
00:26:26 v #30665 > >         | _ => fun () =>
00:26:26 v #30666 > >             $'System.IO.Path.DirectorySeparatorChar'
00:26:27 v #30667 > >
00:26:27 v #30668 > > ── markdown ────────────────────────────────────────────────────────────────────
00:26:27 v #30669 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:26:27 v #30670 > > │ ### get_current_directory                                                    │
00:26:27 v #30671 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:26:27 v #30672 > >
00:26:27 v #30673 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:26:27 v #30674 > > let get_current_directory () : string =
00:26:27 v #30675 > >     run_target function
00:26:27 v #30676 > >         | Rust (Contract | Wasm) => fun () => null ()
00:26:27 v #30677 > >         | Rust (Native) => fun () =>
00:26:27 v #30678 > >             inl current_dir = !\($'"std::env::current_dir()"') : resultm.result'
00:26:27 v #30679 > > path_buf stream.io_error
00:26:27 v #30680 > >             current_dir
00:26:27 v #30681 > >             |> resultm.unwrap'
00:26:27 v #30682 > >             |> path_buf_display
00:26:27 v #30683 > >             |> sm'.format'
00:26:27 v #30684 > >             |> sm'.from_std_string
00:26:27 v #30685 > >         | Fsharp (Native) => fun () =>
00:26:27 v #30686 > >             $'System.IO.Directory.GetCurrentDirectory' ()
00:26:27 v #30687 > >         | _ => fun () => null ()
00:26:27 v #30688 > >
00:26:27 v #30689 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:26:27 v #30690 > > //// test
00:26:27 v #30691 > >
00:26:27 v #30692 > > get_current_directory ()
00:26:27 v #30693 > > |> _assert_contains (directory_separator_char ())
00:26:28 v #30694 > >
00:26:28 v #30695 > > ╭─[ 735.03ms - stdout ]────────────────────────────────────────────────────────╮
00:26:28 v #30696 > > │ __assert_contains / actual: "C:\home\git\polyglot\lib\spiral" / expected:    │
00:26:28 v #30697 > > │ '\\'                                                                         │
00:26:28 v #30698 > > │                                                                              │
00:26:28 v #30699 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:26:28 v #30700 > >
00:26:28 v #30701 > > ── markdown ────────────────────────────────────────────────────────────────────
00:26:28 v #30702 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:26:28 v #30703 > > │ ### directory_exists                                                         │
00:26:28 v #30704 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:26:28 v #30705 > >
00:26:28 v #30706 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:26:28 v #30707 > > let directory_exists (path : string) : bool =
00:26:28 v #30708 > >     run_target function
00:26:28 v #30709 > >         | Fsharp (Native) => fun () =>
00:26:28 v #30710 > >             path |> $'System.IO.Directory.Exists'
00:26:28 v #30711 > >         | Rust (Native) => fun () =>
00:26:28 v #30712 > >             inl path = path |> sm'.to_std_string |> new_path_buf
00:26:28 v #30713 > >             path_buf_exists path && path_buf_is_dir path
00:26:28 v #30714 > >         | TypeScript (Native) => fun () =>
00:26:28 v #30715 > >             global "type IFsExistsSync = abstract existsSync: path: string ->
00:26:28 v #30716 > > bool"
00:26:28 v #30717 > >             open typescript_operators
00:26:28 v #30718 > >             inl fs : $'IFsExistsSync' = typescript.import_all "fs"
00:26:28 v #30719 > >             !\\((fs, path), $'"$0.existsSync($1)"')
00:26:28 v #30720 > >         | _ => fun () => null ()
00:26:28 v #30721 > >
00:26:28 v #30722 > > ── markdown ────────────────────────────────────────────────────────────────────
00:26:28 v #30723 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:26:28 v #30724 > > │ ### directory_get_parent                                                     │
00:26:28 v #30725 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:26:28 v #30726 > >
00:26:28 v #30727 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:26:28 v #30728 > > let directory_get_parent (path : string) : optionm'.option' string =
00:26:28 v #30729 > >     run_target function
00:26:28 v #30730 > >         | Fsharp (Native) => fun () =>
00:26:28 v #30731 > >             inl parent : directory_info = path |>
00:26:28 v #30732 > > $'System.IO.Directory.GetParent'
00:26:28 v #30733 > >             if parent =. null ()
00:26:28 v #30734 > >             then None
00:26:28 v #30735 > >             else parent |> directory_info_full_name |> Some
00:26:28 v #30736 > >             |> optionm'.box
00:26:28 v #30737 > >         | Rust (Native) => fun () =>
00:26:28 v #30738 > >             inl path_buf = path |> sm'.to_std_string |> new_path_buf
00:26:28 v #30739 > >             inl parent = path_buf |> path_buf_parent
00:26:28 v #30740 > >             parent
00:26:28 v #30741 > >             |> optionm'.map' (path_buf_display >> sm'.format' >>
00:26:28 v #30742 > > sm'.from_std_string)
00:26:28 v #30743 > >         | TypeScript _ => fun () =>
00:26:28 v #30744 > >             open typescript_operators
00:26:28 v #30745 > >             global "type IPathDirname = abstract dirname: path: string ->
00:26:28 v #30746 > > string"
00:26:28 v #30747 > >             inl fs : $'IPathDirname' = typescript.import_all "path"
00:26:28 v #30748 > >             !\\(path, $'"!fs.dirname($0)"') |> Some |> optionm'.box
00:26:28 v #30749 > >         | _ => fun () => null ()
00:26:29 v #30750 > >
00:26:29 v #30751 > > ── markdown ────────────────────────────────────────────────────────────────────
00:26:29 v #30752 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:26:29 v #30753 > > │ ### create_temp_path'                                                        │
00:26:29 v #30754 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:26:29 v #30755 > >
00:26:29 v #30756 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:26:29 v #30757 > > let create_temp_path' (guid : guid.guid) =
00:26:29 v #30758 > >     run_target function
00:26:29 v #30759 > >         | Rust (Contract) => fun () => null ()
00:26:29 v #30760 > >         | _ => fun () =>
00:26:29 v #30761 > >             get_temp_path ()
00:26:29 v #30762 > >             </> (join "!create_temp_path_")
00:26:29 v #30763 > >             </> (env.get_entry_assembly_name ())
00:26:29 v #30764 > >             </> (guid |> sm'.obj_to_string)
00:26:29 v #30765 > >
00:26:29 v #30766 > > ── markdown ────────────────────────────────────────────────────────────────────
00:26:29 v #30767 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:26:29 v #30768 > > │ ### create_temp_path                                                         │
00:26:29 v #30769 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:26:29 v #30770 > >
00:26:29 v #30771 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:26:29 v #30772 > > let create_temp_path () =
00:26:29 v #30773 > >     run_target function
00:26:29 v #30774 > >         | Rust (Contract) => fun () => null ()
00:26:29 v #30775 > >         | _ => fun () =>
00:26:29 v #30776 > >             date_time.now ()
00:26:29 v #30777 > >             |> date_time.new_guid_from_date_time
00:26:29 v #30778 > >             |> create_temp_path'
00:26:29 v #30779 > >
00:26:29 v #30780 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:26:29 v #30781 > > //// test
00:26:29 v #30782 > > ///! fsharp
00:26:29 v #30783 > > ///! rust -d chrono
00:26:29 v #30784 > >
00:26:29 v #30785 > > create_temp_path ()
00:26:29 v #30786 > > |> _assert_contains (directory_separator_char ())
00:26:44 v #30787 > >
00:26:44 v #30788 > > ╭─[ 14.15s - return value ]────────────────────────────────────────────────────╮
00:26:44 v #30789 > > │ .rs output (rust -d chrono):                                                 │
00:26:44 v #30790 > > │ __assert_contains / actual:                                                  │
00:26:44 v #30791 > > │ "C:\Users\i574n\AppData\Local\Temp\!create_temp_path_\spiral_builder_e52aad0 │
00:26:44 v #30792 > > │ b7e50d00b06fee98e3b469cc59dfdb4b0289793c2d641158961b96692\20241112-1024-3971 │
00:26:44 v #30793 > > │ -3842-0000007fdb12" / expected: '\\'                                         │
00:26:44 v #30794 > > │                                                                              │
00:26:44 v #30795 > > │                                                                              │
00:26:44 v #30796 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:26:44 v #30797 > >
00:26:44 v #30798 > > ╭─[ 14.15s - stdout ]──────────────────────────────────────────────────────────╮
00:26:44 v #30799 > > │ .fsx output:                                                                 │
00:26:44 v #30800 > > │ __assert_contains / actual:                                                  │
00:26:44 v #30801 > > │ "C:\Users\i574n\AppData\Local\Temp\!create_temp_path_\dotnet-repl\20241112-1 │
00:26:44 v #30802 > > │ 024-4012-1289-1003008039c5" / expected: '\\'                                 │
00:26:44 v #30803 > > │                                                                              │
00:26:44 v #30804 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:26:44 v #30805 > >
00:26:44 v #30806 > > ── markdown ────────────────────────────────────────────────────────────────────
00:26:44 v #30807 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:26:44 v #30808 > > │ ### file_copy                                                                │
00:26:44 v #30809 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:26:44 v #30810 > >
00:26:44 v #30811 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:26:44 v #30812 > > let file_copy (new_path : string) (old_path : string) : () =
00:26:44 v #30813 > >     run_target function
00:26:44 v #30814 > >         | Fsharp (Native) => fun () =>
00:26:44 v #30815 > >             $'System.IO.File.Copy (!old_path, !new_path, true)'
00:26:44 v #30816 > >         | Rust (Native) => fun () =>
00:26:44 v #30817 > >             inl new_path = join new_path
00:26:44 v #30818 > >             inl result : _ _ stream.io_error = !\\(old_path,
00:26:44 v #30819 > > $'"std::fs::copy(&*$0, &*!new_path)"')
00:26:44 v #30820 > >             match result |> resultm.map_error' sm'.format' |> resultm.unbox with
00:26:44 v #30821 > >             | Ok (result : u64) =>
00:26:44 v #30822 > >                 trace Debug
00:26:44 v #30823 > >                     fun () => "file_system.file_copy"
00:26:44 v #30824 > >                     fun () => { old_path new_path result }
00:26:44 v #30825 > >             | Error error =>
00:26:44 v #30826 > >                 trace Warning
00:26:44 v #30827 > >                     fun () => "file_system.file_copy"
00:26:44 v #30828 > >                     fun () => { old_path new_path error }
00:26:44 v #30829 > >         | _ => fun () => ()
00:26:44 v #30830 > >
00:26:44 v #30831 > > ── markdown ────────────────────────────────────────────────────────────────────
00:26:44 v #30832 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:26:44 v #30833 > > │ ### file_exists                                                              │
00:26:44 v #30834 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:26:44 v #30835 > >
00:26:44 v #30836 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:26:44 v #30837 > > let file_exists (path : string) : bool =
00:26:44 v #30838 > >     run_target function
00:26:44 v #30839 > >         | Fsharp (Native) => fun () =>
00:26:44 v #30840 > >             path |> $'System.IO.File.Exists'
00:26:44 v #30841 > >         | Rust (Native) => fun () =>
00:26:44 v #30842 > >             inl path_buf = path |> sm'.to_std_string |> new_path_buf
00:26:44 v #30843 > >             path_buf_exists path_buf && path_buf_is_file path_buf
00:26:44 v #30844 > >         | TypeScript (Native) => fun () =>
00:26:44 v #30845 > >             open typescript_operators
00:26:44 v #30846 > >             global "type IFsExistsSync = abstract existsSync: path: string ->
00:26:44 v #30847 > > bool"
00:26:44 v #30848 > >             inl fs : $'IFsExistsSync' = typescript.import_all "fs"
00:26:44 v #30849 > >             !\\((fs, path), $'"$0.existsSync($1)"')
00:26:44 v #30850 > >         | _ => fun () => null ()
00:26:44 v #30851 > >
00:26:44 v #30852 > > ── markdown ────────────────────────────────────────────────────────────────────
00:26:44 v #30853 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:26:44 v #30854 > > │ ### directory_delete                                                         │
00:26:44 v #30855 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:26:44 v #30856 > >
00:26:44 v #30857 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:26:44 v #30858 > > let directory_delete recursive (path : string) : () =
00:26:44 v #30859 > >     run_target function
00:26:44 v #30860 > >         | Fsharp (Native) => fun () =>
00:26:44 v #30861 > >             $'System.IO.Directory.Delete (!path, !recursive)'
00:26:44 v #30862 > >         | Rust (Native) => fun () =>
00:26:44 v #30863 > >             inl path = join path
00:26:44 v #30864 > >             if path |> directory_exists then
00:26:44 v #30865 > >                 if recursive
00:26:44 v #30866 > >                 then !\\(path, $'"std::fs::remove_dir_all(&*$0).unwrap()"')
00:26:44 v #30867 > >                 else !\\(path, $'"std::fs::remove_dir(&*$0).unwrap()"')
00:26:44 v #30868 > >         | _ => fun () => ()
00:26:45 v #30869 > >
00:26:45 v #30870 > > ── markdown ────────────────────────────────────────────────────────────────────
00:26:45 v #30871 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:26:45 v #30872 > > │ ### write_all_text                                                           │
00:26:45 v #30873 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:26:45 v #30874 > >
00:26:45 v #30875 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:26:45 v #30876 > > inl write_all_text (path : string) (text : string) : () =
00:26:45 v #30877 > >     run_target function
00:26:45 v #30878 > >         | Fsharp (Native) => fun () =>
00:26:45 v #30879 > >             inl text = join text
00:26:45 v #30880 > >             $'System.IO.File.WriteAllText (!path, !text)'
00:26:45 v #30881 > >         | Rust (Native) => fun () =>
00:26:45 v #30882 > >             !\\((path, text), $'"std::fs::write(&*$0, &*$1).unwrap()"')
00:26:45 v #30883 > >         | _ => fun () => ()
00:26:45 v #30884 > >
00:26:45 v #30885 > > ── markdown ────────────────────────────────────────────────────────────────────
00:26:45 v #30886 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:26:45 v #30887 > > │ ### read_all_bytes                                                           │
00:26:45 v #30888 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:26:45 v #30889 > >
00:26:45 v #30890 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:26:45 v #30891 > > inl read_all_bytes (path : string) : am'.vec u8 =
00:26:45 v #30892 > >     run_target function
00:26:45 v #30893 > >         | Fsharp (Native) => fun () =>
00:26:45 v #30894 > >             $'!path |> System.IO.File.ReadAllBytes'
00:26:45 v #30895 > >             |> am'.to_vec
00:26:45 v #30896 > >         | Rust (Native) => fun () =>
00:26:45 v #30897 > >             path |> read |> resultm.unwrap'
00:26:45 v #30898 > >         | _ => fun () => null ()
00:26:46 v #30899 > >
00:26:46 v #30900 > > ── markdown ────────────────────────────────────────────────────────────────────
00:26:46 v #30901 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:26:46 v #30902 > > │ ### read_all_text                                                            │
00:26:46 v #30903 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:26:46 v #30904 > >
00:26:46 v #30905 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:26:46 v #30906 > > inl read_all_text (path : string) : string =
00:26:46 v #30907 > >     run_target function
00:26:46 v #30908 > >         | Fsharp (Native) => fun () =>
00:26:46 v #30909 > >             $'!path |> System.IO.File.ReadAllText'
00:26:46 v #30910 > >         | Rust (Native) => fun () =>
00:26:46 v #30911 > >             path
00:26:46 v #30912 > >             |> read_all_bytes
00:26:46 v #30913 > >             |> sm'.string_from_utf8
00:26:46 v #30914 > >             |> resultm.unwrap'
00:26:46 v #30915 > >             |> sm'.from_std_string
00:26:46 v #30916 > >         | _ => fun () => null ()
00:26:46 v #30917 > >
00:26:46 v #30918 > > ── markdown ────────────────────────────────────────────────────────────────────
00:26:46 v #30919 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:26:46 v #30920 > > │ ### directory_create_symbolic_link                                           │
00:26:46 v #30921 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:26:46 v #30922 > >
00:26:46 v #30923 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:26:46 v #30924 > > inl directory_create_symbolic_link (target : string) (path : string) : () =
00:26:46 v #30925 > >     run_target function
00:26:46 v #30926 > >         | Fsharp (Native) => fun () =>
00:26:46 v #30927 > >             ($'System.IO.Directory.CreateSymbolicLink (!path, !target)' :
00:26:46 v #30928 > > file_system_info)
00:26:46 v #30929 > >             |> ignore
00:26:46 v #30930 > >         | Rust (Native) => fun () =>
00:26:46 v #30931 > >             (!\\((target, path), $'"true; #[[cfg(windows)]]
00:26:46 v #30932 > > std::os::windows::fs::symlink_dir(&*$0, &*$1).unwrap()"') : bool) |> ignore
00:26:46 v #30933 > >             (!\\((target, path), $'"true; #[[cfg(unix)]]
00:26:46 v #30934 > > std::os::unix::fs::symlink(&*$0, &*$1).unwrap()"') : bool) |> ignore
00:26:46 v #30935 > >         | _ => fun () => ()
00:26:47 v #30936 > >
00:26:47 v #30937 > > ── markdown ────────────────────────────────────────────────────────────────────
00:26:47 v #30938 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:26:47 v #30939 > > │ ### file_create_symbolic_link                                                │
00:26:47 v #30940 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:26:47 v #30941 > >
00:26:47 v #30942 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:26:47 v #30943 > > inl file_create_symbolic_link (target : string) (path : string) : () =
00:26:47 v #30944 > >     run_target function
00:26:47 v #30945 > >         | Fsharp (Native) => fun () =>
00:26:47 v #30946 > >             ($'System.IO.File.CreateSymbolicLink (!path, !target)' :
00:26:47 v #30947 > > file_system_info)
00:26:47 v #30948 > >             |> ignore
00:26:47 v #30949 > >         | Rust (Native) => fun () =>
00:26:47 v #30950 > >             (!\\((target, path), $'"true; #[[cfg(windows)]]
00:26:47 v #30951 > > std::os::windows::fs::symlink_file(&*$0, &*$1).unwrap()"') : bool) |> ignore
00:26:47 v #30952 > >             (!\\((target, path), $'"true; #[[cfg(unix)]]
00:26:47 v #30953 > > std::os::unix::fs::symlink(&*$0, &*$1).unwrap()"') : bool) |> ignore
00:26:47 v #30954 > >         | _ => fun () => ()
00:26:47 v #30955 > >
00:26:47 v #30956 > > ── markdown ────────────────────────────────────────────────────────────────────
00:26:47 v #30957 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:26:47 v #30958 > > │ ### file_type                                                                │
00:26:47 v #30959 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:26:47 v #30960 > >
00:26:47 v #30961 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:26:47 v #30962 > > union file_type =
00:26:47 v #30963 > >     | File
00:26:47 v #30964 > >     | Directory
00:26:47 v #30965 > >
00:26:47 v #30966 > > ── markdown ────────────────────────────────────────────────────────────────────
00:26:47 v #30967 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:26:47 v #30968 > > │ ### find_parent                                                              │
00:26:47 v #30969 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:26:47 v #30970 > >
00:26:47 v #30971 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:26:47 v #30972 > > inl find_parent file_type name root_dir =
00:26:47 v #30973 > >     inl is_file = file_type = File
00:26:47 v #30974 > >     let rec loop dir =
00:26:47 v #30975 > >         if dir </> name |> (if is_file then file_exists else directory_exists)
00:26:47 v #30976 > >         then dir |> Ok
00:26:47 v #30977 > >         else
00:26:47 v #30978 > >             inl result = dir |> (join directory_get_parent)
00:26:47 v #30979 > >             match result |> optionm'.unbox with
00:26:47 v #30980 > >             | Some parent => parent |> loop
00:26:47 v #30981 > >             | None => ($'$"""No parent for {if !is_file then "file" else "dir"}
00:26:47 v #30982 > > \'{!name}\' at \'{!root_dir}\' (until \'{!dir}\')"""' : string) |> Error
00:26:47 v #30983 > >     loop root_dir
00:26:48 v #30984 > >
00:26:48 v #30985 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:26:48 v #30986 > > //// test
00:26:48 v #30987 > >
00:26:48 v #30988 > > a ;[[ Directory, ".paket"; File, "paket.dependencies" ]]
00:26:48 v #30989 > > |> am.map fun file_type, file =>
00:26:48 v #30990 > >     get_source_directory ()
00:26:48 v #30991 > >     |> find_parent file_type file
00:26:48 v #30992 > >     |> resultm.get
00:26:48 v #30993 > >     |> directory_info
00:26:48 v #30994 > >     |> directory_info_name
00:26:48 v #30995 > > |> am'.distinct
00:26:48 v #30996 > > |> fun (a x : _ int _) => x
00:26:48 v #30997 > > |> _assert_eq' ;[[ "polyglot" ]]
00:26:48 v #30998 > >
00:26:48 v #30999 > > ╭─[ 672.62ms - stdout ]────────────────────────────────────────────────────────╮
00:26:48 v #31000 > > │ __assert_eq' / actual: [|"polyglot"|] / expected: [|"polyglot"|]             │
00:26:48 v #31001 > > │                                                                              │
00:26:48 v #31002 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:26:48 v #31003 > >
00:26:48 v #31004 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:26:48 v #31005 > > //// test
00:26:48 v #31006 > > ///! rust
00:26:48 v #31007 > >
00:26:48 v #31008 > > a ;[[ Directory, ".paket"; File, "paket.dependencies" ]]
00:26:48 v #31009 > > |> am.map fun file_type, file =>
00:26:48 v #31010 > >     fun () =>
00:26:48 v #31011 > >         join
00:26:48 v #31012 > >             get_source_directory ()
00:26:48 v #31013 > >             |> find_parent file_type file
00:26:48 v #31014 > >             |> resultm.get
00:26:48 v #31015 > >             |> sm'.to_std_string
00:26:48 v #31016 > >             |> new_path_buf
00:26:48 v #31017 > >             |> path_buf_file_name
00:26:48 v #31018 > >             |> optionm'.try'
00:26:48 v #31019 > >             |> sm'.from_os_str_ref
00:26:48 v #31020 > >             |> Some
00:26:48 v #31021 > >             |> optionm'.box
00:26:48 v #31022 > >     |> fun x => x () |> optionm'.unbox
00:26:48 v #31023 > >     |> optionm'.default_value ""
00:26:48 v #31024 > > |> am'.distinct
00:26:48 v #31025 > > |> fun result =>
00:26:48 v #31026 > >     result |> am'.length |> _assert_eq 1i32
00:26:48 v #31027 > >     index result 0i32 |> _assert_eq "polyglot"
00:26:51 v #31028 > >
00:26:51 v #31029 > > ╭─[ 2.84s - return value ]─────────────────────────────────────────────────────╮
00:26:51 v #31030 > > │ __assert_eq / actual: 1 / expected: 1                                        │
00:26:51 v #31031 > > │ __assert_eq / actual: "polyglot" / expected: "polyglot"                      │
00:26:51 v #31032 > > │                                                                              │
00:26:51 v #31033 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:26:51 v #31034 > >
00:26:51 v #31035 > > ── markdown ────────────────────────────────────────────────────────────────────
00:26:51 v #31036 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:26:51 v #31037 > > │ ### get_workspace_root                                                       │
00:26:51 v #31038 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:26:51 v #31039 > >
00:26:51 v #31040 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:26:51 v #31041 > > inl get_workspace_root () =
00:26:51 v #31042 > >     (None, [[ get_source_directory; get_current_directory ]])
00:26:51 v #31043 > >     ||> listm.fold fun acc path =>
00:26:51 v #31044 > >         match acc with
00:26:51 v #31045 > >         | Some path => Some path
00:26:51 v #31046 > >         | None =>
00:26:51 v #31047 > >             path ()
00:26:51 v #31048 > >             |> find_parent Directory ("polyglot" </> ".devcontainer")
00:26:51 v #31049 > >             |> function
00:26:51 v #31050 > >                 | Ok path => Some path
00:26:51 v #31051 > >                 | Error error =>
00:26:51 v #31052 > >                     trace Warning
00:26:51 v #31053 > >                         fun () => "file_system.get_workspace_root"
00:26:51 v #31054 > >                         fun () => { error }
00:26:51 v #31055 > >                     None
00:26:51 v #31056 > >     |> optionm.value
00:26:51 v #31057 > >     |> fun root => root </> "polyglot"
00:26:52 v #31058 > >
00:26:52 v #31059 > > ── markdown ────────────────────────────────────────────────────────────────────
00:26:52 v #31060 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:26:52 v #31061 > > │ ### get_workspace_root_external                                              │
00:26:52 v #31062 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:26:52 v #31063 > >
00:26:52 v #31064 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:26:52 v #31065 > > inl get_workspace_root_external () =
00:26:52 v #31066 > >     inl workspace_root = get_workspace_root ()
00:26:52 v #31067 > >     inl current_dir = get_current_directory () |> sm'.to_lower
00:26:52 v #31068 > >     inl workspace_root = workspace_root |> sm'.to_lower
00:26:52 v #31069 > >     if current_dir |> sm'.starts_with workspace_root
00:26:52 v #31070 > >     then Error workspace_root
00:26:52 v #31071 > >     else Ok workspace_root
00:26:52 v #31072 > >
00:26:52 v #31073 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:26:52 v #31074 > > //// test
00:26:52 v #31075 > >
00:26:52 v #31076 > > get_workspace_root_external ()
00:26:52 v #31077 > > |> resultm.unwrap_err
00:26:52 v #31078 > > |> get_file_name
00:26:52 v #31079 > > |> _assert_eq "polyglot"
00:26:53 v #31080 > >
00:26:53 v #31081 > > ╭─[ 812.20ms - stdout ]────────────────────────────────────────────────────────╮
00:26:53 v #31082 > > │ __assert_eq / actual: "polyglot" / expected: "polyglot"                      │
00:26:53 v #31083 > > │                                                                              │
00:26:53 v #31084 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:26:53 v #31085 > >
00:26:53 v #31086 > > ── markdown ────────────────────────────────────────────────────────────────────
00:26:53 v #31087 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:26:53 v #31088 > > │ ### file_delete                                                              │
00:26:53 v #31089 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:26:53 v #31090 > >
00:26:53 v #31091 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:26:53 v #31092 > > inl file_delete (path : string) : () =
00:26:53 v #31093 > >     run_target function
00:26:53 v #31094 > >         | Fsharp (Native) => fun () =>
00:26:53 v #31095 > >             path |> $'System.IO.File.Delete'
00:26:53 v #31096 > >         | Rust (Native) => fun () =>
00:26:53 v #31097 > >             !\\(path, $'"std::fs::remove_file(&*$0).unwrap()"')
00:26:53 v #31098 > >         | _ => fun () => ()
00:26:53 v #31099 > >
00:26:53 v #31100 > > ── markdown ────────────────────────────────────────────────────────────────────
00:26:53 v #31101 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:26:53 v #31102 > > │ ### read_link                                                                │
00:26:53 v #31103 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:26:53 v #31104 > >
00:26:53 v #31105 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:26:53 v #31106 > > let read_link (path : string) : resultm.result' path_buf stream.io_error =
00:26:53 v #31107 > >     let run loop n error path' =
00:26:53 v #31108 > >         inl name = path' |> get_file_name
00:26:53 v #31109 > >         inl parent = path' |> directory_get_parent |> optionm'.unbox
00:26:53 v #31110 > >         inl error'' = error |> sm'.format
00:26:53 v #31111 > >         match parent with
00:26:53 v #31112 > >         | _ when n >= 11 =>
00:26:53 v #31113 > >             ($'$"file_system.read_link / path: {!path} / n: {!n} / path\':
00:26:53 v #31114 > > {!path'} / name: {!name}"' : string)
00:26:53 v #31115 > >             |> stream.new_io_error
00:26:53 v #31116 > >             |> resultm.err
00:26:53 v #31117 > >         | Some parent when path' <>. "" =>
00:26:53 v #31118 > >             match loop (n + 1) parent |> resultm.map_error' sm'.format |>
00:26:53 v #31119 > > resultm.unbox with
00:26:53 v #31120 > >             | Ok parent' =>
00:26:53 v #31121 > >                 (parent' |> path_buf_display |> convert) </> name
00:26:53 v #31122 > >                 |> sm'.to_std_string
00:26:53 v #31123 > >                 |> new_path_buf
00:26:53 v #31124 > >                 |> resultm.ok''
00:26:53 v #31125 > >             | Error error' =>
00:26:53 v #31126 > >                 ($'$"file_system.read_link / error\': {!error'} / error:
00:26:53 v #31127 > > {!error''} / name: {!name}"' : string)
00:26:53 v #31128 > >                 |> stream.new_io_error
00:26:53 v #31129 > >                 |> resultm.err
00:26:53 v #31130 > >         | _ =>
00:26:53 v #31131 > >             ($'$"file_system.read_link / run / The file or directory is not a
00:26:53 v #31132 > > reparse point. / path: {!path} / error: {!error''} / path\': {!path'} / name:
00:26:53 v #31133 > > {!name}"' : string)
00:26:53 v #31134 > >             |> stream.new_io_error
00:26:53 v #31135 > >             |> resultm.err
00:26:53 v #31136 > >
00:26:53 v #31137 > >     run_target function
00:26:53 v #31138 > >         | Rust _ => fun () =>
00:26:53 v #31139 > >             if path |> directory_exists
00:26:53 v #31140 > >             then !\\(path, $'"std::fs::read_link(&*$0)"')
00:26:53 v #31141 > >             else
00:26:53 v #31142 > >                 let rec loop n path' =
00:26:53 v #31143 > >                     run_target function
00:26:53 v #31144 > >                         | Rust _ => fun () =>
00:26:53 v #31145 > >                             inl result : _ _ stream.io_error = !\\(path',
00:26:53 v #31146 > > $'"std::fs::read_link(&*$0)"')
00:26:53 v #31147 > >                             inl result = result |> resultm.map_error' sm'.format
00:26:53 v #31148 > > |> resultm.unbox
00:26:53 v #31149 > >                             match result with
00:26:53 v #31150 > >                             | Ok x => x |> resultm.ok''
00:26:53 v #31151 > >                             | Error error => path' |> run loop n error
00:26:53 v #31152 > >                         | _ => fun () => null ()
00:26:53 v #31153 > >                 path |> loop 0u8
00:26:53 v #31154 > >         | TypeScript _ => fun () => null ()
00:26:53 v #31155 > >         | Fsharp _ => fun () =>
00:26:53 v #31156 > >             let rec loop n path' =
00:26:53 v #31157 > >                 inl result =
00:26:53 v #31158 > >                     path'
00:26:53 v #31159 > >                     |> directory_info
00:26:53 v #31160 > >                     |> directory_info_attributes
00:26:53 v #31161 > >                     |> file_attributes_has_flag (file_attributes_reparse_point
00:26:53 v #31162 > > ())
00:26:53 v #31163 > >                 if result then
00:26:53 v #31164 > >                     path'
00:26:53 v #31165 > >                     |> file_info
00:26:53 v #31166 > >                     |> file_info_link_target
00:26:53 v #31167 > >                     |> unbox
00:26:53 v #31168 > >                     |> resultm.ok''
00:26:53 v #31169 > >                 else
00:26:53 v #31170 > >                     inl error = ($'$"file_system.read_link / Fsharp / The file
00:26:53 v #31171 > > or directory is not a reparse point. / path: {!path} / result: {!result}
00:26:53 v #31172 > > path\': {!path'} / n: {!n}"' : string)
00:26:53 v #31173 > >                     inl error = error |> stream.new_io_error
00:26:53 v #31174 > >                     path' |> run loop n error
00:26:53 v #31175 > >             path |> loop 0u8
00:26:53 v #31176 > >         | _ => fun () => $'Unchecked.defaultof<_>'
00:26:54 v #31177 > >
00:26:54 v #31178 > > ── markdown ────────────────────────────────────────────────────────────────────
00:26:54 v #31179 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:26:54 v #31180 > > │ ### normalize_path                                                           │
00:26:54 v #31181 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:26:54 v #31182 > >
00:26:54 v #31183 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:26:54 v #31184 > > let normalize_path (path : string) : string =
00:26:54 v #31185 > >     if path = ""
00:26:54 v #31186 > >     then ""
00:26:54 v #31187 > >     else
00:26:54 v #31188 > >         inl path =
00:26:54 v #31189 > >             match path |> read_link |> resultm.ok' |> optionm'.unbox with
00:26:54 v #31190 > >             | Some path_buf =>
00:26:54 v #31191 > >                 inl result =
00:26:54 v #31192 > >                     path_buf
00:26:54 v #31193 > >                     |> path_buf_display
00:26:54 v #31194 > >                     |> convert
00:26:54 v #31195 > >                 if result = ""
00:26:54 v #31196 > >                 then path
00:26:54 v #31197 > >                 else result
00:26:54 v #31198 > >             | None => path
00:26:54 v #31199 > >         if path = ""
00:26:54 v #31200 > >         then ""
00:26:54 v #31201 > >         else
00:26:54 v #31202 > >             inl path = path |> sm'.replace_regex @"^\\\\\?\\" ""
00:26:54 v #31203 > >             $'$"{!path.[[0]] |> string |> _.ToLower()}{!path.[[1..]]}"' |>
00:26:54 v #31204 > > sm'.replace "\\" "/"
00:26:54 v #31205 > >
00:26:54 v #31206 > > ── markdown ────────────────────────────────────────────────────────────────────
00:26:54 v #31207 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:26:54 v #31208 > > │ ### get_full_path                                                            │
00:26:54 v #31209 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:26:54 v #31210 > >
00:26:54 v #31211 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:26:54 v #31212 > > let get_full_path (path : string) : string =
00:26:54 v #31213 > >     run_target_args (fun () => path) function
00:26:54 v #31214 > >         | Fsharp (Native) => fun path =>
00:26:54 v #31215 > >             path |> $'System.IO.Path.GetFullPath'
00:26:54 v #31216 > >         | Rust (Native) => fun path =>
00:26:54 v #31217 > >             inl path_buf = path |> sm'.to_std_string |> new_path_buf
00:26:54 v #31218 > >             if path_buf |> path_buf_exists |> not then
00:26:54 v #31219 > >                 inl current_dir = get_current_directory ()
00:26:54 v #31220 > >                 current_dir </> path
00:26:54 v #31221 > >                 |> normalize_path
00:26:54 v #31222 > >                 |> sm'.split "/"
00:26:54 v #31223 > >                 |> fun x =>
00:26:54 v #31224 > >                     ((a x : _ i32 _), (0i32, (a ;[[]] : _ i32 _)))
00:26:54 v #31225 > >                     ||> am.foldBack fun x level, acc =>
00:26:54 v #31226 > >                         match x, level with
00:26:54 v #31227 > >                         | "..", _ => level + 1, acc
00:26:54 v #31228 > >                         | ".", _ => level, acc
00:26:54 v #31229 > >                         | _, 0 when x |> sm'.ends_with ":" => 0, a ;[[
00:26:54 v #31230 > > $'$"{!current_dir.[[0]]}:"' ]] ++ acc
00:26:54 v #31231 > >                         | _, 0 => 0, a ;[[ x ]] ++ acc
00:26:54 v #31232 > >                         | _ => level - 1, acc
00:26:54 v #31233 > >                 |> snd
00:26:54 v #31234 > >                 |> seq.of_array'
00:26:54 v #31235 > >                 |> sm'.concat (directory_separator_char () |> sm'.obj_to_string)
00:26:54 v #31236 > >             else
00:26:54 v #31237 > >                 inl path = !\\(path, $'"std::fs::canonicalize(&*$0)"') :
00:26:54 v #31238 > > resultm.result' path_buf stream.io_error
00:26:54 v #31239 > >                 path
00:26:54 v #31240 > >                 |> resultm.unwrap'
00:26:54 v #31241 > >                 |> path_buf_display
00:26:54 v #31242 > >                 |> sm'.format'
00:26:54 v #31243 > >                 |> sm'.from_std_string
00:26:54 v #31244 > >         | _ => fun _ => null ()
00:26:55 v #31245 > >
00:26:55 v #31246 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:26:55 v #31247 > > //// test
00:26:55 v #31248 > >
00:26:55 v #31249 > > "."
00:26:55 v #31250 > > |> get_full_path
00:26:55 v #31251 > > |> directory_info
00:26:55 v #31252 > > |> directory_info_name
00:26:55 v #31253 > > |> _assert_eq "spiral"
00:26:56 v #31254 > >
00:26:56 v #31255 > > ╭─[ 958.40ms - stdout ]────────────────────────────────────────────────────────╮
00:26:56 v #31256 > > │ __assert_eq / actual: "spiral" / expected: "spiral"                          │
00:26:56 v #31257 > > │                                                                              │
00:26:56 v #31258 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:26:56 v #31259 > >
00:26:56 v #31260 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:26:56 v #31261 > > //// test
00:26:56 v #31262 > >
00:26:56 v #31263 > > "dir/.././._file"
00:26:56 v #31264 > > |> get_full_path
00:26:56 v #31265 > > |> _assert_eq (get_current_directory () </> "._file")
00:26:57 v #31266 > >
00:26:57 v #31267 > > ╭─[ 1.01s - stdout ]───────────────────────────────────────────────────────────╮
00:26:57 v #31268 > > │ __assert_eq / actual: "C:\home\git\polyglot\lib\spiral\._file" / expected:   │
00:26:57 v #31269 > > │ "C:\home\git\polyglot\lib\spiral\._file"                                     │
00:26:57 v #31270 > > │                                                                              │
00:26:57 v #31271 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:26:57 v #31272 > >
00:26:57 v #31273 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:26:57 v #31274 > > //// test
00:26:57 v #31275 > > ///! rust -d regex
00:26:57 v #31276 > >
00:26:57 v #31277 > > "."
00:26:57 v #31278 > > |> get_full_path
00:26:57 v #31279 > > |> sm'.to_std_string
00:26:57 v #31280 > > |> new_path_buf
00:26:57 v #31281 > > |> path_buf_file_name
00:26:57 v #31282 > > |> optionm'.unwrap
00:26:57 v #31283 > > |> sm'.from_os_str_ref
00:26:57 v #31284 > > |> _assert_eq "spiral"
00:27:12 v #31285 > >
00:27:12 v #31286 > > ╭─[ 15.66s - return value ]────────────────────────────────────────────────────╮
00:27:12 v #31287 > > │ __assert_eq / actual: "spiral" / expected: "spiral"                          │
00:27:12 v #31288 > > │                                                                              │
00:27:12 v #31289 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:27:12 v #31290 > >
00:27:12 v #31291 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:27:12 v #31292 > > //// test
00:27:12 v #31293 > > ///! rust -d regex
00:27:12 v #31294 > >
00:27:12 v #31295 > > "dir/.././._file"
00:27:12 v #31296 > > |> get_full_path
00:27:12 v #31297 > > |> _assert_eq (get_current_directory () </> "._file")
00:27:28 v #31298 > >
00:27:28 v #31299 > > ╭─[ 15.53s - return value ]────────────────────────────────────────────────────╮
00:27:28 v #31300 > > │ __assert_eq / actual: "C:\home\git\polyglot\lib\spiral\._file" / expected:   │
00:27:28 v #31301 > > │ "C:\home\git\polyglot\lib\spiral\._file"                                     │
00:27:28 v #31302 > > │                                                                              │
00:27:28 v #31303 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:27:28 v #31304 > >
00:27:28 v #31305 > > ── markdown ────────────────────────────────────────────────────────────────────
00:27:28 v #31306 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:27:28 v #31307 > > │ ### standardize_path                                                         │
00:27:28 v #31308 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:27:28 v #31309 > >
00:27:28 v #31310 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:27:28 v #31311 > > let standardize_path path =
00:27:28 v #31312 > >     path |> get_full_path |> normalize_path
00:27:28 v #31313 > >
00:27:28 v #31314 > > ── markdown ────────────────────────────────────────────────────────────────────
00:27:28 v #31315 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:27:28 v #31316 > > │ ### absolute_path                                                            │
00:27:28 v #31317 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:27:28 v #31318 > >
00:27:28 v #31319 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:27:28 v #31320 > > let absolute_path path =
00:27:28 v #31321 > >     inl current_dir = get_current_directory ()
00:27:28 v #31322 > >     current_dir </> path |> standardize_path
00:27:29 v #31323 > >
00:27:29 v #31324 > > ── markdown ────────────────────────────────────────────────────────────────────
00:27:29 v #31325 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:27:29 v #31326 > > │ ### new_file_uri                                                             │
00:27:29 v #31327 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:27:29 v #31328 > >
00:27:29 v #31329 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:27:29 v #31330 > > inl new_file_uri (path : string) : string =
00:27:29 v #31331 > >     inl path = path |> sm'.trim_start [[ '/' ]]
00:27:29 v #31332 > >     $'$"file:///{!path}"'
00:27:29 v #31333 > >
00:27:29 v #31334 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:27:29 v #31335 > > //// test
00:27:29 v #31336 > >
00:27:29 v #31337 > > @"\\?\C:\test"
00:27:29 v #31338 > > |> normalize_path
00:27:29 v #31339 > > |> new_file_uri
00:27:29 v #31340 > > |> _assert_eq "file:///c:/test"
00:27:30 v #31341 > >
00:27:30 v #31342 > > ╭─[ 953.46ms - stdout ]────────────────────────────────────────────────────────╮
00:27:30 v #31343 > > │ __assert_eq / actual: "file:///c:/test" / expected: "file:///c:/test"        │
00:27:30 v #31344 > > │                                                                              │
00:27:30 v #31345 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:27:30 v #31346 > >
00:27:30 v #31347 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:27:30 v #31348 > > //// test
00:27:30 v #31349 > > ///! rust -d regex
00:27:30 v #31350 > >
00:27:30 v #31351 > > @"\\?\C:\test"
00:27:30 v #31352 > > |> normalize_path
00:27:30 v #31353 > > |> new_file_uri
00:27:30 v #31354 > > |> _assert_eq "file:///c:/test"
00:27:45 v #31355 > >
00:27:45 v #31356 > > ╭─[ 15.02s - return value ]────────────────────────────────────────────────────╮
00:27:45 v #31357 > > │ __assert_eq / actual: "file:///c:/test" / expected: "file:///c:/test"        │
00:27:45 v #31358 > > │                                                                              │
00:27:45 v #31359 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:27:45 v #31360 > >
00:27:45 v #31361 > > ── markdown ────────────────────────────────────────────────────────────────────
00:27:45 v #31362 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:27:45 v #31363 > > │ ## fsharp                                                                    │
00:27:45 v #31364 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:27:45 v #31365 > >
00:27:45 v #31366 > > ── markdown ────────────────────────────────────────────────────────────────────
00:27:45 v #31367 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:27:45 v #31368 > > │ ### file_exists_content_async                                                │
00:27:45 v #31369 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:27:45 v #31370 > >
00:27:45 v #31371 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:27:45 v #31372 > > inl file_exists_content_async path content : async.async bool =
00:27:45 v #31373 > >     run_target function
00:27:45 v #31374 > >         | Fsharp (Native) => fun () =>
00:27:45 v #31375 > >             fun () =>
00:27:45 v #31376 > >                 fix_condition
00:27:45 v #31377 > >                     fun () => path |> file_exists |> not
00:27:45 v #31378 > >                     fun () => false |> return
00:27:45 v #31379 > >                     fun () =>
00:27:45 v #31380 > >                         inl existing_content = path |> read_all_text_async |>
00:27:45 v #31381 > > async.let'
00:27:45 v #31382 > >                         content = existing_content |> return
00:27:45 v #31383 > >             |> async.new_async_unit
00:27:45 v #31384 > >         | _ => fun () => null ()
00:27:46 v #31385 > >
00:27:46 v #31386 > > ── markdown ────────────────────────────────────────────────────────────────────
00:27:46 v #31387 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:27:46 v #31388 > > │ ### write_all_text_exists_async                                              │
00:27:46 v #31389 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:27:46 v #31390 > >
00:27:46 v #31391 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:27:46 v #31392 > > inl write_all_text_exists_async path contents =
00:27:46 v #31393 > >     fun () =>
00:27:46 v #31394 > >         inl exists' = contents |> file_exists_content_async path |> async.let'
00:27:46 v #31395 > >         if not exists'
00:27:46 v #31396 > >         then contents |> write_all_text_async path |> async.do
00:27:46 v #31397 > >     |> async.new_async
00:27:46 v #31398 > >
00:27:46 v #31399 > > ── markdown ────────────────────────────────────────────────────────────────────
00:27:46 v #31400 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:27:46 v #31401 > > │ ### delete_directory_async                                                   │
00:27:46 v #31402 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:27:46 v #31403 > >
00:27:46 v #31404 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:27:46 v #31405 > > inl delete_directory_async path : _ i64 =
00:27:46 v #31406 > >     run_target function
00:27:46 v #31407 > >         | Fsharp (Native) => fun () =>
00:27:46 v #31408 > >             let rec loop (retry : i64) =
00:27:46 v #31409 > >                 fun () =>
00:27:46 v #31410 > >                     try_unit
00:27:46 v #31411 > >                         fun () =>
00:27:46 v #31412 > >                             path |> directory_delete true
00:27:46 v #31413 > >                             retry |> return
00:27:46 v #31414 > >                         fun ex =>
00:27:46 v #31415 > >                             if retry % 100i64 = 0 then
00:27:46 v #31416 > >                                 inl ex = ex |> sm'.format_exception
00:27:46 v #31417 > >                                 trace Debug
00:27:46 v #31418 > >                                     fun () =>
00:27:46 v #31419 > > "file_system.delete_directory_async"
00:27:46 v #31420 > >                                     fun () => { ex path = path |> get_file_name
00:27:46 v #31421 > > }
00:27:46 v #31422 > >                             async.sleep 10i32 |> async.do
00:27:46 v #31423 > >                             loop (retry + 1) |> async.return_await
00:27:46 v #31424 > >                 |> async.new_async
00:27:46 v #31425 > >             loop 0
00:27:46 v #31426 > >         | _ => fun () => null ()
00:27:47 v #31427 > >
00:27:47 v #31428 > > ── markdown ────────────────────────────────────────────────────────────────────
00:27:47 v #31429 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:27:47 v #31430 > > │ ### trace_file                                                               │
00:27:47 v #31431 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:27:47 v #31432 > >
00:27:47 v #31433 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:27:47 v #31434 > > let rec trace_file text =
00:27:47 v #31435 > >     run_target function
00:27:47 v #31436 > >     | Fsharp (Native) => fun () =>
00:27:47 v #31437 > >         try_unit
00:27:47 v #31438 > >             fun () =>
00:27:47 v #31439 > >                 inl assembly_name = env.get_entry_assembly_name ()
00:27:47 v #31440 > >                 inl guid = date_time.now () |> date_time.new_guid_from_date_time
00:27:47 v #31441 > >                 inl file_name = $'$"{!assembly_name}_{!guid}.txt"'
00:27:47 v #31442 > >
00:27:47 v #31443 > >                 inl workspace_root = get_workspace_root ()
00:27:47 v #31444 > >                 inl trace_dir = workspace_root </> "target/trace"
00:27:47 v #31445 > >                 trace_dir |> create_directory |> ignore
00:27:47 v #31446 > >                 inl path = trace_dir </> file_name
00:27:47 v #31447 > >                 text |> write_all_text_async path |> async.run_synchronously
00:27:47 v #31448 > >             fun ex =>
00:27:47 v #31449 > >                 trace_file $'$"file_system.trace_file / ex: %A{!ex}"'
00:27:47 v #31450 > >     | _ => fun () => ()
00:27:47 v #31451 > >
00:27:47 v #31452 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:27:47 v #31453 > > //// test
00:27:47 v #31454 > >
00:27:47 v #31455 > > inl get_count dir : i64 =
00:27:47 v #31456 > >     inl files = dir |> directory_get_files
00:27:47 v #31457 > >     a files |> am'.length
00:27:47 v #31458 > >
00:27:47 v #31459 > > inl trace_dir = get_workspace_root () </> "target/trace"
00:27:47 v #31460 > > trace_dir |> create_directory |> ignore
00:27:47 v #31461 > >
00:27:47 v #31462 > > inl count = get_count trace_dir
00:27:47 v #31463 > >
00:27:47 v #31464 > > trace_file "test"
00:27:47 v #31465 > >
00:27:47 v #31466 > > get_count trace_dir
00:27:47 v #31467 > > |> _assert_eq (count + 1)
00:27:48 v #31468 > >
00:27:48 v #31469 > > ╭─[ 1.06s - stdout ]───────────────────────────────────────────────────────────╮
00:27:48 v #31470 > > │ __assert_eq / actual: 49L / expected: 49L                                    │
00:27:48 v #31471 > > │                                                                              │
00:27:48 v #31472 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:27:48 v #31473 > >
00:27:48 v #31474 > > ── markdown ────────────────────────────────────────────────────────────────────
00:27:48 v #31475 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:27:48 v #31476 > > │ ### init_trace_file                                                          │
00:27:48 v #31477 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:27:48 v #31478 > >
00:27:48 v #31479 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:27:48 v #31480 > > inl init_trace_file enabled =
00:27:48 v #31481 > >     inl state_trace_file = get_trace_state_or_init None .trace_file
00:27:48 v #31482 > >     state_trace_file <- if enabled then trace_file else ignore
00:27:49 v #31483 > >
00:27:49 v #31484 > > ── markdown ────────────────────────────────────────────────────────────────────
00:27:49 v #31485 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:27:49 v #31486 > > │ ## file_system                                                               │
00:27:49 v #31487 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:27:49 v #31488 > >
00:27:49 v #31489 > > ── markdown ────────────────────────────────────────────────────────────────────
00:27:49 v #31490 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:27:49 v #31491 > > │ ### create_dir                                                               │
00:27:49 v #31492 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:27:49 v #31493 > >
00:27:49 v #31494 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:27:49 v #31495 > > let create_dir dir =
00:27:49 v #31496 > >     run_target function
00:27:49 v #31497 > >         | Rust (Contract | Wasm) => fun () => null ()
00:27:49 v #31498 > >         | Rust (Native) => fun () =>
00:27:49 v #31499 > >             inl dir = join dir
00:27:49 v #31500 > >             match dir |> create_dir_all |> resultm.map_error' sm'.format' |>
00:27:49 v #31501 > > resultm.unbox with
00:27:49 v #31502 > >             | Ok () =>
00:27:49 v #31503 > >                 trace Verbose
00:27:49 v #31504 > >                     fun () => "file_system.create_dir"
00:27:49 v #31505 > >                     fun () => { dir }
00:27:49 v #31506 > >             | Error error =>
00:27:49 v #31507 > >                 trace Critical
00:27:49 v #31508 > >                     fun () => "file_system.create_dir"
00:27:49 v #31509 > >                     fun () => { dir error }
00:27:49 v #31510 > >             inl disposable : _ () = new_disposable fun () =>
00:27:49 v #31511 > >                 dir
00:27:49 v #31512 > >                 |> directory_delete true
00:27:49 v #31513 > >             disposable
00:27:49 v #31514 > >         | _ => fun () =>
00:27:49 v #31515 > >             inl directory_info = dir |> create_directory
00:27:49 v #31516 > >             inl exists' = directory_info |> directory_info_exists
00:27:49 v #31517 > >             if not exists' then
00:27:49 v #31518 > >                 inl creation_time = directory_info |>
00:27:49 v #31519 > > directory_info_creation_time
00:27:49 v #31520 > >                 inl result = ($'{| Exists = !exists'; CreationTime =
00:27:49 v #31521 > > !creation_time |}' : infer) |> sm'.format_debug
00:27:49 v #31522 > >                 trace Debug
00:27:49 v #31523 > >                     fun () => "file_system.create_dir"
00:27:49 v #31524 > >                     fun () => { dir result }
00:27:49 v #31525 > >             inl disposable : _ () = new_disposable fun () =>
00:27:49 v #31526 > >                 dir
00:27:49 v #31527 > >                 |> delete_directory_async
00:27:49 v #31528 > >                 |> async.ignore
00:27:49 v #31529 > >                 |> async.run_synchronously
00:27:49 v #31530 > >             disposable
00:27:49 v #31531 > >
00:27:49 v #31532 > > ── markdown ────────────────────────────────────────────────────────────────────
00:27:49 v #31533 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:27:49 v #31534 > > │ ### create_temp_dir                                                          │
00:27:49 v #31535 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:27:49 v #31536 > >
00:27:49 v #31537 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:27:49 v #31538 > > inl create_temp_dir () =
00:27:49 v #31539 > >     inl dir = create_temp_path ()
00:27:49 v #31540 > >     dir, dir |> create_dir
00:27:49 v #31541 > >
00:27:49 v #31542 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:27:49 v #31543 > > //// test
00:27:49 v #31544 > >
00:27:49 v #31545 > > inl path, disposable = create_temp_dir ()
00:27:49 v #31546 > > disposable |> use |> ignore
00:27:49 v #31547 > > path
00:27:49 v #31548 > > |> directory_exists
00:27:49 v #31549 > > |> _assert_eq true
00:27:51 v #31550 > >
00:27:51 v #31551 > > ╭─[ 1.48s - stdout ]───────────────────────────────────────────────────────────╮
00:27:51 v #31552 > > │ __assert_eq / actual: true / expected: true                                  │
00:27:51 v #31553 > > │                                                                              │
00:27:51 v #31554 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:27:51 v #31555 > >
00:27:51 v #31556 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:27:51 v #31557 > > //// test
00:27:51 v #31558 > > ///! rust -d chrono
00:27:51 v #31559 > >
00:27:51 v #31560 > > inl path, disposable = create_temp_dir ()
00:27:51 v #31561 > > path
00:27:51 v #31562 > > |> directory_exists
00:27:51 v #31563 > > |> _assert_eq true
00:27:51 v #31564 > > disposable |> use |> ignore
00:27:51 v #31565 > > path
00:27:51 v #31566 > > |> directory_exists
00:27:51 v #31567 > > |> _assert_eq false
00:28:06 v #31568 > >
00:28:06 v #31569 > > ╭─[ 15.30s - return value ]────────────────────────────────────────────────────╮
00:28:06 v #31570 > > │ 00:00:00 v #1 file_system.create_dir / { dir =                         │
00:28:06 v #31571 > > │ C:\Users\i574n\AppData\Local\Temp\!create_temp_path_\spiral_builder_74f1d05d │
00:28:06 v #31572 > > │ 8d034768efa544ece0996920d28a8d2b8ae2ba6288466f239f5f647c\20241112-1026-0275- │
00:28:06 v #31573 > > │ 9667-0000009eab75 }                                                          │
00:28:06 v #31574 > > │ __assert_eq / actual: true / expected: true                                  │
00:28:06 v #31575 > > │ __assert_eq / actual: false / expected: false                                │
00:28:06 v #31576 > > │                                                                              │
00:28:06 v #31577 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:28:06 v #31578 > >
00:28:06 v #31579 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:28:06 v #31580 > > //// test
00:28:06 v #31581 > >
00:28:06 v #31582 > > inl lock_directory path =
00:28:06 v #31583 > >     fun () =>
00:28:06 v #31584 > >         trace Debug (fun () => "_1") id
00:28:06 v #31585 > >         "0" |> write_all_text_async (path </> "test.txt") |> async.do
00:28:06 v #31586 > >         file_stream
00:28:06 v #31587 > >             (path </> "test.txt")
00:28:06 v #31588 > >             ModeOpen
00:28:06 v #31589 > >             AccessReadWrite
00:28:06 v #31590 > >             ShareNone
00:28:06 v #31591 > >         |> use
00:28:06 v #31592 > >         |> ignore
00:28:06 v #31593 > >         trace Debug (fun () => "_2") id
00:28:06 v #31594 > >         async.sleep 2000 |> async.do
00:28:06 v #31595 > >         trace Debug (fun () => "_3") id
00:28:06 v #31596 > >         () |> return
00:28:06 v #31597 > >     |> async.new_async
00:28:06 v #31598 > >
00:28:06 v #31599 > > inl temp_dir, disposable = create_temp_dir ()
00:28:06 v #31600 > > disposable |> use |> ignore
00:28:06 v #31601 > > inl path = temp_dir </> "test"
00:28:06 v #31602 > >
00:28:06 v #31603 > > fun () =>
00:28:06 v #31604 > >     trace Debug (fun () => "1") id
00:28:06 v #31605 > >     path |> create_directory |> ignore
00:28:06 v #31606 > >     trace Debug (fun () => "2") id
00:28:06 v #31607 > >     inl child = path |> lock_directory |> async.start_child |> async.let'
00:28:06 v #31608 > >     trace Debug (fun () => "3") id
00:28:06 v #31609 > >     async.sleep 60 |> async.do
00:28:06 v #31610 > >     trace Debug (fun () => "4") id
00:28:06 v #31611 > >     inl retries = path |> delete_directory_async |> async.let'
00:28:06 v #31612 > >     trace Debug (fun () => "5") id
00:28:06 v #31613 > >     child |> async.do
00:28:06 v #31614 > >     trace Debug (fun () => "6") id
00:28:06 v #31615 > >     retries |> return
00:28:06 v #31616 > > |> async.new_async_unit
00:28:06 v #31617 > > |> async.run_with_timeout 3000
00:28:06 v #31618 > > |> fun x => x : _ i64
00:28:06 v #31619 > > |> function
00:28:06 v #31620 > >     | Some (retries : i64) =>
00:28:06 v #31621 > >         retries
00:28:06 v #31622 > >         |> _assert_between
00:28:06 v #31623 > >             (if platform.is_windows () then 50 else 0)
00:28:06 v #31624 > >             (if platform.is_windows () then 180 else 0)
00:28:06 v #31625 > >
00:28:06 v #31626 > >         true
00:28:06 v #31627 > >     | _ => false
00:28:06 v #31628 > > |> _assert_eq true
00:28:14 v #31629 > >
00:28:14 v #31630 > > ╭─[ 7.36s - stdout ]───────────────────────────────────────────────────────────╮
00:28:14 v #31631 > > │ 00:00:00 d #1 1                                                         │
00:28:14 v #31632 > > │ 00:00:00 d #2 2                                                         │
00:28:14 v #31633 > > │ 00:00:00 d #3 3                                                         │
00:28:14 v #31634 > > │ 00:00:00 d #4 _1                                                        │
00:28:14 v #31635 > > │ 00:00:00 d #5 _2                                                        │
00:28:14 v #31636 > > │ 00:00:00 d #6 4                                                         │
00:28:14 v #31637 > > │ 00:00:00 d #7 file_system.delete_directory_async / { ex =               │
00:28:14 v #31638 > > │ System.IO.IOException: The process cannot access the file 'test.txt' because │
00:28:14 v #31639 > > │ it is being used by another process.; path = test }                          │
00:28:14 v #31640 > > │ 00:00:01 d #8 file_system.delete_directory_async / { ex =               │
00:28:14 v #31641 > > │ System.IO.IOException: The process cannot access the file 'test.txt' because │
00:28:14 v #31642 > > │ it is being used by another process.; path = test }                          │
00:28:14 v #31643 > > │ 00:00:02 d #9 _3                                                        │
00:28:14 v #31644 > > │ 00:00:02 d #10 5                                                        │
00:28:14 v #31645 > > │ 00:00:02 d #11 6                                                        │
00:28:14 v #31646 > > │ __assert_between / actual: 126L / expected: struct (50L, 180L)               │
00:28:14 v #31647 > > │ __assert_eq / actual: true / expected: true                                  │
00:28:14 v #31648 > > │                                                                              │
00:28:14 v #31649 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:28:14 v #31650 > >
00:28:14 v #31651 > > ── markdown ────────────────────────────────────────────────────────────────────
00:28:14 v #31652 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:28:14 v #31653 > > │ ### create_temp_dir'                                                         │
00:28:14 v #31654 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:28:14 v #31655 > >
00:28:14 v #31656 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:28:14 v #31657 > > inl create_temp_dir' (hash : string) =
00:28:14 v #31658 > >     inl dir = hash |> guid.hash_guid |> create_temp_path'
00:28:14 v #31659 > >     dir, dir |> create_dir
00:28:14 v #31660 > >
00:28:14 v #31661 > > ── markdown ────────────────────────────────────────────────────────────────────
00:28:14 v #31662 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:28:14 v #31663 > > │ ### link_directory                                                           │
00:28:14 v #31664 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:28:14 v #31665 > >
00:28:14 v #31666 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:28:14 v #31667 > > let link_directory target_path path =
00:28:14 v #31668 > >     if target_path |> directory_exists |> not
00:28:14 v #31669 > >     then target_path |> create_dir |> ignore
00:28:14 v #31670 > >
00:28:14 v #31671 > >     inl lib_dir_path = path |> directory_get_parent |> optionm'.default_value'
00:28:14 v #31672 > > ""
00:28:14 v #31673 > >     if lib_dir_path |> directory_exists |> not
00:28:14 v #31674 > >     then lib_dir_path |> create_dir |> ignore
00:28:14 v #31675 > >
00:28:14 v #31676 > >     if (path |> directory_exists)
00:28:14 v #31677 > >         && (path |> read_link |> resultm.is_err) then
00:28:14 v #31678 > >         path |> directory_delete true
00:28:14 v #31679 > >
00:28:14 v #31680 > >     if path |> directory_exists |> not then
00:28:14 v #31681 > >         path |> directory_create_symbolic_link target_path
00:28:15 v #31682 > >
00:28:15 v #31683 > > ── markdown ────────────────────────────────────────────────────────────────────
00:28:15 v #31684 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:28:15 v #31685 > > │ ### link_file                                                                │
00:28:15 v #31686 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:28:15 v #31687 > >
00:28:15 v #31688 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:28:15 v #31689 > > let link_file target_path path =
00:28:15 v #31690 > >     if (path |> file_exists)
00:28:15 v #31691 > >         && (path |> read_link |> resultm.is_err) then
00:28:15 v #31692 > >         path |> file_delete
00:28:15 v #31693 > >
00:28:15 v #31694 > >     if path |> file_exists |> not then
00:28:15 v #31695 > >         path |> file_create_symbolic_link target_path
00:28:15 v #31696 > >
00:28:15 v #31697 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:28:15 v #31698 > > //// test
00:28:15 v #31699 > > ///! fsharp
00:28:15 v #31700 > > ///! rust -d sha2 regex
00:28:15 v #31701 > >
00:28:15 v #31702 > > inl file_name = "LICENSE"
00:28:15 v #31703 > > inl text = file_name
00:28:15 v #31704 > >
00:28:15 v #31705 > > inl test_hash =
00:28:15 v #31706 > >     (file_name, text)
00:28:15 v #31707 > >     |> sm'.format_debug
00:28:15 v #31708 > >     |> crypto.hash_text
00:28:15 v #31709 > >
00:28:15 v #31710 > > inl workspace_root = get_workspace_root ()
00:28:15 v #31711 > > inl test_dir = workspace_root </> "target/test/file_system" </> test_hash
00:28:15 v #31712 > >
00:28:15 v #31713 > > inl disposable = test_dir |> create_dir
00:28:15 v #31714 > >
00:28:15 v #31715 > > inl dir_path = test_dir </> "dir1"
00:28:15 v #31716 > >
00:28:15 v #31717 > > if dir_path |> directory_exists
00:28:15 v #31718 > > then dir_path |> directory_delete true
00:28:15 v #31719 > >
00:28:15 v #31720 > > dir_path |> create_dir |> ignore
00:28:15 v #31721 > >
00:28:15 v #31722 > > inl path = dir_path </> file_name
00:28:15 v #31723 > > text |> write_all_text path
00:28:15 v #31724 > >
00:28:15 v #31725 > > inl dir_link_path = test_dir </> "link1"
00:28:15 v #31726 > >
00:28:15 v #31727 > > dir_link_path |> link_directory dir_path
00:28:15 v #31728 > >
00:28:15 v #31729 > > inl link_path = dir_link_path </> file_name
00:28:15 v #31730 > >
00:28:15 v #31731 > > link_path
00:28:15 v #31732 > > |> read_all_text
00:28:15 v #31733 > > |> _assert_eq text
00:28:15 v #31734 > >
00:28:15 v #31735 > > dir_link_path
00:28:15 v #31736 > > |> read_link
00:28:15 v #31737 > > |> resultm.unwrap'
00:28:15 v #31738 > > |> path_buf_display
00:28:15 v #31739 > > |> convert
00:28:15 v #31740 > > |> _assert sm'.ends_with "dir1"
00:28:15 v #31741 > >
00:28:15 v #31742 > > link_path
00:28:15 v #31743 > > |> read_link
00:28:15 v #31744 > > |> resultm.unwrap'
00:28:15 v #31745 > > |> path_buf_display
00:28:15 v #31746 > > |> convert
00:28:15 v #31747 > > |> _assert sm'.ends_with "LICENSE"
00:28:15 v #31748 > >
00:28:15 v #31749 > > inl link_name = "LICENSE_"
00:28:15 v #31750 > >
00:28:15 v #31751 > > inl link_path = dir_path </> link_name
00:28:15 v #31752 > >
00:28:15 v #31753 > > link_path |> link_file path
00:28:15 v #31754 > >
00:28:15 v #31755 > > inl link_path' = dir_link_path </> link_name
00:28:15 v #31756 > >
00:28:15 v #31757 > > link_path'
00:28:15 v #31758 > > |> read_all_text
00:28:15 v #31759 > > |> _assert_eq text
00:28:15 v #31760 > >
00:28:15 v #31761 > > link_path
00:28:15 v #31762 > > |> read_link
00:28:15 v #31763 > > |> resultm.unwrap'
00:28:15 v #31764 > > |> path_buf_display
00:28:15 v #31765 > > |> convert
00:28:15 v #31766 > > |> _assert sm'.ends_with "LICENSE"
00:28:15 v #31767 > >
00:28:15 v #31768 > > link_path'
00:28:15 v #31769 > > |> read_link
00:28:15 v #31770 > > |> resultm.unwrap'
00:28:15 v #31771 > > |> path_buf_display
00:28:15 v #31772 > > |> convert
00:28:15 v #31773 > > |> _assert sm'.ends_with "LICENSE"
00:28:15 v #31774 > >
00:28:15 v #31775 > > disposable |> use |> ignore
00:28:33 v #31776 > >
00:28:33 v #31777 > > ╭─[ 17.74s - return value ]────────────────────────────────────────────────────╮
00:28:33 v #31778 > > │                                                                              │
00:28:33 v #31779 > > │ .rs output (rust -d sha2 regex):                                             │
00:28:33 v #31780 > > │ 00:00:00 v #1 file_system.create_dir / { dir =                         │
00:28:33 v #31781 > > │ c:\home\git\polyglot\target/test/file_system\17e16cea7984b0e6f403259e33e4959 │
00:28:33 v #31782 > > │ 2eda85aedd790ed910e9f3e619d9cd257 }                                          │
00:28:33 v #31783 > > │ 00:00:00 v #2 file_system.create_dir / { dir =                         │
00:28:33 v #31784 > > │ c:\home\git\polyglot\target/test/file_system\17e16cea7984b0e6f403259e33e4959 │
00:28:33 v #31785 > > │ 2eda85aedd790ed910e9f3e619d9cd257\dir1 }                                     │
00:28:33 v #31786 > > │ __assert_eq / actual: "LICENSE" / expected: "LICENSE"                        │
00:28:33 v #31787 > > │ __assert / actual: "dir1" / expected:                                        │
00:28:33 v #31788 > > │ "c:\home\git\polyglot\target\test\file_system\17e16cea7984b0e6f403259e33e495 │
00:28:33 v #31789 > > │ 92eda85aedd790ed910e9f3e619d9cd257\dir1"                                     │
00:28:33 v #31790 > > │ __assert / actual: "LICENSE" / expected:                                     │
00:28:33 v #31791 > > │ "c:\home\git\polyglot\target\test\file_system\17e16cea7984b0e6f403259e33e495 │
00:28:33 v #31792 > > │ 92eda85aedd790ed910e9f3e619d9cd257\dir1\LICENSE"                             │
00:28:33 v #31793 > > │ __assert_eq / actual: "LICENSE" / expected: "LICENSE"                        │
00:28:33 v #31794 > > │ __assert / actual: "LICENSE" / expected:                                     │
00:28:33 v #31795 > > │ "c:\home\git\polyglot\target\test\file_system\17e16cea7984b0e6f403259e33e495 │
00:28:33 v #31796 > > │ 92eda85aedd790ed910e9f3e619d9cd257\dir1\LICENSE"                             │
00:28:33 v #31797 > > │ __assert / actual: "LICENSE" / expected:                                     │
00:28:33 v #31798 > > │ "c:\home\git\polyglot\target\test\file_system\17e16cea7984b0e6f403259e33e495 │
00:28:33 v #31799 > > │ 92eda85aedd790ed910e9f3e619d9cd257\dir1\LICENSE"                             │
00:28:33 v #31800 > > │                                                                              │
00:28:33 v #31801 > > │                                                                              │
00:28:33 v #31802 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:28:33 v #31803 > >
00:28:33 v #31804 > > ╭─[ 17.74s - stdout ]──────────────────────────────────────────────────────────╮
00:28:33 v #31805 > > │ .fsx output:                                                                 │
00:28:33 v #31806 > > │ __assert_eq / actual: "LICENSE" / expected: "LICENSE"                        │
00:28:33 v #31807 > > │ __assert / actual: "dir1" / expected:                                        │
00:28:33 v #31808 > > │ "C:\home\git\polyglot\target\test\file_system\8f260c25ec3f6eaaf0d0d1b67ed9c4 │
00:28:33 v #31809 > > │ 7873a182ca04606835404e641a952871da\dir1"                                     │
00:28:33 v #31810 > > │ __assert / actual: "LICENSE" / expected:                                     │
00:28:33 v #31811 > > │ "C:\home\git\polyglot\target\test\file_system\8f260c25ec3f6eaaf0d0d1b67ed9c4 │
00:28:33 v #31812 > > │ 7873a182ca04606835404e641a952871da\dir1\LICENSE"                             │
00:28:33 v #31813 > > │ __assert_eq / actual: "LICENSE" / expected: "LICENSE"                        │
00:28:33 v #31814 > > │ __assert / actual: "LICENSE" / expected:                                     │
00:28:33 v #31815 > > │ "C:\home\git\polyglot\target\test\file_system\8f260c25ec3f6eaaf0d0d1b67ed9c4 │
00:28:33 v #31816 > > │ 7873a182ca04606835404e641a952871da\dir1\LICENSE"                             │
00:28:33 v #31817 > > │ __assert / actual: "LICENSE" / expected:                                     │
00:28:33 v #31818 > > │ "C:\home\git\polyglot\target\test\file_system\8f260c25ec3f6eaaf0d0d1b67ed9c4 │
00:28:33 v #31819 > > │ 7873a182ca04606835404e641a952871da\dir1\LICENSE"                             │
00:28:33 v #31820 > > │                                                                              │
00:28:33 v #31821 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:28:33 v #31822 > >
00:28:33 v #31823 > > ── markdown ────────────────────────────────────────────────────────────────────
00:28:33 v #31824 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:28:33 v #31825 > > │ ## rust                                                                      │
00:28:33 v #31826 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:28:33 v #31827 > >
00:28:33 v #31828 > > ── markdown ────────────────────────────────────────────────────────────────────
00:28:33 v #31829 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:28:33 v #31830 > > │ ### file_exists_content                                                      │
00:28:33 v #31831 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:28:33 v #31832 > >
00:28:33 v #31833 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:28:33 v #31834 > > let file_exists_content path content : bool =
00:28:33 v #31835 > >     run_target function
00:28:33 v #31836 > >         | Rust (Native) => fun () =>
00:28:33 v #31837 > >             if path |> file_exists |> not
00:28:33 v #31838 > >             then false
00:28:33 v #31839 > >             else
00:28:33 v #31840 > >                 inl existing_content = path |> read_all_text
00:28:33 v #31841 > >                 content = existing_content
00:28:33 v #31842 > >         | _ => fun () => null ()
00:28:33 v #31843 > >
00:28:33 v #31844 > > ── markdown ────────────────────────────────────────────────────────────────────
00:28:33 v #31845 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:28:33 v #31846 > > │ ### write_all_text_exists                                                    │
00:28:33 v #31847 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:28:33 v #31848 > >
00:28:33 v #31849 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:28:33 v #31850 > > let write_all_text_exists path contents =
00:28:33 v #31851 > >     inl exists' = contents |> file_exists_content path
00:28:33 v #31852 > >     if not exists' then
00:28:33 v #31853 > >         inl dir = path |> directory_get_parent |> optionm'.default_value' ""
00:28:33 v #31854 > >         if dir |> directory_exists |> not
00:28:33 v #31855 > >         then dir |> create_dir |> ignore
00:28:33 v #31856 > >         contents |> write_all_text path
00:28:34 v #31857 > >
00:28:34 v #31858 > > ── markdown ────────────────────────────────────────────────────────────────────
00:28:34 v #31859 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:28:34 v #31860 > > │ ## fsharp                                                                    │
00:28:34 v #31861 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:28:34 v #31862 > >
00:28:34 v #31863 > > ── markdown ────────────────────────────────────────────────────────────────────
00:28:34 v #31864 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:28:34 v #31865 > > │ ### wait_for_file_access                                                     │
00:28:34 v #31866 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:28:34 v #31867 > >
00:28:34 v #31868 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:28:34 v #31869 > > inl wait_for_file_access access path =
00:28:34 v #31870 > >     run_target function
00:28:34 v #31871 > >         | Fsharp (Native) => fun () =>
00:28:34 v #31872 > >             inl file_access, file_share =
00:28:34 v #31873 > >                 access
00:28:34 v #31874 > >                 |> optionm'.default_value (AccessReadWrite, ShareRead)
00:28:34 v #31875 > >             let rec loop (retry : i64) : _ i64 =
00:28:34 v #31876 > >                 fun () =>
00:28:34 v #31877 > >                     try_unit
00:28:34 v #31878 > >                         fun () =>
00:28:34 v #31879 > >                             file_stream
00:28:34 v #31880 > >                                 path
00:28:34 v #31881 > >                                 ModeOpen
00:28:34 v #31882 > >                                 file_access
00:28:34 v #31883 > >                                 file_share
00:28:34 v #31884 > >                             |> use
00:28:34 v #31885 > >                             |> ignore
00:28:34 v #31886 > >                             retry |> return
00:28:34 v #31887 > >                         fun ex =>
00:28:34 v #31888 > >                             if retry > 0 && retry % 100i64 = 0 then
00:28:34 v #31889 > >                                 inl ex = ex |> sm'.format_exception
00:28:34 v #31890 > >                                 trace Debug
00:28:34 v #31891 > >                                     fun () => "file_system.wait_for_file_access"
00:28:34 v #31892 > >                                     fun () => { path = path |> get_file_name;
00:28:34 v #31893 > > retry ex }
00:28:34 v #31894 > >                             async.sleep 10i32 |> async.do
00:28:34 v #31895 > >                             loop (retry + 1) |> async.return_await
00:28:34 v #31896 > >                 |> async.new_async
00:28:34 v #31897 > >             loop 0
00:28:34 v #31898 > >         | _ => fun () => null ()
00:28:34 v #31899 > >
00:28:34 v #31900 > > inl wait_for_file_access_read path =
00:28:34 v #31901 > >     path
00:28:34 v #31902 > >     |> wait_for_file_access (Some (
00:28:34 v #31903 > >         AccessRead,
00:28:34 v #31904 > >         ShareRead
00:28:34 v #31905 > >     ))
00:28:34 v #31906 > >
00:28:34 v #31907 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:28:34 v #31908 > > //// test
00:28:34 v #31909 > >
00:28:34 v #31910 > > inl lock_file path =
00:28:34 v #31911 > >     fun () =>
00:28:34 v #31912 > >         trace Debug (fun () => "_1") id
00:28:34 v #31913 > >         inl stream : file_stream' =
00:28:34 v #31914 > >             file_stream
00:28:34 v #31915 > >                 path
00:28:34 v #31916 > >                 ModeOpen
00:28:34 v #31917 > >                 AccessReadWrite
00:28:34 v #31918 > >                 ShareNone
00:28:34 v #31919 > >             |> use
00:28:34 v #31920 > >         trace Debug (fun () => "_2") id
00:28:34 v #31921 > >         async.sleep 2000 |> async.do
00:28:34 v #31922 > >         trace Debug (fun () => "_3") id
00:28:34 v #31923 > >         ($'!stream.Seek (0L, System.IO.SeekOrigin.Begin)' : i64) |> ignore
00:28:34 v #31924 > >         trace Debug (fun () => "_4") id
00:28:34 v #31925 > >         $'!stream.WriteByte' 49u8
00:28:34 v #31926 > >         trace Debug (fun () => "_5") id
00:28:34 v #31927 > >         stream |> $'_.Flush()'
00:28:34 v #31928 > >         trace Debug (fun () => "_6") id
00:28:34 v #31929 > >     |> async.new_async
00:28:34 v #31930 > >
00:28:34 v #31931 > > inl file_name = "test.txt"
00:28:34 v #31932 > > inl text = "0"
00:28:34 v #31933 > >
00:28:34 v #31934 > > inl temp_dir, disposable =
00:28:34 v #31935 > >     (file_name, text)
00:28:34 v #31936 > >     |> sm'.format_debug
00:28:34 v #31937 > >     |> crypto.hash_text
00:28:34 v #31938 > >     |> create_temp_dir'
00:28:34 v #31939 > > disposable |> use |> ignore
00:28:34 v #31940 > > inl path = temp_dir </> file_name
00:28:34 v #31941 > >
00:28:34 v #31942 > > fun () =>
00:28:34 v #31943 > >     trace Debug (fun () => "1") id
00:28:34 v #31944 > >     text |> write_all_text_async path |> async.do
00:28:34 v #31945 > >     trace Debug (fun () => "2") id
00:28:34 v #31946 > >     inl child = path |> lock_file |> async.start_child |> async.let'
00:28:34 v #31947 > >     trace Debug (fun () => "3") id
00:28:34 v #31948 > >     async.sleep 1 |> async.do
00:28:34 v #31949 > >     trace Debug (fun () => "4") id
00:28:34 v #31950 > >     inl retries = path |> wait_for_file_access None |> async.let'
00:28:34 v #31951 > >     trace Debug (fun () => "5") id
00:28:34 v #31952 > >     inl text = path |> read_all_text_async |> async.let'
00:28:34 v #31953 > >     trace Debug (fun () => "6") id
00:28:34 v #31954 > >     child |> async.do
00:28:34 v #31955 > >     trace Debug (fun () => "7") id
00:28:34 v #31956 > >     (retries, text) |> return
00:28:34 v #31957 > > |> async.new_async_unit
00:28:34 v #31958 > > |> async.run_with_timeout 3000
00:28:34 v #31959 > > |> function
00:28:34 v #31960 > >     | Some ((retries : i64), text) =>
00:28:34 v #31961 > >         retries
00:28:34 v #31962 > >         |> _assert_between
00:28:34 v #31963 > >             (if platform.is_windows () then 50 else 100)
00:28:34 v #31964 > >             (if platform.is_windows () then 180 else 200)
00:28:34 v #31965 > >
00:28:34 v #31966 > >         text |> _assert_eq (join "1")
00:28:34 v #31967 > >
00:28:34 v #31968 > >         true
00:28:34 v #31969 > >     | _ => false
00:28:34 v #31970 > > |> _assert_eq true
00:28:42 v #31971 > >
00:28:42 v #31972 > > ╭─[ 7.84s - stdout ]───────────────────────────────────────────────────────────╮
00:28:42 v #31973 > > │ 00:00:00 d #1 1                                                         │
00:28:42 v #31974 > > │ 00:00:00 d #2 2                                                         │
00:28:42 v #31975 > > │ 00:00:00 d #3 3                                                         │
00:28:42 v #31976 > > │ 00:00:00 d #4 _1                                                        │
00:28:42 v #31977 > > │ 00:00:00 d #5 _2                                                        │
00:28:42 v #31978 > > │ 00:00:00 d #6 4                                                         │
00:28:42 v #31979 > > │ 00:00:01 d #7 file_system.wait_for_file_access / { path = test.txt;     │
00:28:42 v #31980 > > │ retry = 100; ex = System.IO.IOException: The process cannot access the file  │
00:28:42 v #31981 > > │ 'C:\Users\i574n\AppData\Local\Temp\!create_temp_path_\dotnet-repl\613830ed-0 │
00:28:42 v #31982 > > │ 16e-d959-8d21-02dc1c63c252\test.txt' because it is being used by another     │
00:28:42 v #31983 > > │ process. }                                                                   │
00:28:42 v #31984 > > │ 00:00:02 d #8 _3                                                        │
00:28:42 v #31985 > > │ 00:00:02 d #9 _4                                                        │
00:28:42 v #31986 > > │ 00:00:02 d #10 _5                                                       │
00:28:42 v #31987 > > │ 00:00:02 d #11 _6                                                       │
00:28:42 v #31988 > > │ 00:00:02 d #12 5                                                        │
00:28:42 v #31989 > > │ 00:00:02 d #13 6                                                        │
00:28:42 v #31990 > > │ 00:00:02 d #14 7                                                        │
00:28:42 v #31991 > > │ __assert_between / actual: 128L / expected: struct (50L, 180L)               │
00:28:42 v #31992 > > │ __assert_eq / actual: "1" / expected: "1"                                    │
00:28:42 v #31993 > > │ __assert_eq / actual: true / expected: true                                  │
00:28:42 v #31994 > > │                                                                              │
00:28:42 v #31995 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:28:42 v #31996 > >
00:28:42 v #31997 > > ── markdown ────────────────────────────────────────────────────────────────────
00:28:42 v #31998 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:28:42 v #31999 > > │ ### read_all_text_retry_async                                                │
00:28:42 v #32000 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:28:42 v #32001 > >
00:28:42 v #32002 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:28:42 v #32003 > > inl read_all_text_retry_async full_path : async.async (optionm'.option' string)
00:28:42 v #32004 > > =
00:28:42 v #32005 > >     run_target function
00:28:42 v #32006 > >         | Fsharp (Native) => fun () =>
00:28:42 v #32007 > >             let rec loop (retry : i64) =
00:28:42 v #32008 > >                 fun () =>
00:28:42 v #32009 > >                     inl retry = join retry
00:28:42 v #32010 > >                     try_unit
00:28:42 v #32011 > >                         fun () =>
00:28:42 v #32012 > >                             if retry > 0
00:28:42 v #32013 > >                             then
00:28:42 v #32014 > >                                 full_path
00:28:42 v #32015 > >                                 |> wait_for_file_access_read
00:28:42 v #32016 > >                                 |> async.run_with_timeout_async 1000
00:28:42 v #32017 > >                                 |> async.ignore
00:28:42 v #32018 > >                                 |> async.do
00:28:42 v #32019 > >                             full_path |> read_all_text_async |> async.map (Some
00:28:42 v #32020 > > >> optionm'.box) |> async.return_await
00:28:42 v #32021 > >                         fun ex =>
00:28:42 v #32022 > >                             fix_condition
00:28:42 v #32023 > >                                 fun () => retry <> 0
00:28:42 v #32024 > >                                 fun () =>
00:28:42 v #32025 > >                                     inl ex = ex |> sm'.format_exception
00:28:42 v #32026 > >                                     trace Debug
00:28:42 v #32027 > >                                         fun () =>
00:28:42 v #32028 > > "file_system.read_all_text_retry_async"
00:28:42 v #32029 > >                                         fun () => { retry ex }
00:28:42 v #32030 > >                                     (None : _ string) |> optionm'.box |> return
00:28:42 v #32031 > >                                 fun () =>
00:28:42 v #32032 > >                                     loop (retry + 1) |> async.return_await
00:28:42 v #32033 > >                 |> async.new_async
00:28:42 v #32034 > >             loop 0
00:28:42 v #32035 > >         | _ => fun () => null ()
00:28:42 v #32036 > >
00:28:42 v #32037 > > ── markdown ────────────────────────────────────────────────────────────────────
00:28:42 v #32038 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:28:42 v #32039 > > │ ### move_file_async                                                          │
00:28:42 v #32040 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:28:42 v #32041 > >
00:28:42 v #32042 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:28:42 v #32043 > > inl move_file_async new_path old_path : _ i64 =
00:28:42 v #32044 > >     run_target function
00:28:42 v #32045 > >         | Fsharp (Native) => fun () =>
00:28:42 v #32046 > >             let rec loop (retry : i64) =
00:28:42 v #32047 > >                 fun () =>
00:28:42 v #32048 > >                     try_unit
00:28:42 v #32049 > >                         fun () =>
00:28:42 v #32050 > >                             old_path |> file_move new_path
00:28:42 v #32051 > >                             return retry
00:28:42 v #32052 > >                         fun ex =>
00:28:42 v #32053 > >                             if retry % 100 = 0 then
00:28:42 v #32054 > >
00:28:42 v #32055 > >                                 trace Warning
00:28:42 v #32056 > >                                     fun () => "move_file_async"
00:28:42 v #32057 > >                                     fun () => {
00:28:42 v #32058 > >                                         old_path = old_path |> get_file_name
00:28:42 v #32059 > >                                         new_path = new_path |> get_file_name
00:28:42 v #32060 > >                                         ex
00:28:42 v #32061 > >                                     }
00:28:42 v #32062 > >                             async.sleep 10 |> async.do
00:28:42 v #32063 > >                             loop (retry + 1) |> async.return_await
00:28:42 v #32064 > >                 |> async.new_async_unit
00:28:42 v #32065 > >             loop 0
00:28:42 v #32066 > >         | _ => fun () => null ()
00:28:43 v #32067 > >
00:28:43 v #32068 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:28:43 v #32069 > > //// test
00:28:43 v #32070 > >
00:28:43 v #32071 > > inl lock_file path =
00:28:43 v #32072 > >     fun () =>
00:28:43 v #32073 > >         trace Debug (fun () => "_1") id
00:28:43 v #32074 > >         file_stream
00:28:43 v #32075 > >             path
00:28:43 v #32076 > >             ModeOpen
00:28:43 v #32077 > >             AccessReadWrite
00:28:43 v #32078 > >             ShareNone
00:28:43 v #32079 > >         |> use
00:28:43 v #32080 > >         |> ignore
00:28:43 v #32081 > >         trace Debug (fun () => "_2") id
00:28:43 v #32082 > >         async.sleep 2000 |> async.do
00:28:43 v #32083 > >         trace Debug (fun () => "_3") id
00:28:43 v #32084 > >     |> async.new_async
00:28:43 v #32085 > >
00:28:43 v #32086 > > fun () =>
00:28:43 v #32087 > >     inl file_name = "test.txt"
00:28:43 v #32088 > >     inl text = "0"
00:28:43 v #32089 > >
00:28:43 v #32090 > >     inl temp_dir, disposable =
00:28:43 v #32091 > >         (file_name, text)
00:28:43 v #32092 > >         |> sm'.format_debug
00:28:43 v #32093 > >         |> crypto.hash_text
00:28:43 v #32094 > >         |> create_temp_dir'
00:28:43 v #32095 > >     disposable |> use |> ignore
00:28:43 v #32096 > >     let path = temp_dir </> file_name
00:28:43 v #32097 > >     let new_path = temp_dir </> "test2.txt"
00:28:43 v #32098 > >
00:28:43 v #32099 > >     trace Debug (fun () => "1") id
00:28:43 v #32100 > >     text |> write_all_text_async path |> async.do
00:28:43 v #32101 > >     trace Debug (fun () => "2") id
00:28:43 v #32102 > >     inl child = lock_file path |> async.start_child |> async.let'
00:28:43 v #32103 > >     trace Debug (fun () => "3") id
00:28:43 v #32104 > >     async.sleep 1 |> async.do
00:28:43 v #32105 > >     trace Debug (fun () => "4") id
00:28:43 v #32106 > >     inl retries1 = path |> move_file_async new_path |> async.let'
00:28:43 v #32107 > >     trace Debug (fun () => "5") id
00:28:43 v #32108 > >     inl retries2 = new_path |> wait_for_file_access None |> async.let'
00:28:43 v #32109 > >     trace Debug (fun () => "6") id
00:28:43 v #32110 > >     inl text = new_path |> read_all_text_async |> async.let'
00:28:43 v #32111 > >     trace Debug (fun () => "7") id
00:28:43 v #32112 > >     child |> async.do
00:28:43 v #32113 > >     trace Debug (fun () => "8") id
00:28:43 v #32114 > >     (retries1, retries2, text) |> return
00:28:43 v #32115 > > |> async.new_async_unit
00:28:43 v #32116 > > |> async.run_with_timeout 3000
00:28:43 v #32117 > > |> function
00:28:43 v #32118 > >     | Some (retries1, retries2, text) =>
00:28:43 v #32119 > >         retries1
00:28:43 v #32120 > >         |> _assert_between
00:28:43 v #32121 > >             (if platform.is_windows () then 50i64 else 0)
00:28:43 v #32122 > >             (if platform.is_windows () then 200 else 0)
00:28:43 v #32123 > >
00:28:43 v #32124 > >         retries2
00:28:43 v #32125 > >         |> _assert_between
00:28:43 v #32126 > >             (if platform.is_windows () then 0i64 else 100)
00:28:43 v #32127 > >             (if platform.is_windows () then 0 else 200)
00:28:43 v #32128 > >
00:28:43 v #32129 > >         text |> _assert_eq (join "0")
00:28:43 v #32130 > >
00:28:43 v #32131 > >         true
00:28:43 v #32132 > >     | _ => false
00:28:43 v #32133 > > |> _assert_eq true
00:28:51 v #32134 > >
00:28:51 v #32135 > > ╭─[ 7.76s - stdout ]───────────────────────────────────────────────────────────╮
00:28:51 v #32136 > > │ 00:00:00 d #1 1                                                         │
00:28:51 v #32137 > > │ 00:00:00 d #2 2                                                         │
00:28:51 v #32138 > > │ 00:00:00 d #3 3                                                         │
00:28:51 v #32139 > > │ 00:00:00 d #4 _1                                                        │
00:28:51 v #32140 > > │ 00:00:00 d #5 _2                                                        │
00:28:51 v #32141 > > │ 00:00:00 d #6 4                                                         │
00:28:51 v #32142 > > │ 00:00:00 w #7 move_file_async / { old_path = test.txt; new_path =       │
00:28:51 v #32143 > > │ test2.txt; ex = System.IO.IOException: The process cannot access the file    │
00:28:51 v #32144 > > │ because it is being used by another process.                                 │
00:28:51 v #32145 > > │    at System.IO.FileSystem.MoveFile(String sourceFullPath, String            │
00:28:51 v #32146 > > │ destFullPath, Boolean overwrite)                                             │
00:28:51 v #32147 > > │    at FSI_0125._v229@5936-1.Invoke(Unit unitVar)                             │
00:28:51 v #32148 > > │    at Microsoft.FSharp.Control.AsyncPrimitives.CallThenInvoke[               │
00:28:51 v #32149 > > │ T,TResult](AsyncActivation`1 ctxt, TResult result1, FSharpFunc`2 part2) in   │
00:28:51 v #32150 > > │ D:\a\_work\1\s\src\FSharp.Core\async.fs:line 510                             │
00:28:51 v #32151 > > │    at Microsoft.FSharp.Control.Trampoline.Execute(FSharpFunc`2 firstAction)  │
00:28:51 v #32152 > > │ in D:\a\_work\1\s\src\FSharp.Core\async.fs:line 112 }                        │
00:28:51 v #32153 > > │ 00:00:01 w #8 move_file_async / { old_path = test.txt; new_path =       │
00:28:51 v #32154 > > │ test2.txt; ex = System.IO.IOException: The process cannot access the file    │
00:28:51 v #32155 > > │ because it is being used by another process.                                 │
00:28:51 v #32156 > > │    at System.IO.FileSystem.MoveFile(String sourceFullPath, String            │
00:28:51 v #32157 > > │ destFullPath, Boolean overwrite)                                             │
00:28:51 v #32158 > > │    at FSI_0125._v229@5936-1.Invoke(Unit unitVar)                             │
00:28:51 v #32159 > > │    at Microsoft.FSharp.Control.AsyncPrimitives.CallThenInvoke[               │
00:28:51 v #32160 > > │ T,TResult](AsyncActivation`1 ctxt, TResult result1, FSharpFunc`2 part2) in   │
00:28:51 v #32161 > > │ D:\a\_work\1\s\src\FSharp.Core\async.fs:line 510                             │
00:28:51 v #32162 > > │    at Microsoft.FSharp.Control.Trampoline.Execute(FSharpFunc`2 firstAction)  │
00:28:51 v #32163 > > │ in D:\a\_work\1\s\src\FSharp.Core\async.fs:line 112 }                        │
00:28:51 v #32164 > > │ 00:00:02 d #9 _3                                                        │
00:28:51 v #32165 > > │ 00:00:02 d #10 5                                                        │
00:28:51 v #32166 > > │ 00:00:02 d #11 6                                                        │
00:28:51 v #32167 > > │ 00:00:02 d #12 7                                                        │
00:28:51 v #32168 > > │ 00:00:02 d #13 8                                                        │
00:28:51 v #32169 > > │ __assert_between / actual: 128L / expected: struct (50L, 200L)               │
00:28:51 v #32170 > > │ __assert_between / actual: 0L / expected: struct (0L, 0L)                    │
00:28:51 v #32171 > > │ __assert_eq / actual: "0" / expected: "0"                                    │
00:28:51 v #32172 > > │ __assert_eq / actual: true / expected: true                                  │
00:28:51 v #32173 > > │                                                                              │
00:28:51 v #32174 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:28:51 v #32175 > >
00:28:51 v #32176 > > ── markdown ────────────────────────────────────────────────────────────────────
00:28:51 v #32177 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:28:51 v #32178 > > │ ### delete_file_async                                                        │
00:28:51 v #32179 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:28:51 v #32180 > >
00:28:51 v #32181 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:28:51 v #32182 > > inl delete_file_async path : _ i64 =
00:28:51 v #32183 > >     run_target function
00:28:51 v #32184 > >         | Fsharp (Native) => fun () =>
00:28:51 v #32185 > >             let rec loop (retry : i64) =
00:28:51 v #32186 > >                 fun () =>
00:28:51 v #32187 > >                     try_unit
00:28:51 v #32188 > >                         fun () =>
00:28:51 v #32189 > >                             path |> file_delete
00:28:51 v #32190 > >                             return retry
00:28:51 v #32191 > >                         fun ex =>
00:28:51 v #32192 > >                             if retry % 100 = 0 then
00:28:51 v #32193 > >                                 trace Warning
00:28:51 v #32194 > >                                     fun () => "delete_file_async"
00:28:51 v #32195 > >                                     fun () => { path = path |> get_file_name; ex
00:28:51 v #32196 > > = ex |> sm'.format_exception }
00:28:51 v #32197 > >                             async.sleep 10 |> async.do
00:28:51 v #32198 > >                             loop (retry + 1) |> async.return_await
00:28:51 v #32199 > >                 |> async.new_async
00:28:51 v #32200 > >             loop 0
00:28:51 v #32201 > >         | _ => fun () => null ()
00:28:51 v #32202 > >
00:28:51 v #32203 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:28:51 v #32204 > > //// test
00:28:51 v #32205 > >
00:28:51 v #32206 > > inl lock_file path =
00:28:51 v #32207 > >     fun () =>
00:28:51 v #32208 > >         trace Debug (fun () => "_1") id
00:28:51 v #32209 > >         file_stream
00:28:51 v #32210 > >             path
00:28:51 v #32211 > >             ModeOpen
00:28:51 v #32212 > >             AccessReadWrite
00:28:51 v #32213 > >             ShareNone
00:28:51 v #32214 > >         |> use
00:28:51 v #32215 > >         |> ignore
00:28:51 v #32216 > >         trace Debug (fun () => "_2") id
00:28:51 v #32217 > >         async.sleep 2000 |> async.do
00:28:51 v #32218 > >         trace Debug (fun () => "_3") id
00:28:51 v #32219 > >     |> async.new_async
00:28:51 v #32220 > >
00:28:51 v #32221 > > fun () =>
00:28:51 v #32222 > >     inl file_name = "test.txt"
00:28:51 v #32223 > >     inl text = "0"
00:28:51 v #32224 > >
00:28:51 v #32225 > >     inl temp_dir, disposable =
00:28:51 v #32226 > >         (file_name, text)
00:28:51 v #32227 > >         |> sm'.format_debug
00:28:51 v #32228 > >         |> crypto.hash_text
00:28:51 v #32229 > >         |> create_temp_dir'
00:28:51 v #32230 > >     disposable |> use |> ignore
00:28:51 v #32231 > >     inl path = temp_dir </> file_name
00:28:51 v #32232 > >
00:28:51 v #32233 > >     trace Debug (fun () => "1") id
00:28:51 v #32234 > >     text |> write_all_text_async path |> async.do
00:28:51 v #32235 > >     trace Debug (fun () => "2") id
00:28:51 v #32236 > >     inl child = lock_file path |> async.start_child |> async.let'
00:28:51 v #32237 > >     trace Debug (fun () => "3") id
00:28:51 v #32238 > >     async.sleep 1 |> async.do
00:28:51 v #32239 > >     trace Debug (fun () => "4") id
00:28:51 v #32240 > >     inl retries = delete_file_async path |> async.let'
00:28:51 v #32241 > >     trace Debug (fun () => "5") id
00:28:51 v #32242 > >     child |> async.do
00:28:51 v #32243 > >     trace Debug (fun () => "6") id
00:28:51 v #32244 > >     return retries
00:28:51 v #32245 > > |> async.new_async_unit
00:28:51 v #32246 > > |> async.run_with_timeout 3000
00:28:51 v #32247 > > |> function
00:28:51 v #32248 > >     | Some (retries : i64) =>
00:28:51 v #32249 > >         retries
00:28:51 v #32250 > >         |> _assert_between
00:28:51 v #32251 > >             (if platform.is_windows () then 50 else 0)
00:28:51 v #32252 > >             (if platform.is_windows () then 180 else 0)
00:28:51 v #32253 > >
00:28:51 v #32254 > >         true
00:28:51 v #32255 > >     | _ => false
00:28:51 v #32256 > > |> _assert_eq true
00:28:59 v #32257 > >
00:28:59 v #32258 > > ╭─[ 7.63s - stdout ]───────────────────────────────────────────────────────────╮
00:28:59 v #32259 > > │ 00:00:00 d #1 1                                                         │
00:28:59 v #32260 > > │ 00:00:00 d #2 2                                                         │
00:28:59 v #32261 > > │ 00:00:00 d #3 3                                                         │
00:28:59 v #32262 > > │ 00:00:00 d #4 _1                                                        │
00:28:59 v #32263 > > │ 00:00:00 d #5 _2                                                        │
00:28:59 v #32264 > > │ 00:00:00 d #6 4                                                         │
00:28:59 v #32265 > > │ 00:00:00 w #7 delete_file_async / { path = test.txt; ex =               │
00:28:59 v #32266 > > │ System.IO.IOException: The process cannot access the file                    │
00:28:59 v #32267 > > │ 'C:\Users\i574n\AppData\Local\Temp\!create_temp_path_\dotnet-repl\613830ed-0 │
00:28:59 v #32268 > > │ 16e-d959-8d21-02dc1c63c252\test.txt' because it is being used by another     │
00:28:59 v #32269 > > │ process. }                                                                   │
00:28:59 v #32270 > > │ 00:00:01 w #8 delete_file_async / { path = test.txt; ex =               │
00:28:59 v #32271 > > │ System.IO.IOException: The process cannot access the file                    │
00:28:59 v #32272 > > │ 'C:\Users\i574n\AppData\Local\Temp\!create_temp_path_\dotnet-repl\613830ed-0 │
00:28:59 v #32273 > > │ 16e-d959-8d21-02dc1c63c252\test.txt' because it is being used by another     │
00:28:59 v #32274 > > │ process. }                                                                   │
00:28:59 v #32275 > > │ 00:00:02 d #9 _3                                                        │
00:28:59 v #32276 > > │ 00:00:02 d #10 5                                                        │
00:28:59 v #32277 > > │ 00:00:02 d #11 6                                                        │
00:28:59 v #32278 > > │ __assert_between / actual: 128L / expected: struct (50L, 180L)               │
00:28:59 v #32279 > > │ __assert_eq / actual: true / expected: true                                  │
00:28:59 v #32280 > > │                                                                              │
00:28:59 v #32281 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:28:59 v #32282 > >
00:28:59 v #32283 > > ── markdown ────────────────────────────────────────────────────────────────────
00:28:59 v #32284 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:28:59 v #32285 > > │ ## main                                                                      │
00:28:59 v #32286 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:28:59 v #32287 > >
00:28:59 v #32288 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:28:59 v #32289 > > inl main () =
00:28:59 v #32290 > >     init_trace_state None
00:28:59 v #32291 > >     $'let delete_directory_async x = !delete_directory_async x' : ()
00:28:59 v #32292 > >     $'let wait_for_file_access x = !wait_for_file_access x' : ()
00:28:59 v #32293 > >     $'let wait_for_file_access_read x = !wait_for_file_access_read x' : ()
00:28:59 v #32294 > >     $'let read_all_text_async x = !read_all_text_async x' : ()
00:28:59 v #32295 > >     $'let file_exists_content x = !file_exists_content x' : ()
00:28:59 v #32296 > >     $'let write_all_text_async x = !write_all_text_async x' : ()
00:28:59 v #32297 > >     $'let write_all_text_exists x = !write_all_text_exists_async x' : ()
00:28:59 v #32298 > >     $'let delete_file_async x = !delete_file_async x' : ()
00:28:59 v #32299 > >     $'let move_file_async x = !move_file_async x' : ()
00:28:59 v #32300 > >     $'let read_all_text_retry_async x = !read_all_text_retry_async x' : ()
00:28:59 v #32301 > >     $'let create_temp_path () = !create_temp_path ()' : ()
00:28:59 v #32302 > >     $'let create_temp_dir () = !create_temp_dir ()' : ()
00:28:59 v #32303 > >     $'let create_temp_dir\' x = !create_temp_dir' x' : ()
00:28:59 v #32304 > >     $'let get_source_directory () = !get_source_directory ()' : ()
00:28:59 v #32305 > >     $'let normalize_path x = !normalize_path x' : ()
00:28:59 v #32306 > >     $'let new_file_uri x = !new_file_uri x' : ()
00:28:59 v #32307 > >     $'let get_workspace_root () = !get_workspace_root ()' : ()
00:28:59 v #32308 > >     $'let init_trace_file x = !init_trace_file x' : ()
00:28:59 v #32309 > >     $'let link_directory x = !link_directory x' : ()
00:28:59 v #32310 > >     inl combine x = (</>) x
00:28:59 v #32311 > >     $'let (</>) x = !combine x' : ()
00:29:07 v #32312 > 00:03:12 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 116120 }
00:29:07 v #32313 > 00:03:12 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/polyglot/lib/spiral/file_system.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/polyglot/lib/spiral/file_system.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:29:08 v #32314 > 00:03:13 v #5 ! [NbConvertApp] Converting notebook c:/home/git/polyglot/lib/spiral/file_system.dib.ipynb to html
00:29:08 v #32315 > 00:03:13 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:29:08 v #32316 > 00:03:13 v #7 !   validate(nb)
00:29:09 v #32317 > 00:03:14 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:29:09 v #32318 > 00:03:14 v #9 !   return _pygments_highlight(
00:29:11 v #32319 > 00:03:16 v #10 ! [NbConvertApp] Writing 630789 bytes to c:\home\git\polyglot\lib\spiral\file_system.dib.html
00:29:11 v #32320 > 00:03:16 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 864 }
00:29:11 v #32321 > 00:03:16 d #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 864 }
00:29:11 v #32322 > 00:03:16 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/file_system.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/file_system.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:29:11 v #32323 > 00:03:16 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:29:11 v #32324 > 00:03:16 d #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:29:11 v #32325 > 00:03:16 d #16 spiral_builder.run / dib / { exit_code = 0; result_length = 117043 }
00:29:11 d #32326 runtime.execute_with_options_async / { exit_code = 0; output_length = 124607 }
00:29:11 d #39 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder.exe dib --path file_system.dib --retries 3
00:29:11 d #32327 runtime.execute_with_options_async / { file_name = ../../workspace/target/release/spiral_builder.exe; arguments = US5_0 "dib --path networking.dib --retries 3"; options = { command = ../../workspace/target/release/spiral_builder.exe dib --path networking.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:29:11 v #32328 > 00:00:00 d #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "networking.dib", "--retries", "3"])) }
00:29:11 v #32329 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/polyglot/lib/spiral/networking.dib", "--output-path", "c:/home/git/polyglot/lib/spiral/networking.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/polyglot/lib/spiral/networking.dib" --output-path "c:/home/git/polyglot/lib/spiral/networking.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:29:13 v #32330 > >
00:29:13 v #32331 > > ── markdown ────────────────────────────────────────────────────────────────────
00:29:13 v #32332 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:29:13 v #32333 > > │ # networking                                                                 │
00:29:13 v #32334 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:29:16 v #32335 > >
00:29:16 v #32336 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:29:16 v #32337 > > open rust.rust_operators
00:29:17 v #32338 > >
00:29:17 v #32339 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:29:17 v #32340 > > //// test
00:29:17 v #32341 > >
00:29:17 v #32342 > > open testing
00:29:18 v #32343 > >
00:29:18 v #32344 > > ── markdown ────────────────────────────────────────────────────────────────────
00:29:18 v #32345 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:29:18 v #32346 > > │ ## rust                                                                      │
00:29:18 v #32347 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:29:18 v #32348 > >
00:29:18 v #32349 > > ── markdown ────────────────────────────────────────────────────────────────────
00:29:18 v #32350 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:29:18 v #32351 > > │ ### reqwest_response                                                         │
00:29:18 v #32352 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:29:18 v #32353 > >
00:29:18 v #32354 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:29:18 v #32355 > > nominal reqwest_response =
00:29:18 v #32356 > >     `(
00:29:18 v #32357 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:29:18 v #32358 > > Fable.Core.Emit(\"reqwest_wasm::Response\")>]]\n#endif\ntype reqwest_Response =
00:29:18 v #32359 > > class end"
00:29:18 v #32360 > >         $'' : $'reqwest_Response'
00:29:18 v #32361 > >     )
00:29:18 v #32362 > >
00:29:18 v #32363 > > ── markdown ────────────────────────────────────────────────────────────────────
00:29:18 v #32364 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:29:18 v #32365 > > │ ### reqwest_error                                                            │
00:29:18 v #32366 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:29:18 v #32367 > >
00:29:18 v #32368 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:29:18 v #32369 > > nominal reqwest_error =
00:29:18 v #32370 > >     `(
00:29:18 v #32371 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:29:18 v #32372 > > Fable.Core.Emit(\"reqwest_wasm::Error\")>]]\n#endif\ntype reqwest_Error = class
00:29:18 v #32373 > > end"
00:29:18 v #32374 > >         $'' : $'reqwest_Error'
00:29:18 v #32375 > >     )
00:29:18 v #32376 > >
00:29:18 v #32377 > > ── markdown ────────────────────────────────────────────────────────────────────
00:29:18 v #32378 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:29:18 v #32379 > > │ ### request_builder                                                          │
00:29:18 v #32380 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:29:18 v #32381 > >
00:29:18 v #32382 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:29:18 v #32383 > > nominal request_builder =
00:29:18 v #32384 > >     `(
00:29:18 v #32385 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:29:18 v #32386 > > Fable.Core.Emit(\"reqwest_wasm::RequestBuilder\")>]]\n#endif\ntype
00:29:18 v #32387 > > reqwest_RequestBuilder = class end"
00:29:18 v #32388 > >         $'' : $'reqwest_RequestBuilder'
00:29:18 v #32389 > >     )
00:29:19 v #32390 > >
00:29:19 v #32391 > > ── markdown ────────────────────────────────────────────────────────────────────
00:29:19 v #32392 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:29:19 v #32393 > > │ ### request_type                                                             │
00:29:19 v #32394 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:29:19 v #32395 > >
00:29:19 v #32396 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:29:19 v #32397 > > union request_type =
00:29:19 v #32398 > >     | Get
00:29:19 v #32399 > >     | Post
00:29:19 v #32400 > >
00:29:19 v #32401 > > ── markdown ────────────────────────────────────────────────────────────────────
00:29:19 v #32402 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:29:19 v #32403 > > │ ### request                                                                  │
00:29:19 v #32404 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:29:19 v #32405 > >
00:29:19 v #32406 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:29:19 v #32407 > > type request =
00:29:19 v #32408 > >     {
00:29:19 v #32409 > >         url : string
00:29:19 v #32410 > >         request_type : request_type
00:29:19 v #32411 > >         body : string
00:29:19 v #32412 > >         json : bool
00:29:19 v #32413 > >         auto_refresh : bool
00:29:19 v #32414 > >     }
00:29:20 v #32415 > >
00:29:20 v #32416 > > ── markdown ────────────────────────────────────────────────────────────────────
00:29:20 v #32417 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:29:20 v #32418 > > │ ### new_request_get                                                          │
00:29:20 v #32419 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:29:20 v #32420 > >
00:29:20 v #32421 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:29:20 v #32422 > > inl new_request_get (url : string) : request_builder =
00:29:20 v #32423 > >     inl url = join url
00:29:20 v #32424 > >     inl url = url |> sm'.to_std_string
00:29:20 v #32425 > >     inl url = join url
00:29:20 v #32426 > >     !\($'"reqwest_wasm::Client::builder().build().map_err(|err|
00:29:20 v #32427 > > err.to_string())?.get(!url)"')
00:29:20 v #32428 > >
00:29:20 v #32429 > > ── markdown ────────────────────────────────────────────────────────────────────
00:29:20 v #32430 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:29:20 v #32431 > > │ ### new_request_post                                                         │
00:29:20 v #32432 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:29:20 v #32433 > >
00:29:20 v #32434 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:29:20 v #32435 > > inl new_request_post (url : string) : request_builder =
00:29:20 v #32436 > >     inl url = join url
00:29:20 v #32437 > >     inl url = url |> sm'.to_std_string
00:29:20 v #32438 > >     inl url = join url
00:29:20 v #32439 > >     !\($'"reqwest_wasm::Client::builder().build().map_err(|err|
00:29:20 v #32440 > > err.to_string())?.post(!url)"')
00:29:20 v #32441 > >
00:29:20 v #32442 > > ── markdown ────────────────────────────────────────────────────────────────────
00:29:20 v #32443 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:29:20 v #32444 > > │ ### request_send                                                             │
00:29:20 v #32445 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:29:20 v #32446 > >
00:29:20 v #32447 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:29:20 v #32448 > > inl request_send (request : request_builder) : async.future_pin (resultm.result'
00:29:20 v #32449 > > reqwest_response reqwest_error) =
00:29:20 v #32450 > >     inl request = join request
00:29:20 v #32451 > >     !\($'"Box::pin(reqwest_wasm::RequestBuilder::send(!request))"')
00:29:21 v #32452 > >
00:29:21 v #32453 > > ── markdown ────────────────────────────────────────────────────────────────────
00:29:21 v #32454 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:29:21 v #32455 > > │ ### request_body                                                             │
00:29:21 v #32456 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:29:21 v #32457 > >
00:29:21 v #32458 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:29:21 v #32459 > > inl request_body (body : string) (request : request_builder) : request_builder =
00:29:21 v #32460 > >     inl body = body |> sm'.to_std_string
00:29:21 v #32461 > >     !\\(body, $'"reqwest_wasm::RequestBuilder::body(!request, $0)"')
00:29:21 v #32462 > >
00:29:21 v #32463 > > ── markdown ────────────────────────────────────────────────────────────────────
00:29:21 v #32464 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:29:21 v #32465 > > │ ### request_header                                                           │
00:29:21 v #32466 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:29:21 v #32467 > >
00:29:21 v #32468 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:29:21 v #32469 > > inl request_header (key : string) (value : string) (request : request_builder) :
00:29:21 v #32470 > > request_builder =
00:29:21 v #32471 > >     inl request = join request
00:29:21 v #32472 > >     inl key = key |> sm'.to_std_string
00:29:21 v #32473 > >     inl value = value |> sm'.to_std_string
00:29:21 v #32474 > >     !\\((key, value), $'"reqwest_wasm::RequestBuilder::header(!request, $0,
00:29:21 v #32475 > > $1)"')
00:29:22 v #32476 > >
00:29:22 v #32477 > > ── markdown ────────────────────────────────────────────────────────────────────
00:29:22 v #32478 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:29:22 v #32479 > > │ ### request_json                                                             │
00:29:22 v #32480 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:29:22 v #32481 > >
00:29:22 v #32482 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:29:22 v #32483 > > inl request_json forall t. (obj : t) (request : request_builder) :
00:29:22 v #32484 > > request_builder =
00:29:22 v #32485 > >     !\($'"reqwest_wasm::RequestBuilder::json(!request, &!obj)"')
00:29:22 v #32486 > >
00:29:22 v #32487 > > ── markdown ────────────────────────────────────────────────────────────────────
00:29:22 v #32488 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:29:22 v #32489 > > │ ### response_text                                                            │
00:29:22 v #32490 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:29:22 v #32491 > >
00:29:22 v #32492 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:29:22 v #32493 > > inl response_text (response : reqwest_response) : async.future_pin
00:29:22 v #32494 > > (resultm.result' sm'.std_string reqwest_error) =
00:29:22 v #32495 > >     !\($'"Box::pin(reqwest_wasm::Response::text(!response))"')
00:29:22 v #32496 > >
00:29:22 v #32497 > > ── markdown ────────────────────────────────────────────────────────────────────
00:29:22 v #32498 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:29:22 v #32499 > > │ ## fsharp                                                                    │
00:29:22 v #32500 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:29:22 v #32501 > >
00:29:22 v #32502 > > ── markdown ────────────────────────────────────────────────────────────────────
00:29:22 v #32503 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:29:22 v #32504 > > │ ### tcp_client                                                               │
00:29:22 v #32505 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:29:22 v #32506 > >
00:29:22 v #32507 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:29:22 v #32508 > > nominal tcp_client =
00:29:22 v #32509 > >     `(
00:29:22 v #32510 > >         global "#if FABLE_COMPILER\n\ntype System_Net_Sockets_TcpClient =
00:29:22 v #32511 > > System.IDisposable\n#else\ntype System_Net_Sockets_TcpClient =
00:29:22 v #32512 > > System.Net.Sockets.TcpClient\n#endif\n"
00:29:22 v #32513 > >         $'' : $'System_Net_Sockets_TcpClient'
00:29:22 v #32514 > >     )
00:29:23 v #32515 > >
00:29:23 v #32516 > > ── markdown ────────────────────────────────────────────────────────────────────
00:29:23 v #32517 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:29:23 v #32518 > > │ ### new_tcp_client                                                           │
00:29:23 v #32519 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:29:23 v #32520 > >
00:29:23 v #32521 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:29:23 v #32522 > > inl new_tcp_client () : tcp_client =
00:29:23 v #32523 > >     run_target function
00:29:23 v #32524 > >         | Fsharp (Native) => fun () => $'new `tcp_client ()'
00:29:23 v #32525 > >         | _ => fun () => null ()
00:29:23 v #32526 > >
00:29:23 v #32527 > > ── markdown ────────────────────────────────────────────────────────────────────
00:29:23 v #32528 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:29:23 v #32529 > > │ ### ip_address                                                               │
00:29:23 v #32530 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:29:23 v #32531 > >
00:29:23 v #32532 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:29:23 v #32533 > > nominal ip_address = $'System.Net.IPAddress'
00:29:24 v #32534 > >
00:29:24 v #32535 > > ── markdown ────────────────────────────────────────────────────────────────────
00:29:24 v #32536 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:29:24 v #32537 > > │ ### ip_address_parse                                                         │
00:29:24 v #32538 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:29:24 v #32539 > >
00:29:24 v #32540 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:29:24 v #32541 > > inl ip_address_parse (s : string) : ip_address =
00:29:24 v #32542 > >     s |> $'`ip_address.Parse'
00:29:24 v #32543 > >
00:29:24 v #32544 > > ── markdown ────────────────────────────────────────────────────────────────────
00:29:24 v #32545 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:29:24 v #32546 > > │ ### tcp_listener                                                             │
00:29:24 v #32547 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:29:24 v #32548 > >
00:29:24 v #32549 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:29:24 v #32550 > > nominal tcp_listener = $'System.Net.Sockets.TcpListener'
00:29:25 v #32551 > >
00:29:25 v #32552 > > ── markdown ────────────────────────────────────────────────────────────────────
00:29:25 v #32553 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:29:25 v #32554 > > │ ### new_tcp_listener                                                         │
00:29:25 v #32555 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:29:25 v #32556 > >
00:29:25 v #32557 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:29:25 v #32558 > > inl new_tcp_listener (ip_address : ip_address) (port : i32) : tcp_listener =
00:29:25 v #32559 > >     $'new `tcp_listener (!ip_address, !port)'
00:29:25 v #32560 > >
00:29:25 v #32561 > > ── markdown ────────────────────────────────────────────────────────────────────
00:29:25 v #32562 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:29:25 v #32563 > > │ ### listener_start                                                           │
00:29:25 v #32564 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:29:25 v #32565 > >
00:29:25 v #32566 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:29:25 v #32567 > > inl listener_start (listener : tcp_listener) : () =
00:29:25 v #32568 > >     $'!listener.Start' ()
00:29:25 v #32569 > >
00:29:25 v #32570 > > ── markdown ────────────────────────────────────────────────────────────────────
00:29:25 v #32571 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:29:25 v #32572 > > │ ### listener_stop                                                            │
00:29:25 v #32573 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:29:25 v #32574 > >
00:29:25 v #32575 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:29:25 v #32576 > > inl listener_stop (listener : tcp_listener) : () =
00:29:25 v #32577 > >     $'!listener.Stop' ()
00:29:26 v #32578 > >
00:29:26 v #32579 > > ── markdown ────────────────────────────────────────────────────────────────────
00:29:26 v #32580 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:29:26 v #32581 > > │ ### client_connect_async                                                     │
00:29:26 v #32582 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:29:26 v #32583 > >
00:29:26 v #32584 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:29:26 v #32585 > > inl client_connect_async
00:29:26 v #32586 > >     (host : string)
00:29:26 v #32587 > >     (port : i32)
00:29:26 v #32588 > >     (ct : threading.cancellation_token)
00:29:26 v #32589 > >     (client : tcp_client)
00:29:26 v #32590 > >     : async.value_task
00:29:26 v #32591 > >     =
00:29:26 v #32592 > >     run_target function
00:29:26 v #32593 > >         | Fsharp (Native) => fun () => $'!client.ConnectAsync (!host, !port,
00:29:26 v #32594 > > !ct)'
00:29:26 v #32595 > >         | _ => fun () => null ()
00:29:26 v #32596 > >
00:29:26 v #32597 > > ── markdown ────────────────────────────────────────────────────────────────────
00:29:26 v #32598 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:29:26 v #32599 > > │ ### test_port_open                                                           │
00:29:26 v #32600 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:29:26 v #32601 > >
00:29:26 v #32602 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:29:26 v #32603 > > let test_port_open host port : _ bool = async.new_async fun () =>
00:29:26 v #32604 > >     inl ct = async.cancellation_token () |> async.let'
00:29:26 v #32605 > >     inl client = new_tcp_client () |> use
00:29:26 v #32606 > >     try_unit
00:29:26 v #32607 > >         fun () =>
00:29:26 v #32608 > >             client |> client_connect_async host port ct |>
00:29:26 v #32609 > > async.await_value_task_unit |> async.do
00:29:26 v #32610 > >             return true
00:29:26 v #32611 > >         fun ex =>
00:29:26 v #32612 > >             inl ex = ex |> sm'.format_exception
00:29:26 v #32613 > >             trace Verbose
00:29:26 v #32614 > >                 fun () => "networking.test_port_open"
00:29:26 v #32615 > >                 fun () => { port ex }
00:29:26 v #32616 > >             return false
00:29:27 v #32617 > >
00:29:27 v #32618 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:29:27 v #32619 > > //// test
00:29:27 v #32620 > >
00:29:27 v #32621 > > test_port_open "127.0.0.1" 65536
00:29:27 v #32622 > > |> async.run_with_timeout 120
00:29:27 v #32623 > > |> _assert_eq (Some false)
00:29:32 v #32624 > >
00:29:32 v #32625 > > ╭─[ 5.23s - stdout ]───────────────────────────────────────────────────────────╮
00:29:32 v #32626 > > │ 00:00:00 v #1 networking.test_port_open / { port = 65536; ex =          │
00:29:32 v #32627 > > │ System.ArgumentOutOfRangeException: Specified argument was out of the range  │
00:29:32 v #32628 > > │ of valid values. (Parameter 'port') }                                        │
00:29:32 v #32629 > > │ __assert_eq / actual: US6_0 false / expected: US6_0 false                    │
00:29:32 v #32630 > > │                                                                              │
00:29:32 v #32631 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:29:32 v #32632 > >
00:29:32 v #32633 > > ── markdown ────────────────────────────────────────────────────────────────────
00:29:32 v #32634 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:29:32 v #32635 > > │ ### test_port_open_timeout                                                   │
00:29:32 v #32636 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:29:32 v #32637 > >
00:29:32 v #32638 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:29:32 v #32639 > > let test_port_open_timeout timeout host port : _ bool = async.new_async_unit fun
00:29:32 v #32640 > > () =>
00:29:32 v #32641 > >     test_port_open host port
00:29:32 v #32642 > >     |> async.run_with_timeout_async timeout
00:29:32 v #32643 > >     |> async.let'
00:29:32 v #32644 > >     |> function
00:29:32 v #32645 > >         | None => false
00:29:32 v #32646 > >         | Some result => result
00:29:32 v #32647 > >     |> return
00:29:32 v #32648 > >
00:29:32 v #32649 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:29:32 v #32650 > > //// test
00:29:32 v #32651 > >
00:29:32 v #32652 > > test_port_open_timeout 120 "127.0.0.1" 65535
00:29:32 v #32653 > > |> async.run_synchronously
00:29:32 v #32654 > > |> _assert_eq false
00:29:37 v #32655 > >
00:29:37 v #32656 > > ╭─[ 4.55s - stdout ]───────────────────────────────────────────────────────────╮
00:29:37 v #32657 > > │ 00:00:00 v #1 async.run_with_timeout_async / { timeout = 120 }          │
00:29:37 v #32658 > > │ __assert_eq / actual: false / expected: false                                │
00:29:37 v #32659 > > │                                                                              │
00:29:37 v #32660 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:29:37 v #32661 > >
00:29:37 v #32662 > > ── markdown ────────────────────────────────────────────────────────────────────
00:29:37 v #32663 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:29:37 v #32664 > > │ ### wait_for_port_access                                                     │
00:29:37 v #32665 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:29:37 v #32666 > >
00:29:37 v #32667 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:29:37 v #32668 > > let wait_for_port_access timeout status host port : _ i64 =
00:29:37 v #32669 > >     let rec loop retry : _ i64 = async.new_async_unit fun () =>
00:29:37 v #32670 > >         inl isPortOpen =
00:29:37 v #32671 > >             match timeout |> optionm'.unbox with
00:29:37 v #32672 > >             | None => test_port_open host port
00:29:37 v #32673 > >             | Some timeout => test_port_open_timeout timeout host port
00:29:37 v #32674 > >             |> async.let'
00:29:37 v #32675 > >
00:29:37 v #32676 > >         fix_condition
00:29:37 v #32677 > >             fun () => isPortOpen = status
00:29:37 v #32678 > >             fun () => retry |> return
00:29:37 v #32679 > >             fun () =>
00:29:37 v #32680 > >                 if retry % 100 = 0 then
00:29:37 v #32681 > >                     trace Verbose
00:29:37 v #32682 > >                         fun () => "networking.wait_for_port_access"
00:29:37 v #32683 > >                         fun () => { port retry timeout status }
00:29:37 v #32684 > >                 async.sleep 10 |> async.do
00:29:37 v #32685 > >                 loop (retry + 1) |> async.return_await
00:29:37 v #32686 > >     loop 1i64
00:29:37 v #32687 > >
00:29:37 v #32688 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:29:37 v #32689 > > //// test
00:29:37 v #32690 > >
00:29:37 v #32691 > > inl lock_port host port = async.new_async fun () =>
00:29:37 v #32692 > >     trace Debug (fun () => "_1") id
00:29:37 v #32693 > >     async.sleep 5000 |> async.do
00:29:37 v #32694 > >     inl listener = new_tcp_listener (host |> ip_address_parse) port |> use
00:29:37 v #32695 > >     trace Debug (fun () => "_2") id
00:29:37 v #32696 > >     listener |> listener_start
00:29:37 v #32697 > >     trace Debug (fun () => "_3") id
00:29:37 v #32698 > >     async.sleep 2000 |> async.do
00:29:37 v #32699 > >     trace Debug (fun () => "_4") id
00:29:37 v #32700 > >     $'!listener.Stop' ()
00:29:37 v #32701 > >     trace Debug (fun () => "_5") id
00:29:37 v #32702 > >
00:29:37 v #32703 > > inl host = "127.0.0.1"
00:29:37 v #32704 > > inl port = 5555i32
00:29:37 v #32705 > >
00:29:37 v #32706 > > fun () =>
00:29:37 v #32707 > >     trace Debug (fun () => "1") id
00:29:37 v #32708 > >     inl child = lock_port host port |> async.start_child |> async.let'
00:29:37 v #32709 > >     trace Debug (fun () => "2") id
00:29:37 v #32710 > >     async.sleep 1 |> async.do
00:29:37 v #32711 > >     trace Debug (fun () => "3") id
00:29:37 v #32712 > >     inl retries1 = wait_for_port_access (None |> optionm'.box) true host port |>
00:29:37 v #32713 > > async.let'
00:29:37 v #32714 > >     trace Debug (fun () => "4") id
00:29:37 v #32715 > >     inl retries2 = wait_for_port_access (None |> optionm'.box) false host port
00:29:37 v #32716 > > |> async.let'
00:29:37 v #32717 > >     trace Debug (fun () => "5") id
00:29:37 v #32718 > >     child |> async.do
00:29:37 v #32719 > >     trace Debug (fun () => "6") id
00:29:37 v #32720 > >     (retries1, retries2) |> return
00:29:37 v #32721 > > |> async.new_async_unit
00:29:37 v #32722 > > |> async.run_with_timeout 20000
00:29:37 v #32723 > > |> function
00:29:37 v #32724 > >     | Some (retries1, retries2) =>
00:29:37 v #32725 > >         retries1
00:29:37 v #32726 > >         |> _assert_between
00:29:37 v #32727 > >             if platform.is_windows () then 2i64 else 2
00:29:37 v #32728 > >             if platform.is_windows () then 5 else 1500
00:29:37 v #32729 > >
00:29:37 v #32730 > >         retries2
00:29:37 v #32731 > >         |> _assert_between
00:29:37 v #32732 > >             if platform.is_windows () then 80i64 else 80
00:29:37 v #32733 > >             if platform.is_windows () then 200 else 600
00:29:37 v #32734 > >
00:29:37 v #32735 > >         true
00:29:37 v #32736 > >     | _ => false
00:29:37 v #32737 > > |> _assert_eq true
00:29:57 v #32738 > >
00:29:57 v #32739 > > ╭─[ 19.55s - stdout ]──────────────────────────────────────────────────────────╮
00:29:57 v #32740 > > │ 00:00:00 d #1 1                                                         │
00:29:57 v #32741 > > │ 00:00:00 d #2 _1                                                        │
00:29:57 v #32742 > > │ 00:00:00 d #3 2                                                         │
00:29:57 v #32743 > > │ 00:00:00 d #4 3                                                         │
00:29:57 v #32744 > > │ 00:00:02 v #5 networking.test_port_open / { port = 5555; ex =           │
00:29:57 v #32745 > > │ System.AggregateException: One or more errors occurred. (No connection could │
00:29:57 v #32746 > > │ be made because the target machine actively refused it.) }                   │
00:29:57 v #32747 > > │ 00:00:04 v #6 networking.test_port_open / { port = 5555; ex =           │
00:29:57 v #32748 > > │ System.AggregateException: One or more errors occurred. (No connection could │
00:29:57 v #32749 > > │ be made because the target machine actively refused it.) }                   │
00:29:57 v #32750 > > │ 00:00:05 d #7 _2                                                        │
00:29:57 v #32751 > > │ 00:00:05 d #8 _3                                                        │
00:29:57 v #32752 > > │ 00:00:05 d #9 4                                                         │
00:29:57 v #32753 > > │ 00:00:06 v #10 networking.wait_for_port_access / { port = 5555; retry = │
00:29:57 v #32754 > > │ 100; timeout = None; status = false }                                        │
00:29:57 v #32755 > > │ 00:00:07 d #11 _4                                                       │
00:29:57 v #32756 > > │ 00:00:07 d #12 _5                                                       │
00:29:57 v #32757 > > │ 00:00:09 v #13 networking.test_port_open / { port = 5555; ex =          │
00:29:57 v #32758 > > │ System.AggregateException: One or more errors occurred. (No connection could │
00:29:57 v #32759 > > │ be made because the target machine actively refused it.) }                   │
00:29:57 v #32760 > > │ 00:00:09 d #14 5                                                        │
00:29:57 v #32761 > > │ 00:00:09 d #15 6                                                        │
00:29:57 v #32762 > > │ __assert_between / actual: 3L / expected: struct (2L, 5L)                    │
00:29:57 v #32763 > > │ __assert_between / actual: 123L / expected: struct (80L, 200L)               │
00:29:57 v #32764 > > │ __assert_eq / actual: true / expected: true                                  │
00:29:57 v #32765 > > │                                                                              │
00:29:57 v #32766 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:29:57 v #32767 > >
00:29:57 v #32768 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:29:57 v #32769 > > //// test
00:29:57 v #32770 > >
00:29:57 v #32771 > > inl lock_port host port = async.new_async_unit fun () =>
00:29:57 v #32772 > >     trace Debug (fun () => "_1") id
00:29:57 v #32773 > >     async.sleep 500 |> async.do
00:29:57 v #32774 > >     inl listener = new_tcp_listener (ip_address_parse host) port |> use
00:29:57 v #32775 > >     trace Debug (fun () => "_2") id
00:29:57 v #32776 > >     listener |> listener_start
00:29:57 v #32777 > >     trace Debug (fun () => "_3") id
00:29:57 v #32778 > >     async.sleep 200 |> async.do
00:29:57 v #32779 > >     trace Debug (fun () => "_4") id
00:29:57 v #32780 > >     listener |> listener_stop
00:29:57 v #32781 > >     trace Debug (fun () => "_5") id
00:29:57 v #32782 > >
00:29:57 v #32783 > > inl host = "127.0.0.1"
00:29:57 v #32784 > > inl port = 5555
00:29:57 v #32785 > >
00:29:57 v #32786 > > fun () =>
00:29:57 v #32787 > >     trace Debug (fun () => "1") id
00:29:57 v #32788 > >     inl child = lock_port host port |> async.start_child |> async.let'
00:29:57 v #32789 > >     trace Debug (fun () => "2") id
00:29:57 v #32790 > >     async.sleep 1 |> async.do
00:29:57 v #32791 > >     trace Debug (fun () => "3") id
00:29:57 v #32792 > >     inl retries1 = wait_for_port_access (Some 60 |> optionm'.box) true host port
00:29:57 v #32793 > > |> async.let'
00:29:57 v #32794 > >     trace Debug (fun () => "4") id
00:29:57 v #32795 > >     inl retries2 = wait_for_port_access (Some 60 |> optionm'.box) false host
00:29:57 v #32796 > > port |> async.let'
00:29:57 v #32797 > >     trace Debug (fun () => "5") id
00:29:57 v #32798 > >     child |> async.do
00:29:57 v #32799 > >     trace Debug (fun () => "6") id
00:29:57 v #32800 > >     (retries1, retries2) |> return
00:29:57 v #32801 > > |> async.new_async_unit
00:29:57 v #32802 > > |> async.run_with_timeout 2000
00:29:57 v #32803 > > |> function
00:29:57 v #32804 > >     | Some (retries1, retries2) =>
00:29:57 v #32805 > >         retries1
00:29:57 v #32806 > >         |> _assert_between
00:29:57 v #32807 > >             if platform.is_windows () then 4i64 else 2
00:29:57 v #32808 > >             if platform.is_windows () then 15 else 150
00:29:57 v #32809 > >
00:29:57 v #32810 > >         retries2
00:29:57 v #32811 > >         |> _assert_between
00:29:57 v #32812 > >             if platform.is_windows () then 5i64 else 0
00:29:57 v #32813 > >             if platform.is_windows () then 20 else 60
00:29:57 v #32814 > >
00:29:57 v #32815 > >         true
00:29:57 v #32816 > >     | _ => false
00:29:57 v #32817 > > |> _assert_eq true
00:30:08 v #32818 > >
00:30:08 v #32819 > > ╭─[ 11.67s - stdout ]──────────────────────────────────────────────────────────╮
00:30:08 v #32820 > > │ 00:00:00 d #1 1                                                         │
00:30:08 v #32821 > > │ 00:00:00 d #2 2                                                         │
00:30:08 v #32822 > > │ 00:00:00 d #3 _1                                                        │
00:30:08 v #32823 > > │ 00:00:00 d #4 3                                                         │
00:30:08 v #32824 > > │ 00:00:00 v #5 async.run_with_timeout_async / { timeout = 60 }           │
00:30:08 v #32825 > > │ 00:00:00 v #6 async.run_with_timeout_async / { timeout = 60 }           │
00:30:08 v #32826 > > │ 00:00:00 v #7 async.run_with_timeout_async / { timeout = 60 }           │
00:30:08 v #32827 > > │ 00:00:00 v #8 async.run_with_timeout_async / { timeout = 60 }           │
00:30:08 v #32828 > > │ 00:00:00 v #9 async.run_with_timeout_async / { timeout = 60 }           │
00:30:08 v #32829 > > │ 00:00:00 v #10 async.run_with_timeout_async / { timeout = 60 }          │
00:30:08 v #32830 > > │ 00:00:00 d #11 _2                                                       │
00:30:08 v #32831 > > │ 00:00:00 d #12 _3                                                       │
00:30:08 v #32832 > > │ 00:00:00 v #13 async.run_with_timeout_async / { timeout = 60 }          │
00:30:08 v #32833 > > │ 00:00:00 d #14 4                                                        │
00:30:08 v #32834 > > │ 00:00:00 d #15 _4                                                       │
00:30:08 v #32835 > > │ 00:00:00 d #16 _5                                                       │
00:30:08 v #32836 > > │ 00:00:00 v #17 async.run_with_timeout_async / { timeout = 60 }          │
00:30:08 v #32837 > > │ 00:00:00 d #18 5                                                        │
00:30:08 v #32838 > > │ 00:00:00 d #19 6                                                        │
00:30:08 v #32839 > > │ __assert_between / actual: 8L / expected: struct (4L, 15L)                   │
00:30:08 v #32840 > > │ __assert_between / actual: 10L / expected: struct (5L, 20L)                  │
00:30:08 v #32841 > > │ __assert_eq / actual: true / expected: true                                  │
00:30:08 v #32842 > > │                                                                              │
00:30:08 v #32843 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:30:08 v #32844 > >
00:30:08 v #32845 > > ── markdown ────────────────────────────────────────────────────────────────────
00:30:08 v #32846 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:30:08 v #32847 > > │ ### get_available_port                                                       │
00:30:08 v #32848 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:30:08 v #32849 > >
00:30:08 v #32850 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:30:08 v #32851 > > let get_available_port timeout host initial_port : _ i32 =
00:30:08 v #32852 > >     let rec loop port = async.new_async_unit fun () =>
00:30:08 v #32853 > >         inl is_port_open =
00:30:08 v #32854 > >             match timeout |> optionm'.unbox with
00:30:08 v #32855 > >             | None => test_port_open host port
00:30:08 v #32856 > >             | Some timeout => test_port_open_timeout timeout host port
00:30:08 v #32857 > >             |> async.let'
00:30:08 v #32858 > >         fix_condition
00:30:08 v #32859 > >             fun () => is_port_open |> not
00:30:08 v #32860 > >             fun () => port |> return
00:30:08 v #32861 > >             fun () => loop (port + 1) |> async.return_await
00:30:08 v #32862 > >     loop initial_port
00:30:09 v #32863 > >
00:30:09 v #32864 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:30:09 v #32865 > > //// test
00:30:09 v #32866 > >
00:30:09 v #32867 > > inl lock_ports host port = async.new_async_unit fun () =>
00:30:09 v #32868 > >     trace Debug (fun () => "_1") id
00:30:09 v #32869 > >     inl listener1 = new_tcp_listener (ip_address_parse host) port |> use
00:30:09 v #32870 > >     inl listener2 = new_tcp_listener (ip_address_parse host) (port + 1) |> use
00:30:09 v #32871 > >     trace Debug (fun () => "_2") id
00:30:09 v #32872 > >     listener1 |> listener_start
00:30:09 v #32873 > >     listener2 |> listener_start
00:30:09 v #32874 > >     trace Debug (fun () => "_3") id
00:30:09 v #32875 > >     async.sleep 4000 |> async.do
00:30:09 v #32876 > >     trace Debug (fun () => "_4") id
00:30:09 v #32877 > >     listener1 |> listener_stop
00:30:09 v #32878 > >     listener2 |> listener_stop
00:30:09 v #32879 > >     trace Debug (fun () => "_5") id
00:30:09 v #32880 > >
00:30:09 v #32881 > > inl host = "127.0.0.1"
00:30:09 v #32882 > > inl port = 5555
00:30:09 v #32883 > >
00:30:09 v #32884 > > fun () =>
00:30:09 v #32885 > >     trace Debug (fun () => "1") id
00:30:09 v #32886 > >     inl child = lock_ports host port |> async.start_child |> async.let'
00:30:09 v #32887 > >     trace Debug (fun () => "2") id
00:30:09 v #32888 > >     async.sleep 240 |> async.do
00:30:09 v #32889 > >     trace Debug (fun () => "3") id
00:30:09 v #32890 > >     inl available_port = get_available_port (None |> optionm'.box) host port |>
00:30:09 v #32891 > > async.let'
00:30:09 v #32892 > >     trace Debug (fun () => "4") id
00:30:09 v #32893 > >     inl retries = wait_for_port_access (None |> optionm'.box) false host port |>
00:30:09 v #32894 > > async.let'
00:30:09 v #32895 > >     trace Debug (fun () => "5") id
00:30:09 v #32896 > >     child |> async.do
00:30:09 v #32897 > >     trace Debug (fun () => "6") id
00:30:09 v #32898 > >     (available_port, retries) |> return
00:30:09 v #32899 > > |> async.new_async_unit
00:30:09 v #32900 > > |> async.run_with_timeout 15000
00:30:09 v #32901 > > |> function
00:30:09 v #32902 > >     | Some (available_port, retries) =>
00:30:09 v #32903 > >         available_port |> _assert_eq (port + 2)
00:30:09 v #32904 > >
00:30:09 v #32905 > >         retries
00:30:09 v #32906 > >         |> _assert_between
00:30:09 v #32907 > >             if platform.is_windows () then 50i64 else 50
00:30:09 v #32908 > >             if platform.is_windows () then 150 else 1200
00:30:09 v #32909 > >
00:30:09 v #32910 > >         true
00:30:09 v #32911 > >     | _ => false
00:30:09 v #32912 > > |> _assert_eq true
00:30:25 v #32913 > >
00:30:25 v #32914 > > ╭─[ 16.00s - stdout ]──────────────────────────────────────────────────────────╮
00:30:25 v #32915 > > │ 00:00:00 d #1 1                                                         │
00:30:25 v #32916 > > │ 00:00:00 d #2 _1                                                        │
00:30:25 v #32917 > > │ 00:00:00 d #3 2                                                         │
00:30:25 v #32918 > > │ 00:00:00 d #4 _2                                                        │
00:30:25 v #32919 > > │ 00:00:00 d #5 _3                                                        │
00:30:25 v #32920 > > │ 00:00:00 d #6 3                                                         │
00:30:25 v #32921 > > │ 00:00:02 v #7 networking.test_port_open / { port = 5557; ex =           │
00:30:25 v #32922 > > │ System.AggregateException: One or more errors occurred. (No connection could │
00:30:25 v #32923 > > │ be made because the target machine actively refused it.) }                   │
00:30:25 v #32924 > > │ 00:00:02 d #8 4                                                         │
00:30:25 v #32925 > > │ 00:00:03 v #9 networking.wait_for_port_access / { port = 5555; retry =  │
00:30:25 v #32926 > > │ 100; timeout = None; status = false }                                        │
00:30:25 v #32927 > > │ 00:00:04 d #10 _4                                                       │
00:30:25 v #32928 > > │ 00:00:04 d #11 _5                                                       │
00:30:25 v #32929 > > │ 00:00:06 v #12 networking.test_port_open / { port = 5555; ex =          │
00:30:25 v #32930 > > │ System.AggregateException: One or more errors occurred. (No connection could │
00:30:25 v #32931 > > │ be made because the target machine actively refused it.) }                   │
00:30:25 v #32932 > > │ 00:00:06 d #13 5                                                        │
00:30:25 v #32933 > > │ 00:00:06 d #14 6                                                        │
00:30:25 v #32934 > > │ __assert_eq / actual: 5557 / expected: 5557                                  │
00:30:25 v #32935 > > │ __assert_between / actual: 110L / expected: struct (50L, 150L)               │
00:30:25 v #32936 > > │ __assert_eq / actual: true / expected: true                                  │
00:30:25 v #32937 > > │                                                                              │
00:30:25 v #32938 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:30:25 v #32939 > >
00:30:25 v #32940 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:30:25 v #32941 > > //// test
00:30:25 v #32942 > >
00:30:25 v #32943 > > inl lock_ports host port = async.new_async_unit fun () =>
00:30:25 v #32944 > >     trace Debug (fun () => "_1") id
00:30:25 v #32945 > >     inl listener1 = new_tcp_listener (ip_address_parse host) port |> use
00:30:25 v #32946 > >     inl listener2 = new_tcp_listener (ip_address_parse host) (port + 1) |> use
00:30:25 v #32947 > >     trace Debug (fun () => "_2") id
00:30:25 v #32948 > >     listener1 |> listener_start
00:30:25 v #32949 > >     listener2 |> listener_start
00:30:25 v #32950 > >     trace Debug (fun () => "_3") id
00:30:25 v #32951 > >     async.sleep 400 |> async.do
00:30:25 v #32952 > >     trace Debug (fun () => "_4") id
00:30:25 v #32953 > >     listener1 |> listener_stop
00:30:25 v #32954 > >     listener2 |> listener_stop
00:30:25 v #32955 > >     trace Debug (fun () => "_5") id
00:30:25 v #32956 > >
00:30:25 v #32957 > > inl host = "127.0.0.1"
00:30:25 v #32958 > > inl port = 5555
00:30:25 v #32959 > >
00:30:25 v #32960 > > fun () =>
00:30:25 v #32961 > >     trace Debug (fun () => "1") id
00:30:25 v #32962 > >     inl child = lock_ports host port |> async.start_child |> async.let'
00:30:25 v #32963 > >     trace Debug (fun () => "2") id
00:30:25 v #32964 > >     async.sleep 240 |> async.do
00:30:25 v #32965 > >     trace Debug (fun () => "3") id
00:30:25 v #32966 > >     inl available_port = get_available_port (Some 60 |> optionm'.box) host port
00:30:25 v #32967 > > |> async.let'
00:30:25 v #32968 > >     trace Debug (fun () => "4") id
00:30:25 v #32969 > >     inl retries = wait_for_port_access (Some 60 |> optionm'.box) false host port
00:30:25 v #32970 > > |> async.let'
00:30:25 v #32971 > >     trace Debug (fun () => "5") id
00:30:25 v #32972 > >     child |> async.do
00:30:25 v #32973 > >     trace Debug (fun () => "6") id
00:30:25 v #32974 > >     (available_port, retries) |> return
00:30:25 v #32975 > > |> async.new_async_unit
00:30:25 v #32976 > > |> async.run_with_timeout 1500
00:30:25 v #32977 > > |> function
00:30:25 v #32978 > >     | Some (available_port, retries) =>
00:30:25 v #32979 > >         available_port |> _assert_eq (port + 2)
00:30:25 v #32980 > >
00:30:25 v #32981 > >         retries
00:30:25 v #32982 > >         |> _assert_between
00:30:25 v #32983 > >             (if platform.is_windows () then 2i64 else 1)
00:30:25 v #32984 > >             (if platform.is_windows () then 10 else 120)
00:30:25 v #32985 > >
00:30:25 v #32986 > >         true
00:30:25 v #32987 > >     | _ => false
00:30:25 v #32988 > > |> _assert_eq true
00:30:36 v #32989 > >
00:30:36 v #32990 > > ╭─[ 10.91s - stdout ]──────────────────────────────────────────────────────────╮
00:30:36 v #32991 > > │ 00:00:00 d #1 1                                                         │
00:30:36 v #32992 > > │ 00:00:00 d #2 _1                                                        │
00:30:36 v #32993 > > │ 00:00:00 d #2 2                                                         │
00:30:36 v #32994 > > │ 00:00:00 d #4 _2                                                        │
00:30:36 v #32995 > > │ 00:00:00 d #5 _3                                                        │
00:30:36 v #32996 > > │ 00:00:00 d #6 3                                                         │
00:30:36 v #32997 > > │ 00:00:00 v #7 async.run_with_timeout_async / { timeout = 60 }           │
00:30:36 v #32998 > > │ 00:00:00 d #8 4                                                         │
00:30:36 v #32999 > > │ 00:00:00 d #9 _4                                                        │
00:30:36 v #33000 > > │ 00:00:00 d #10 _5                                                       │
00:30:36 v #33001 > > │ 00:00:00 v #11 async.run_with_timeout_async / { timeout = 60 }          │
00:30:36 v #33002 > > │ 00:00:00 d #12 5                                                        │
00:30:36 v #33003 > > │ 00:00:00 d #13 6                                                        │
00:30:36 v #33004 > > │ __assert_eq / actual: 5557 / expected: 5557                                  │
00:30:36 v #33005 > > │ __assert_between / actual: 6L / expected: struct (2L, 10L)                   │
00:30:36 v #33006 > > │ __assert_eq / actual: true / expected: true                                  │
00:30:36 v #33007 > > │                                                                              │
00:30:36 v #33008 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:30:36 v #33009 > >
00:30:36 v #33010 > > ── markdown ────────────────────────────────────────────────────────────────────
00:30:36 v #33011 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:30:36 v #33012 > > │ ## main                                                                      │
00:30:36 v #33013 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:30:36 v #33014 > >
00:30:36 v #33015 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:30:36 v #33016 > > inl main () =
00:30:36 v #33017 > >     init_trace_state None
00:30:36 v #33018 > >     $'let test_port_open x = !test_port_open x' : ()
00:30:36 v #33019 > >     $'let test_port_open_timeout x = !test_port_open_timeout x' : ()
00:30:36 v #33020 > >     $'let wait_for_port_access x = !wait_for_port_access x' : ()
00:30:36 v #33021 > >     $'let get_available_port x = !get_available_port x' : ()
00:30:41 v #33022 > 00:01:29 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 33585 }
00:30:41 v #33023 > 00:01:29 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/polyglot/lib/spiral/networking.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/polyglot/lib/spiral/networking.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:30:42 v #33024 > 00:01:30 v #5 ! [NbConvertApp] Converting notebook c:/home/git/polyglot/lib/spiral/networking.dib.ipynb to html
00:30:42 v #33025 > 00:01:30 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:30:42 v #33026 > 00:01:30 v #7 !   validate(nb)
00:30:43 v #33027 > 00:01:31 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:30:43 v #33028 > 00:01:31 v #9 !   return _pygments_highlight(
00:30:43 v #33029 > 00:01:32 v #10 ! [NbConvertApp] Writing 370536 bytes to c:\home\git\polyglot\lib\spiral\networking.dib.html
00:30:43 v #33030 > 00:01:32 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 862 }
00:30:43 v #33031 > 00:01:32 d #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 862 }
00:30:43 v #33032 > 00:01:32 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/networking.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/networking.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:30:44 v #33033 > 00:01:32 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:30:44 v #33034 > 00:01:32 d #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:30:44 v #33035 > 00:01:32 d #16 spiral_builder.run / dib / { exit_code = 0; result_length = 34506 }
00:30:44 d #33036 runtime.execute_with_options_async / { exit_code = 0; output_length = 38493 }
00:30:44 d #40 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder.exe dib --path networking.dib --retries 3
00:30:44 v #5 async.run_with_timeout_async / { timeout = 100 }
00:00:00 d #1 writeDibCode / output: Spi / path: threading.dib
00:00:00 d #1 writeDibCode / output: Spi / path: common.dib
00:00:00 d #1 writeDibCode / output: Spi / path: runtime.dib
00:00:00 d #1 writeDibCode / output: Spi / path: networking.dib
00:00:00 d #1 writeDibCode / output: Spi / path: async.dib
00:00:00 d #1 writeDibCode / output: Spi / path: trace.dib
00:00:00 d #1 writeDibCode / output: Spi / path: testing.dib
00:00:00 d #1 writeDibCode / output: Spi / path: crypto.dib
00:00:00 d #2 parseDibCode / output: Spi / file: runtime.dib
00:00:00 d #3 parseDibCode / output: Spi / file: networking.dib
00:00:00 d #3 parseDibCode / output: Spi / file: async.dib
00:00:00 d #4 parseDibCode / output: Spi / file: trace.dib
00:00:00 d #4 parseDibCode / output: Spi / file: testing.dib
00:00:00 d #6 parseDibCode / output: Spi / file: common.dib
00:00:00 d #6 parseDibCode / output: Spi / file: threading.dib
00:00:00 d #8 parseDibCode / output: Spi / file: crypto.dib
00:00:00 d #9 writeDibCode / output: Spi / path: env.dib
00:00:00 d #9 writeDibCode / output: Spi / path: resultm.dib
00:00:00 d #9 writeDibCode / output: Spi / path: iter.dib
00:00:00 d #12 writeDibCode / output: Spi / path: parsing.dib
00:00:00 d #12 writeDibCode / output: Spi / path: console.dib
00:00:00 d #14 parseDibCode / output: Spi / file: env.dib
00:00:00 d #15 parseDibCode / output: Spi / file: resultm.dib
00:00:00 d #16 parseDibCode / output: Spi / file: console.dib
00:00:00 d #17 parseDibCode / output: Spi / file: parsing.dib
00:00:00 d #17 parseDibCode / output: Spi / file: iter.dib
00:00:00 d #9 writeDibCode / output: Spi / path: base.dib
00:00:00 d #19 parseDibCode / output: Spi / file: base.dib
00:00:00 d #20 writeDibCode / output: Spi / path: guid.dib
00:00:00 d #21 writeDibCode / output: Spi / path: file_system.dib
00:00:00 d #21 writeDibCode / output: Spi / path: date_time.dib
00:00:00 d #22 writeDibCode / output: Spi / path: math.dib
00:00:00 d #23 parseDibCode / output: Spi / file: guid.dib
00:00:00 d #23 parseDibCode / output: Spi / file: file_system.dib
00:00:00 d #23 parseDibCode / output: Spi / file: date_time.dib
00:00:00 d #25 parseDibCode / output: Spi / file: math.dib
00:00:00 d #26 writeDibCode / output: Spi / path: am'.dib
00:00:00 d #27 writeDibCode / output: Spi / path: optionm'.dib
00:00:00 d #28 writeDibCode / output: Spi / path: mapm.dib
00:00:00 d #28 writeDibCode / output: Spi / path: sm'.dib
00:00:00 d #30 writeDibCode / output: Spir / path: sm'.dib
00:00:00 d #31 writeDibCode / output: Spi / path: listm'.dib
00:00:00 d #32 parseDibCode / output: Spi / file: am'.dib
00:00:00 d #33 parseDibCode / output: Spi / file: sm'.dib
00:00:00 d #34 parseDibCode / output: Spi / file: mapm.dib
00:00:00 d #35 parseDibCode / output: Spi / file: listm'.dib
00:00:00 d #36 parseDibCode / output: Spir / file: sm'.dib
00:00:00 d #32 parseDibCode / output: Spi / file: optionm'.dib
00:00:00 d #37 writeDibCode / output: Spi / path: reflection.dib
00:00:00 d #38 writeDibCode / output: Spi / path: typescript.dib
00:00:00 d #39 writeDibCode / output: Spi / path: python.dib
00:00:00 d #40 parseDibCode / output: Spi / file: reflection.dib
00:00:00 d #41 parseDibCode / output: Spi / file: typescript.dib
00:00:00 d #42 parseDibCode / output: Spi / file: python.dib
00:00:00 d #43 writeDibCode / output: Spi / path: benchmark.dib
00:00:00 d #44 parseDibCode / output: Spi / file: benchmark.dib
00:00:00 d #45 writeDibCode / output: Spi / path: stream.dib
00:00:00 d #46 parseDibCode / output: Spi / file: stream.dib
00:00:00 d #47 writeDibCode / output: Spi / path: seq.dib
00:00:00 d #48 parseDibCode / output: Spi / file: seq.dib
00:00:00 d #49 writeDibCode / output: Spi / path: util.dib
00:00:00 d #50 parseDibCode / output: Spi / file: util.dib
00:00:00 d #51 writeDibCode / output: Spi / path: platform.dib
00:00:00 d #52 parseDibCode / output: Spi / file: platform.dib
00:00:00 d #53 writeDibCode / output: Spi / path: rust/rust.dib
00:00:00 d #54 parseDibCode / output: Spi / file: rust/rust.dib
00:00:00 d #55 writeDibCode / output: Spi / path: rust/testing.dib
00:00:00 d #56 writeDibCode / output: Spi / path: rust/near.dib
00:00:00 d #57 parseDibCode / output: Spi / file: rust/testing.dib
00:00:00 d #58 parseDibCode / output: Spi / file: rust/near.dib
00:00:00 d #59 writeDibCode / output: Spi / path: rust/near_workspaces.dib
00:00:00 d #60 parseDibCode / output: Spi / file: rust/near_workspaces.dib
00:00:00 d #61 writeDibCode / output: Spi / path: physics.dib
00:00:00 d #62 parseDibCode / output: Spi / file: physics.dib
00:00:00 d #63 writeDibCode / output: Spi / path: leptos/leptos.dib
00:00:00 d #64 parseDibCode / output: Spi / file: leptos/leptos.dib
00:00:00 d #65 writeDibCode / output: Spi / path: wasm.dib
00:00:00 d #66 parseDibCode / output: Spi / file: wasm.dib
00:00:00 v #1 async.run_with_timeout_async / { timeout = 180 }
00:00:00 d #1 runtime.execute_with_options_async / { file_name = dotnet; arguments = US5_0
  ""C:\home\git\polyglot\deps\The-Spiral-Language\The Spiral Language 2\artifacts\bin\The Spiral Language 2\release\Spiral.dll" --port 13805 --default-int i32 --default-float f64"; options = { command = dotnet "C:\home\git\polyglot\deps\The-Spiral-Language\The Spiral Language 2\artifacts\bin\The Spiral Language 2\release\Spiral.dll" --port 13805 --default-int i32 --default-float f64; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = Some <fun:main@595-7>; stdin = None; trace = true; working_directory = Some "C:\home\git\polyglot" } }
00:00:00 v #2 > 00:00:00 d #1 pwd: C:\home\git\polyglot
00:00:00 v #3 > 00:00:00 d #2 dllPath: C:\home\git\polyglot\deps\The-Spiral-Language\The Spiral Language 2\artifacts\bin\The Spiral Language 2\release
00:00:00 v #4 > 00:00:00 d #3 targetDir: C:\home\git\polyglot\target/spiral_Eval
00:00:01 v #2 async.run_with_timeout_async / { timeout = 100 }
00:00:01 v #3 async.run_with_timeout_async / { timeout = 100 }
00:00:01 v #5 > Starting the Spiral Server. It is bound to: http://localhost:13805
00:00:01 v #4 async.run_with_timeout_async / { timeout = 100 }
00:00:01 v #1 Supervisor.sendJson / port: 13805 / json: {"Ping":true} / result:
00:00:01 v #2 Supervisor.awaitCompiler / Ping / result: 'Some null' / port: 13805 / retry: 1
00:00:01 v #6 > Server bound to: http://localhost:13805
00:00:01 v #5 async.run_with_timeout_async / { timeout = 180 }
00:00:01 v #5 async.run_with_timeout_async / { timeout = 180 }
00:00:01 v #5 async.run_with_timeout_async / { timeout = 180 }
00:00:01 v #8 async.run_with_timeout_async / { timeout = 180 }
00:00:01 v #9 async.run_with_timeout_async / { timeout = 180 }
00:00:02 d #3 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: async.spi
00:00:02 d #4 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: networking.spi
00:00:02 d #6 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: trace.spi
00:00:02 d #6 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: threading.spi
00:00:02 d #3 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: runtime.spi
00:00:02 d #8 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: async.spi
00:00:02 d #9 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: trace.spi
00:00:02 d #10 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: threading.spi
00:00:02 d #11 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: runtime.spi
00:00:02 d #11 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: networking.spi
00:00:02 d #13 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: async.spi
00:00:02 d #14 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: runtime.spi
00:00:02 d #15 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: networking.spi
00:00:02 d #15 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: trace.spi
00:00:02 d #15 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: threading.spi
00:00:02 v #17 Supervisor.sendJson / port: 13805 / json: {"FileOpen":{"spiText":"/// # async\nopen rust\nopen rust_operators\n\n/// ## rust\n\n/// ### future...token_with_default_async x\u0027 : ()\n","uri":"file:///c:/home/git/polyglot/lib/spiral/async.spi"}} / result:
00:00:02 v #18 Supervisor.sendJson / port: 13805 / json: {"FileOpen":{"spiText":"/// # networking\nopen rust.rust_operators\n\n/// ## rust\n\n/// ### reqwest...!get_available_port x\u0027 : ()\n","uri":"file:///c:/home/git/polyglot/lib/spiral/networking.spi"}} / result:
00:00:02 v #19 Supervisor.sendJson / port: 13805 / json: {"FileOpen":{"spiText":"/// # trace\n\n/// ## trace\n\n/// ### trace_level\nunion trace_level =\n   ...0027let trace x = !trace x\u0027 : ()\n","uri":"file:///c:/home/git/polyglot/lib/spiral/trace.spi"}} / result:
00:00:02 v #20 Supervisor.sendJson / port: 13805 / json: {"FileOpen":{"spiText":"/// # runtime\nopen rust\nopen rust_operators\nopen sm\u0027_operators\n\n//...t_args x = !split_args x\u0027 : ()\n","uri":"file:///c:/home/git/polyglot/lib/spiral/runtime.spi"}} / result:
00:00:02 v #21 Supervisor.sendJson / port: 13805 / json: {"FileOpen":{"spiText":"/// # threading\nopen rust\nopen rust_operators\n\n/// ## rust\n\n/// ### sl...new_disposable_token x\u0027 : ()\n","uri":"file:///c:/home/git/polyglot/lib/spiral/threading.spi"}} / result:
00:00:02 v #22 Supervisor.sendJson / port: 13805 / json: {"BuildFile":{"backend":"Fsharp","uri":"file:///c:/home/git/polyglot/lib/spiral/async.spi"}} / result:
00:00:02 v #25 Supervisor.sendJson / port: 13805 / json: {"BuildFile":{"backend":"Fsharp","uri":"file:///c:/home/git/polyglot/lib/spiral/trace.spi"}} / result:
00:00:02 v #26 Supervisor.sendJson / port: 13805 / json: {"BuildFile":{"backend":"Fsharp","uri":"file:///c:/home/git/polyglot/lib/spiral/networking.spi"}} / result:
00:00:02 v #22 Supervisor.sendJson / port: 13805 / json: {"BuildFile":{"backend":"Fsharp","uri":"file:///c:/home/git/polyglot/lib/spiral/runtime.spi"}} / result:
00:00:02 v #22 Supervisor.sendJson / port: 13805 / json: {"BuildFile":{"backend":"Fsharp","uri":"file:///c:/home/git/polyglot/lib/spiral/threading.spi"}} / result:
00:00:02 d #27 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: trace.spi
00:00:02 d #27 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: networking.spi
00:00:02 d #27 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: threading.spi
00:00:02 d #31 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: trace.spi
00:00:02 d #27 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: runtime.spi
00:00:02 d #32 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: networking.spi
00:00:02 d #27 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: async.spi
00:00:02 d #33 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: threading.spi
00:00:02 d #34 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: runtime.spi
00:00:02 d #35 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: async.spi
00:00:03 d #36 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: async.spi
00:00:03 d #37 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: async.spi
00:00:03 d #38 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: runtime.spi
00:00:03 d #39 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: networking.spi
00:00:03 d #39 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: threading.spi
00:00:03 d #40 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: runtime.spi
00:00:03 d #41 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: networking.spi
00:00:03 d #41 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: threading.spi
00:00:03 d #42 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: trace.spi
00:00:03 d #43 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: trace.spi
00:00:03 d #44 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: async.spi
00:00:03 d #45 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: threading.spi
00:00:03 d #46 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: async.spi
00:00:03 d #46 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: threading.spi
00:00:03 d #48 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: trace.spi
00:00:03 d #49 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: trace.spi
00:00:03 d #50 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: runtime.spi
00:00:03 d #51 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: runtime.spi
00:00:03 d #52 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: networking.spi
00:00:03 d #53 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: networking.spi
00:00:04 d #54 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: networking.spi
00:00:04 d #54 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: async.spi
00:00:04 d #56 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: trace.spi
00:00:04 d #57 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: threading.spi
00:00:04 d #58 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: async.spi
00:00:04 d #59 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: trace.spi
00:00:04 d #54 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: runtime.spi
00:00:04 d #60 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: threading.spi
00:00:04 d #61 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: runtime.spi
00:00:04 d #62 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: networking.spi
00:00:04 d #63 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: runtime.spi
00:00:04 d #64 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: runtime.spi
00:00:04 d #65 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: async.spi
00:00:04 d #66 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: async.spi
00:00:04 d #67 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: threading.spi
00:00:04 d #68 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: threading.spi
00:00:04 d #69 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: trace.spi
00:00:04 d #70 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: trace.spi
00:00:04 d #71 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: networking.spi
00:00:04 d #72 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: networking.spi
00:00:05 d #73 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: networking.spi
00:00:05 d #76 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: trace.spi
00:00:05 d #77 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: networking.spi
00:00:05 d #78 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: trace.spi
00:00:05 d #74 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: threading.spi
00:00:05 d #74 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: async.spi
00:00:05 d #79 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: async.spi
00:00:05 d #80 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: runtime.spi
00:00:05 d #81 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: runtime.spi
00:00:05 d #82 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: threading.spi
00:00:05 d #83 Supervisor.buildFile / AsyncSeq.scan / outputContent:
type Disposable (f : unit -> unit) = interface System.IDisposable with member _.Dispose () = f ()
type [<Struct>] US0 =
    | US0_0 of f0_0 : System.T...ading.CancellationToken option -> struct (System.Threading.CancellationToken * System.IDisposable)) = closure0()
let new_disposable_token x = v0 x
()
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: threading.spi
00:00:05 d #84 Supervisor.buildFile / AsyncSeq.scan / outputContent:
let rec closure0 () (v0 : System.Threading.CancellationToken) : Async<System.Threading.CancellationToken> =
    let v1 : unit = ()
    
#if FABLE_COMP...em.Threading.CancellationToken -> Async<System.Threading.CancellationToken>) = closure0()
let merge_cancellation_token_with_default_async x = v0 x
()
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: async.spi
00:00:05 d #85 Supervisor.buildFile / takeWhileInclusive / outputContent:
type Disposable (f : unit -> unit) = interface System.IDisposable with member _.Dispose () = f ()
type [<Struct>] US0 =
    | US0_0 of f0_0 : System.T...ading.CancellationToken option -> struct (System.Threading.CancellationToken * System.IDisposable)) = closure0()
let new_disposable_token x = v0 x
()
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: threading.spi
00:00:05 d #86 Supervisor.buildFile / takeWhileInclusive / outputContent:
let rec closure0 () (v0 : System.Threading.CancellationToken) : Async<System.Threading.CancellationToken> =
    let v1 : unit = ()
    
#if FABLE_COMP...em.Threading.CancellationToken -> Async<System.Threading.CancellationToken>) = closure0()
let merge_cancellation_token_with_default_async x = v0 x
()
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: async.spi
00:00:05 d #87 FileSystem.watchWithFilter / Disposing watch stream / filter: FileName, LastWrite
00:00:05 d #87 FileSystem.watchWithFilter / Disposing watch stream / filter: FileName, LastWrite
00:00:05 v #10 async.run_with_timeout_async / { timeout = 180 }
00:00:05 v #11 async.run_with_timeout_async / { timeout = 180 }
00:00:05 d #89 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: crypto.spi
00:00:05 d #90 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: common.spi
00:00:05 d #91 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: crypto.spi
00:00:05 d #92 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: crypto.spi
00:00:05 d #93 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: common.spi
00:00:05 d #94 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: common.spi
00:00:05 d #95 Supervisor.buildFile / AsyncSeq.scan / outputContent:
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("std::string::String")>]
type std_string_String = class end
#else
type std_string_String = stri...e0()
let v2 : unit = (fun () -> v1 (); v0) ()
let v16 : (US0 -> ((unit -> string) -> ((unit -> string) -> unit))) = closure3()
let trace x = v16 x
()
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: trace.spi
00:00:05 d #96 Supervisor.buildFile / takeWhileInclusive / outputContent:
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("std::string::String")>]
type std_string_String = class end
#else
type std_string_String = stri...e0()
let v2 : unit = (fun () -> v1 (); v0) ()
let v16 : (US0 -> ((unit -> string) -> ((unit -> string) -> unit))) = closure3()
let trace x = v16 x
()
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: trace.spi
00:00:05 d #97 FileSystem.watchWithFilter / Disposing watch stream / filter: FileName, LastWrite
00:00:05 v #98 Supervisor.sendJson / port: 13805 / json: {"FileOpen":{"spiText":"/// # common\n\n/// ## common\n\n/// ### join_body\ninl join_body body acc x...et memoize x = !memoize x\u0027 : ()\n","uri":"file:///c:/home/git/polyglot/lib/spiral/common.spi"}} / result:
00:00:05 v #99 Supervisor.sendJson / port: 13805 / json: {"FileOpen":{"spiText":"/// # crypto\nopen rust\nopen rust_operators\n\n/// ## fsharp\n\n/// ### sha..._port x = !hash_to_port x\u0027 : ()\n","uri":"file:///c:/home/git/polyglot/lib/spiral/crypto.spi"}} / result:
00:00:05 v #100 Supervisor.sendJson / port: 13805 / json: {"BuildFile":{"backend":"Fsharp","uri":"file:///c:/home/git/polyglot/lib/spiral/common.spi"}} / result:
00:00:05 v #100 Supervisor.sendJson / port: 13805 / json: {"BuildFile":{"backend":"Fsharp","uri":"file:///c:/home/git/polyglot/lib/spiral/crypto.spi"}} / result:
00:00:05 d #101 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: runtime.spi
00:00:05 d #102 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: runtime.spi
00:00:05 d #103 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: networking.spi
00:00:05 d #104 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: networking.spi
00:00:05 v #12 async.run_with_timeout_async / { timeout = 180 }
00:00:05 d #105 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: date_time.spi
00:00:05 d #106 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: date_time.spi
00:00:05 d #107 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: date_time.spi
00:00:05 v #108 Supervisor.sendJson / port: 13805 / json: {"FileOpen":{"spiText":"/// # date_time\nopen rust.rust_operators\nopen sm\u0027_operators\n\n/// ##... x = !format_iso8601 x\u0027 : ()\n","uri":"file:///c:/home/git/polyglot/lib/spiral/date_time.spi"}} / result:
00:00:05 v #109 Supervisor.sendJson / port: 13805 / json: {"BuildFile":{"backend":"Fsharp","uri":"file:///c:/home/git/polyglot/lib/spiral/date_time.spi"}} / result:
00:00:06 d #110 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: crypto.spi
00:00:06 d #111 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: crypto.spi
00:00:06 d #112 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: common.spi
00:00:06 d #113 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: common.spi
00:00:06 d #114 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: runtime.spi
00:00:06 d #115 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: runtime.spi
00:00:06 d #116 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: networking.spi
00:00:06 d #117 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: networking.spi
00:00:06 d #118 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: date_time.spi
00:00:06 d #119 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: date_time.spi
00:00:06 d #120 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: crypto.spi
00:00:06 d #121 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: crypto.spi
00:00:06 d #122 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: common.spi
00:00:06 d #123 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: common.spi
00:00:06 d #124 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: networking.spi
00:00:06 d #125 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: networking.spi
00:00:06 d #126 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: runtime.spi
00:00:06 d #127 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: runtime.spi
00:00:06 d #128 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: date_time.spi
00:00:06 d #129 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: date_time.spi
00:00:06 d #130 Supervisor.buildFile / AsyncSeq.scan / outputContent:
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("std::string::String")>]
type std_string_String = class end
#else
type std_string_String = stri...nit -> unit) -> unit option)) = closure4()
let retry_fn x = v17 x
let v18 : ((unit -> unit) -> (unit -> unit)) = closure15()
let memoize x = v18 x
()
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: common.spi
00:00:06 d #131 Supervisor.buildFile / takeWhileInclusive / outputContent:
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("std::string::String")>]
type std_string_String = class end
#else
type std_string_String = stri...nit -> unit) -> unit option)) = closure4()
let retry_fn x = v17 x
let v18 : ((unit -> unit) -> (unit -> unit)) = closure15()
let memoize x = v18 x
()
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: common.spi
00:00:06 d #132 FileSystem.watchWithFilter / Disposing watch stream / filter: FileName, LastWrite
00:00:07 d #133 Supervisor.buildFile / AsyncSeq.scan / outputContent:
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("chrono::DateTime<$0>")>]
#endif
type chrono_DateTime<'T> = class end
#if FABLE_COMPILER
[<Fabl...g -> (System.DateTime -> string)) = closure10()
let format x = v6 x
let v7 : (System.DateTime -> string) = closure12()
let format_iso8601 x = v7 x
()
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: date_time.spi
00:00:07 d #134 Supervisor.buildFile / takeWhileInclusive / outputContent:
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("chrono::DateTime<$0>")>]
#endif
type chrono_DateTime<'T> = class end
#if FABLE_COMPILER
[<Fabl...g -> (System.DateTime -> string)) = closure10()
let format x = v6 x
let v7 : (System.DateTime -> string) = closure12()
let format_iso8601 x = v7 x
()
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: date_time.spi
00:00:07 d #135 FileSystem.watchWithFilter / Disposing watch stream / filter: FileName, LastWrite
00:00:07 d #136 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: crypto.spi
00:00:07 d #137 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: crypto.spi
00:00:07 v #13 async.run_with_timeout_async / { timeout = 180 }
00:00:07 d #138 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: platform.spi
00:00:07 d #139 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: platform.spi
00:00:07 d #140 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: platform.spi
00:00:07 v #141 Supervisor.sendJson / port: 13805 / json: {"FileOpen":{"spiText":"/// # platform\nopen rust.rust_operators\n\n/// ## fsharp\n\n/// ### os_plat...et_executable_suffix ()\u0027 : ()\n","uri":"file:///c:/home/git/polyglot/lib/spiral/platform.spi"}} / result:
00:00:07 v #142 Supervisor.sendJson / port: 13805 / json: {"BuildFile":{"backend":"Fsharp","uri":"file:///c:/home/git/polyglot/lib/spiral/platform.spi"}} / result:
00:00:07 d #143 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: runtime.spi
00:00:07 d #143 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: networking.spi
00:00:07 d #144 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: runtime.spi
00:00:07 d #145 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: networking.spi
00:00:07 v #14 async.run_with_timeout_async / { timeout = 180 }
00:00:07 d #146 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: file_system.spi
00:00:07 d #147 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: file_system.spi
00:00:07 d #148 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: file_system.spi
00:00:07 v #149 Supervisor.sendJson / port: 13805 / json: {"FileOpen":{"spiText":"/// # file_system\nopen sm\u0027_operators\nopen rust\nopen rust_operators\n...003E) x = !combine x\u0027 : ()\n","uri":"file:///c:/home/git/polyglot/lib/spiral/file_system.spi"}} / result:
00:00:07 v #150 Supervisor.sendJson / port: 13805 / json: {"BuildFile":{"backend":"Fsharp","uri":"file:///c:/home/git/polyglot/lib/spiral/file_system.spi"}} / result:
00:00:07 d #151 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: crypto.spi
00:00:07 d #152 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: crypto.spi
00:00:07 d #153 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: platform.spi
00:00:07 d #154 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: platform.spi
00:00:07 d #155 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: networking.spi
00:00:07 d #156 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: networking.spi
00:00:07 d #157 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: runtime.spi
00:00:07 d #158 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: runtime.spi
00:00:07 d #159 Supervisor.buildFile / AsyncSeq.scan / outputContent:
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("Vec<$0>")>]
#endif
type Vec<'T> = class end
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core....1024us
    v111
let v0 : (string -> string) = closure0()
let hash_text x = v0 x
let v1 : (string -> uint16) = closure1()
let hash_to_port x = v1 x
()
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: crypto.spi
00:00:07 d #160 Supervisor.buildFile / takeWhileInclusive / outputContent:
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("Vec<$0>")>]
#endif
type Vec<'T> = class end
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core....1024us
    v111
let v0 : (string -> string) = closure0()
let hash_text x = v0 x
let v1 : (string -> uint16) = closure1()
let hash_to_port x = v1 x
()
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: crypto.spi
00:00:07 d #161 FileSystem.watchWithFilter / Disposing watch stream / filter: FileName, LastWrite
00:00:07 d #162 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: file_system.spi
00:00:07 d #163 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: file_system.spi
00:00:07 d #164 Supervisor.buildFile / AsyncSeq.scan / outputContent:
type [<Struct>] US0 =
    | US0_0
    | US0_1
    | US0_2
and [<Struct>] US1 =
    | US1_0 of f0_0 : US0
    | US1_1 of f1_0 : US0
    | US1_2 of f2_0...    v28
let v0 : (unit -> bool) = closure0()
let is_windows () = v0 ()
let v1 : (unit -> string) = closure1()
let get_executable_suffix () = v1 ()
()
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: platform.spi
00:00:07 d #165 Supervisor.buildFile / takeWhileInclusive / outputContent:
type [<Struct>] US0 =
    | US0_0
    | US0_1
    | US0_2
and [<Struct>] US1 =
    | US1_0 of f0_0 : US0
    | US1_1 of f1_0 : US0
    | US1_2 of f2_0...    v28
let v0 : (unit -> bool) = closure0()
let is_windows () = v0 ()
let v1 : (unit -> string) = closure1()
let get_executable_suffix () = v1 ()
()
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: platform.spi
00:00:07 d #166 FileSystem.watchWithFilter / Disposing watch stream / filter: FileName, LastWrite
00:00:08 d #167 Supervisor.buildFile / AsyncSeq.scan / outputContent:
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("std::string::String")>]
type std_string_String = class end
#else
type std_string_String = stri...ng option)) = closure28()
let execution_options x = v19 x
let v20 : (string -> Result<(string []), string>) = closure29()
let split_args x = v20 x
()
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: runtime.spi
00:00:08 d #168 Supervisor.buildFile / takeWhileInclusive / outputContent:
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("std::string::String")>]
type std_string_String = class end
#else
type std_string_String = stri...ng option)) = closure28()
let execution_options x = v19 x
let v20 : (string -> Result<(string []), string>) = closure29()
let split_args x = v20 x
()
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: runtime.spi
00:00:08 d #169 FileSystem.watchWithFilter / Disposing watch stream / filter: FileName, LastWrite
00:00:08 v #15 async.run_with_timeout_async / { timeout = 180 }
00:00:08 d #170 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: guid.spi
00:00:08 d #171 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: guid.spi
00:00:08 d #172 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: guid.spi
00:00:08 v #173 Supervisor.sendJson / port: 13805 / json: {"FileOpen":{"spiText":"/// # guid\n\n/// ## guid\n\n/// ### guid\nnominal guid_python =\n    \u0060...aw_guid x = !new_raw_guid x\u0027 : ()\n","uri":"file:///c:/home/git/polyglot/lib/spiral/guid.spi"}} / result:
00:00:08 v #174 Supervisor.sendJson / port: 13805 / json: {"BuildFile":{"backend":"Fsharp","uri":"file:///c:/home/git/polyglot/lib/spiral/guid.spi"}} / result:
00:00:08 v #16 async.run_with_timeout_async / { timeout = 180 }
00:00:08 d #175 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: sm'.spi
00:00:08 d #176 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: sm'.spi
00:00:08 d #177 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: sm'.spi
00:00:08 v #178 Supervisor.sendJson / port: 13805 / json: {"FileOpen":{"spiText":"/// # sm\u0027\nopen rust\nopen rust_operators\nopen sm\u0027_real\n\n/// ##...tring std_string = from_std_string\n","uri":"file:///c:/home/git/polyglot/lib/spiral/sm\u0027.spi"}} / result:
00:00:08 d #179 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: networking.spi
00:00:08 d #180 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: networking.spi
00:00:08 v #181 Supervisor.sendJson / port: 13805 / json: {"BuildFile":{"backend":"Fsharp","uri":"file:///c:/home/git/polyglot/lib/spiral/sm\u0027.spi"}} / result:
00:00:08 d #182 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: file_system.spi
00:00:08 d #183 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: file_system.spi
00:00:08 d #184 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: guid.spi
00:00:08 d #185 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: guid.spi
00:00:08 d #186 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: sm'.spi
00:00:08 d #187 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: sm'.spi
00:00:08 d #188 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: networking.spi
00:00:08 d #189 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: networking.spi
00:00:08 d #190 Supervisor.buildFile / AsyncSeq.scan / outputContent:
let rec closure0 () (v0 : string) : System.Guid =
    let v1 : System.Guid = v0 |> System.Guid 
    v1
and method0 (v0 : string) : System.Guid =
    l... = v0 x
let v1 : (string -> System.Guid) = closure1()
let hash_guid x = v1 x
let v2 : (unit -> System.Guid) = closure2()
let new_raw_guid x = v2 x
()
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: guid.spi
00:00:08 d #191 Supervisor.buildFile / takeWhileInclusive / outputContent:
let rec closure0 () (v0 : string) : System.Guid =
    let v1 : System.Guid = v0 |> System.Guid 
    v1
and method0 (v0 : string) : System.Guid =
    l... = v0 x
let v1 : (string -> System.Guid) = closure1()
let hash_guid x = v1 x
let v2 : (unit -> System.Guid) = closure2()
let new_raw_guid x = v2 x
()
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: guid.spi
00:00:08 d #192 FileSystem.watchWithFilter / Disposing watch stream / filter: FileName, LastWrite
00:00:08 d #193 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: file_system.spi
00:00:08 d #194 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: file_system.spi
00:00:09 d #195 Supervisor.buildFile / AsyncSeq.scan / outputContent:
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("regex::Regex")>]
#endif
type regex_Regex = class end
#if FABLE_COMPILER
[<Fable.Core.Erase; Fa... : (string -> ((string []) -> string)) = closure46()
let join' x = v21 x
let v22 : (string -> (char [])) = closure48()
let to_char_array x = v22 x
()
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: sm'.spi
00:00:09 d #196 Supervisor.buildFile / takeWhileInclusive / outputContent:
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("regex::Regex")>]
#endif
type regex_Regex = class end
#if FABLE_COMPILER
[<Fable.Core.Erase; Fa... : (string -> ((string []) -> string)) = closure46()
let join' x = v21 x
let v22 : (string -> (char [])) = closure48()
let to_char_array x = v22 x
()
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: sm'.spi
00:00:09 d #197 FileSystem.watchWithFilter / Disposing watch stream / filter: FileName, LastWrite
00:00:09 d #198 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: networking.spi
00:00:09 d #199 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: networking.spi
00:00:09 d #200 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: file_system.spi
00:00:09 d #201 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: file_system.spi
00:00:09 d #202 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: networking.spi
00:00:09 d #203 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: networking.spi
00:00:09 d #204 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: file_system.spi
00:00:09 d #205 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: file_system.spi
00:00:10 d #206 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: networking.spi
00:00:10 d #207 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: networking.spi
00:00:10 d #208 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: file_system.spi
00:00:10 d #209 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: file_system.spi
00:00:10 d #210 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: networking.spi
00:00:10 d #211 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: networking.spi
00:00:10 d #212 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: file_system.spi
00:00:10 d #213 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: file_system.spi
00:00:11 d #214 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: networking.spi
00:00:11 d #215 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: networking.spi
00:00:11 d #216 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: file_system.spi
00:00:11 d #217 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: file_system.spi
00:00:11 d #218 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: networking.spi
00:00:11 d #219 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: networking.spi
00:00:11 d #220 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: file_system.spi
00:00:11 d #221 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: file_system.spi
00:00:12 d #222 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: networking.spi
00:00:12 d #223 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: networking.spi
00:00:12 d #224 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: file_system.spi
00:00:12 d #225 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: file_system.spi
00:00:12 d #226 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: networking.spi
00:00:12 d #227 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: networking.spi
00:00:12 d #228 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: file_system.spi
00:00:12 d #229 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: file_system.spi
00:00:13 d #230 Supervisor.buildFile / AsyncSeq.scan / outputContent:
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("std::string::String")>]
type std_string_String = class end
#else
type std_string_String = stri...
let wait_for_port_access x = v18 x
let v19 : (int32 option -> (string -> (int32 -> Async<int32>))) = closure24()
let get_available_port x = v19 x
()
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: networking.spi
00:00:13 d #231 Supervisor.buildFile / takeWhileInclusive / outputContent:
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("std::string::String")>]
type std_string_String = class end
#else
type std_string_String = stri...
let wait_for_port_access x = v18 x
let v19 : (int32 option -> (string -> (int32 -> Async<int32>))) = closure24()
let get_available_port x = v19 x
()
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: networking.spi
00:00:13 d #232 FileSystem.watchWithFilter / Disposing watch stream / filter: FileName, LastWrite
00:00:13 d #233 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: file_system.spi
00:00:13 d #234 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: file_system.spi
00:00:13 d #235 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: file_system.spi
00:00:13 d #236 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: file_system.spi
00:00:14 d #237 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: file_system.spi
00:00:14 d #238 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: file_system.spi
00:00:14 d #239 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: file_system.spi
00:00:14 d #240 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: file_system.spi
00:00:15 d #241 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: file_system.spi
00:00:15 d #242 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: file_system.spi
00:00:15 d #243 Supervisor.buildFile / AsyncSeq.scan / outputContent:
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("std::string::String")>]
type std_string_String = class end
#else
type std_string_String = stri...(string -> (string -> unit)) = closure60()
let link_directory x = v34 x
let v35 : (string -> (string -> string)) = closure62()
let (</>) x = v35 x
()
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: file_system.spi
00:00:15 d #244 Supervisor.buildFile / takeWhileInclusive / outputContent:
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("std::string::String")>]
type std_string_String = class end
#else
type std_string_String = stri...(string -> (string -> unit)) = closure60()
let link_directory x = v34 x
let v35 : (string -> (string -> string)) = closure62()
let (</>) x = v35 x
()
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: file_system.spi
00:00:15 d #245 FileSystem.watchWithFilter / Disposing watch stream / filter: FileName, LastWrite
00:00:15 v #17 async.run_with_timeout_async / { timeout = 100 }
In [ ]:
{ pwsh ../apps/scheduler/build.ps1 } | Invoke-Block
00:00:00 v #1 async.run_with_timeout_async / { timeout = 180 }
00:00:00 d #1 runtime.execute_with_options_async / { file_name = dotnet; arguments = US5_0
  ""C:\home\git\polyglot\deps\The-Spiral-Language\The Spiral Language 2\artifacts\bin\The Spiral Language 2\release\Spiral.dll" --port 13805 --default-int i32 --default-float f64"; options = { command = dotnet "C:\home\git\polyglot\deps\The-Spiral-Language\The Spiral Language 2\artifacts\bin\The Spiral Language 2\release\Spiral.dll" --port 13805 --default-int i32 --default-float f64; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = Some <fun:main@595-7>; stdin = None; trace = true; working_directory = Some "C:\home\git\polyglot" } }
00:00:00 v #2 > 00:00:00 d #1 pwd: C:\home\git\polyglot
00:00:00 v #3 > 00:00:00 d #2 dllPath: C:\home\git\polyglot\deps\The-Spiral-Language\The Spiral Language 2\artifacts\bin\The Spiral Language 2\release
00:00:00 v #4 > 00:00:00 d #3 targetDir: C:\home\git\polyglot\target/spiral_Eval
00:00:01 v #2 async.run_with_timeout_async / { timeout = 100 }
00:00:01 v #3 async.run_with_timeout_async / { timeout = 100 }
00:00:01 v #5 > Starting the Spiral Server. It is bound to: http://localhost:13805
00:00:01 v #4 async.run_with_timeout_async / { timeout = 100 }
00:00:01 v #1 Supervisor.sendJson / port: 13805 / json: {"Ping":true} / result:
00:00:01 v #2 Supervisor.awaitCompiler / Ping / result: 'Some null' / port: 13805 / retry: 1
00:00:01 v #6 > Server bound to: http://localhost:13805
00:00:01 d #7 runtime.execute_with_options_async / { file_name = ../../workspace/target/release/spiral_builder.exe; arguments = US5_0 "dib --path Tasks.dib --retries 3"; options = { command = ../../workspace/target/release/spiral_builder.exe dib --path Tasks.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:00:01 v #8 > 00:00:00 d #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "Tasks.dib", "--retries", "3"])) }
00:00:01 v #9 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/polyglot/apps/scheduler/Tasks.dib", "--output-path", "c:/home/git/polyglot/apps/scheduler/Tasks.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/polyglot/apps/scheduler/Tasks.dib" --output-path "c:/home/git/polyglot/apps/scheduler/Tasks.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:00:03 v #10 > >
00:00:03 v #11 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:03 v #12 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:03 v #13 > > │ ## Tasks (Polyglot)                                                          │
00:00:03 v #14 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 v #15 > >
00:00:07 v #16 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:07 v #17 > > //// test
00:00:07 v #18 > >
00:00:07 v #19 > > open testing
00:00:11 v #20 > >
00:00:11 v #21 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:11 v #22 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:11 v #23 > > │ ## task_name                                                                 │
00:00:11 v #24 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:11 v #25 > >
00:00:11 v #26 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:11 v #27 > > nominal task_name = string
00:00:11 v #28 > >
00:00:11 v #29 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:11 v #30 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:11 v #31 > > │ ## manual_scheduling                                                         │
00:00:11 v #32 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:11 v #33 > >
00:00:11 v #34 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:11 v #35 > > union manual_scheduling =
00:00:11 v #36 > >     | WithSuggestion
00:00:11 v #37 > >     | WithoutSuggestion
00:00:12 v #38 > >
00:00:12 v #39 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:12 v #40 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:12 v #41 > > │ ## recurrency_offset                                                         │
00:00:12 v #42 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:12 v #43 > >
00:00:12 v #44 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:12 v #45 > > union recurrency_offset =
00:00:12 v #46 > >     | Days : i32
00:00:12 v #47 > >     | Weeks : i32
00:00:12 v #48 > >     | Months : i32
00:00:12 v #49 > >
00:00:12 v #50 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:12 v #51 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:12 v #52 > > │ ## day_of_week                                                               │
00:00:12 v #53 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:12 v #54 > >
00:00:12 v #55 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:12 v #56 > > union day_of_week =
00:00:12 v #57 > >     | Sunday
00:00:12 v #58 > >     | Monday
00:00:12 v #59 > >     | Tuesday
00:00:12 v #60 > >     | Wednesday
00:00:12 v #61 > >     | Thursday
00:00:12 v #62 > >     | Friday
00:00:12 v #63 > >     | Saturday
00:00:13 v #64 > >
00:00:13 v #65 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:13 v #66 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:13 v #67 > > │ ## month                                                                     │
00:00:13 v #68 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:13 v #69 > >
00:00:13 v #70 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:13 v #71 > > union month =
00:00:13 v #72 > >     | January
00:00:13 v #73 > >     | February
00:00:13 v #74 > >     | March
00:00:13 v #75 > >     | April
00:00:13 v #76 > >     | May
00:00:13 v #77 > >     | June
00:00:13 v #78 > >     | July
00:00:13 v #79 > >     | August
00:00:13 v #80 > >     | September
00:00:13 v #81 > >     | October
00:00:13 v #82 > >     | November
00:00:13 v #83 > >     | December
00:00:13 v #84 > >
00:00:13 v #85 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:13 v #86 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:13 v #87 > > │ ## day                                                                       │
00:00:13 v #88 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:13 v #89 > >
00:00:13 v #90 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:13 v #91 > > nominal day = i32
00:00:14 v #92 > >
00:00:14 v #93 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:14 v #94 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:14 v #95 > > │ ## year                                                                      │
00:00:14 v #96 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:14 v #97 > >
00:00:14 v #98 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:14 v #99 > > nominal year = i32
00:00:14 v #100 > >
00:00:14 v #101 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:14 v #102 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:14 v #103 > > │ ## fixed_recurrency                                                          │
00:00:14 v #104 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:14 v #105 > >
00:00:14 v #106 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:14 v #107 > > union fixed_recurrency =
00:00:14 v #108 > >     | Weekly : day_of_week
00:00:14 v #109 > >     | Monthly : day
00:00:14 v #110 > >     | Yearly : day * month
00:00:15 v #111 > >
00:00:15 v #112 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:15 v #113 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:15 v #114 > > │ ## recurrency                                                                │
00:00:15 v #115 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:15 v #116 > >
00:00:15 v #117 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:15 v #118 > > union recurrency =
00:00:15 v #119 > >     | Offset : recurrency_offset
00:00:15 v #120 > >     | Fixed : list fixed_recurrency
00:00:15 v #121 > >
00:00:15 v #122 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:15 v #123 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:15 v #124 > > │ ## scheduling                                                                │
00:00:15 v #125 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:15 v #126 > >
00:00:15 v #127 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:15 v #128 > > union scheduling =
00:00:15 v #129 > >     | Manual : manual_scheduling
00:00:15 v #130 > >     | Recurrent : recurrency
00:00:15 v #131 > >
00:00:15 v #132 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:15 v #133 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:15 v #134 > > │ ## task                                                                      │
00:00:15 v #135 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:15 v #136 > >
00:00:15 v #137 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:16 v #138 > > type task =
00:00:16 v #139 > >     {
00:00:16 v #140 > >         name : task_name
00:00:16 v #141 > >         scheduling : scheduling
00:00:16 v #142 > >     }
00:00:16 v #143 > >
00:00:16 v #144 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:16 v #145 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:16 v #146 > > │ ## date                                                                      │
00:00:16 v #147 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:16 v #148 > >
00:00:16 v #149 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:16 v #150 > > type date =
00:00:16 v #151 > >     {
00:00:16 v #152 > >         year : year
00:00:16 v #153 > >         month : month
00:00:16 v #154 > >         day : day
00:00:16 v #155 > >     }
00:00:16 v #156 > >
00:00:16 v #157 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:16 v #158 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:16 v #159 > > │ ## status                                                                    │
00:00:16 v #160 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:16 v #161 > >
00:00:16 v #162 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:16 v #163 > > union status =
00:00:16 v #164 > >     | Postponed : option ()
00:00:17 v #165 > >
00:00:17 v #166 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:17 v #167 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:17 v #168 > > │ ## event                                                                     │
00:00:17 v #169 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:17 v #170 > >
00:00:17 v #171 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:17 v #172 > > type event =
00:00:17 v #173 > >     {
00:00:17 v #174 > >         date : date
00:00:17 v #175 > >         status : status
00:00:17 v #176 > >     }
00:00:17 v #177 > >
00:00:17 v #178 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:17 v #179 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:17 v #180 > > │ ## task_template                                                             │
00:00:17 v #181 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:17 v #182 > >
00:00:17 v #183 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:17 v #184 > > type task_template =
00:00:17 v #185 > >     {
00:00:17 v #186 > >         task : task
00:00:17 v #187 > >         events : list event
00:00:17 v #188 > >     }
00:00:18 v #189 > >
00:00:18 v #190 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:18 v #191 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:18 v #192 > > │ ## get_tasks (test)                                                          │
00:00:18 v #193 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:18 v #194 > >
00:00:18 v #195 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:18 v #196 > > //// test
00:00:18 v #197 > >
00:00:18 v #198 > > inl get_tasks () : list task_template =
00:00:18 v #199 > >     [[
00:00:18 v #200 > >         {
00:00:18 v #201 > >             task =
00:00:18 v #202 > >                 {
00:00:18 v #203 > >                     name = task_name "01"
00:00:18 v #204 > >                     scheduling = Manual WithSuggestion
00:00:18 v #205 > >                 }
00:00:18 v #206 > >             events = [[]]
00:00:18 v #207 > >         }
00:00:18 v #208 > >         {
00:00:18 v #209 > >             task =
00:00:18 v #210 > >                 {
00:00:18 v #211 > >                     name = task_name "02"
00:00:18 v #212 > >                     scheduling = Manual WithSuggestion
00:00:18 v #213 > >                 }
00:00:18 v #214 > >             events = [[]]
00:00:18 v #215 > >         }
00:00:18 v #216 > >         {
00:00:18 v #217 > >             task =
00:00:18 v #218 > >                 {
00:00:18 v #219 > >                     name = task_name "03"
00:00:18 v #220 > >                     scheduling = Manual WithSuggestion
00:00:18 v #221 > >                 }
00:00:18 v #222 > >             events = [[]]
00:00:18 v #223 > >         }
00:00:18 v #224 > >     ]]
00:00:18 v #225 > >
00:00:18 v #226 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:18 v #227 > > //// test
00:00:18 v #228 > > ///! fsharp
00:00:18 v #229 > > ///! cuda
00:00:18 v #230 > > ///! rust
00:00:18 v #231 > > ///! typescript
00:00:18 v #232 > > ///! python
00:00:18 v #233 > >
00:00:18 v #234 > > get_tasks ()
00:00:18 v #235 > > |> sm'.format_debug
00:00:18 v #236 > > |> _assert sm'.contains "01"
00:00:24 v #237 > >
00:00:24 v #238 > > ╭─[ 5.69s - return value ]─────────────────────────────────────────────────────╮
00:00:24 v #239 > > │ .py output (Cuda):                                                           │
00:00:24 v #240 > > │ __assert / actual: 01 / expected: UH2_1(v0='01', v1=US1_0(v0=US0_0()),       │
00:00:24 v #241 > > │ v2=UH1_0(), v3=UH2_1(v0='02', v1=US1_0(v0=US0_0()), v2=UH1_0(),              │
00:00:24 v #242 > > │ v3=UH2_1(v0='03', v1=US1_0(v0=US0_0()), v2=UH1_0(), v3=UH2_0())))            │
00:00:24 v #243 > > │                                                                              │
00:00:24 v #244 > > │ .rs output:                                                                  │
00:00:24 v #245 > > │ __assert / actual: "01" / expected: "UH2_1("01", US1_0(US0_0), UH1_0,        │
00:00:24 v #246 > > │ UH2_1("02", US1_0(US0_0), UH1_0, UH2_1("03", US1_0(US0_0), UH1_0, UH2_0)))"  │
00:00:24 v #247 > > │                                                                              │
00:00:24 v #248 > > │ .ts output:                                                                  │
00:00:24 v #249 > > │ __assert / actual: 01 / expected: UH2_1 (01, US1_0 US0_0, UH1_0, UH2_1 (02,  │
00:00:24 v #250 > > │ US1_0 US0_0, UH1_0, UH2_1 (03, US1_0 US0_0, UH1_0, UH2_0)))                  │
00:00:24 v #251 > > │                                                                              │
00:00:24 v #252 > > │ .py output:                                                                  │
00:00:24 v #253 > > │ __assert / actual: 01 / expected: UH2_1 ("01", US1_0 US0_0, UH1_0, UH2_1     │
00:00:24 v #254 > > │ ("02", US1_0 US0_0, UH1_0, UH2_1 ("03", US1_0 US0_0, UH1_0, UH2_0)))         │
00:00:24 v #255 > > │                                                                              │
00:00:24 v #256 > > │                                                                              │
00:00:24 v #257 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:24 v #258 > >
00:00:24 v #259 > > ╭─[ 5.70s - stdout ]───────────────────────────────────────────────────────────╮
00:00:24 v #260 > > │ .fsx output:                                                                 │
00:00:24 v #261 > > │ __assert / actual: "01" / expected: "UH2_1                                   │
00:00:24 v #262 > > │   ("01", US1_0 US0_0, UH1_0,                                                 │
00:00:24 v #263 > > │    UH2_1 ("02", US1_0 US0_0, UH1_0, UH2_1 ("03", US1_0 US0_0, UH1_0,         │
00:00:24 v #264 > > │ UH2_0)))"                                                                    │
00:00:24 v #265 > > │                                                                              │
00:00:24 v #266 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:24 v #267 > >
00:00:24 v #268 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:24 v #269 > > //// test
00:00:24 v #270 > > ///! fsharp
00:00:24 v #271 > > ///! cuda
00:00:24 v #272 > > ///! rust
00:00:24 v #273 > > ///! typescript
00:00:24 v #274 > > ///! python
00:00:24 v #275 > >
00:00:24 v #276 > > get_tasks ()
00:00:24 v #277 > > |> listm'.try_item 0i32
00:00:24 v #278 > > |> fun (Some task) => task.task.name
00:00:24 v #279 > > |> _assert_eq (task_name "01")
00:00:27 v #280 > >
00:00:27 v #281 > > ╭─[ 3.58s - return value ]─────────────────────────────────────────────────────╮
00:00:27 v #282 > > │ .py output (Cuda):                                                           │
00:00:27 v #283 > > │ __assert_eq / actual: 01 / expected: 01                                      │
00:00:27 v #284 > > │                                                                              │
00:00:27 v #285 > > │ .rs output:                                                                  │
00:00:27 v #286 > > │ __assert_eq / actual: "01" / expected: "01"                                  │
00:00:27 v #287 > > │                                                                              │
00:00:27 v #288 > > │ .ts output:                                                                  │
00:00:27 v #289 > > │ __assert_eq / actual: 01 / expected: 01                                      │
00:00:27 v #290 > > │                                                                              │
00:00:27 v #291 > > │ .py output:                                                                  │
00:00:27 v #292 > > │ __assert_eq / actual: 01 / expected: 01                                      │
00:00:27 v #293 > > │                                                                              │
00:00:27 v #294 > > │                                                                              │
00:00:27 v #295 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:27 v #296 > >
00:00:27 v #297 > > ╭─[ 3.58s - stdout ]───────────────────────────────────────────────────────────╮
00:00:27 v #298 > > │ .fsx output:                                                                 │
00:00:27 v #299 > > │ __assert_eq / actual: "01" / expected: "01"                                  │
00:00:27 v #300 > > │                                                                              │
00:00:27 v #301 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:27 v #302 > 00:00:26 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 13098 }
00:00:27 v #303 > 00:00:26 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/polyglot/apps/scheduler/Tasks.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/polyglot/apps/scheduler/Tasks.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:00:29 v #304 > 00:00:27 v #5 ! [NbConvertApp] Converting notebook c:/home/git/polyglot/apps/scheduler/Tasks.dib.ipynb to html
00:00:29 v #305 > 00:00:27 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:00:29 v #306 > 00:00:27 v #7 !   validate(nb)
00:00:29 v #307 > 00:00:28 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:00:29 v #308 > 00:00:28 v #9 !   return _pygments_highlight(
00:00:30 v #309 > 00:00:28 v #10 ! [NbConvertApp] Writing 300420 bytes to c:\home\git\polyglot\apps\scheduler\Tasks.dib.html
00:00:30 v #310 > 00:00:28 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 860 }
00:00:30 v #311 > 00:00:28 d #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 860 }
00:00:30 v #312 > 00:00:28 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/polyglot/apps/scheduler/Tasks.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/polyglot/apps/scheduler/Tasks.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:00:30 v #313 > 00:00:28 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:00:30 v #314 > 00:00:28 d #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:00:30 v #315 > 00:00:28 d #16 spiral_builder.run / dib / { exit_code = 0; result_length = 14017 }
00:00:30 d #316 runtime.execute_with_options_async / { exit_code = 0; output_length = 17191 }
00:00:30 d #3 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder.exe dib --path Tasks.dib --retries 3
00:00:30 v #5 async.run_with_timeout_async / { timeout = 100 }
00:00:00 d #1 writeDibCode / output: Spi / path: Tasks.dib
00:00:00 d #2 parseDibCode / output: Spi / file: Tasks.dib
In [ ]:
{ pwsh ../apps/chat/build.ps1 } | Invoke-Block
00:00:00 v #1 async.run_with_timeout_async / { timeout = 180 }
00:00:00 d #1 runtime.execute_with_options_async / { file_name = dotnet; arguments = US5_0
  ""C:\home\git\polyglot\deps\The-Spiral-Language\The Spiral Language 2\artifacts\bin\The Spiral Language 2\release\Spiral.dll" --port 13805 --default-int i32 --default-float f64"; options = { command = dotnet "C:\home\git\polyglot\deps\The-Spiral-Language\The Spiral Language 2\artifacts\bin\The Spiral Language 2\release\Spiral.dll" --port 13805 --default-int i32 --default-float f64; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = Some <fun:main@595-7>; stdin = None; trace = true; working_directory = Some "C:\home\git\polyglot" } }
00:00:01 v #2 > 00:00:00 d #1 pwd: C:\home\git\polyglot
00:00:01 v #3 > 00:00:00 d #2 dllPath: C:\home\git\polyglot\deps\The-Spiral-Language\The Spiral Language 2\artifacts\bin\The Spiral Language 2\release
00:00:01 v #4 > 00:00:00 d #3 targetDir: C:\home\git\polyglot\target/spiral_Eval
00:00:01 v #2 async.run_with_timeout_async / { timeout = 100 }
00:00:01 v #5 > Starting the Spiral Server. It is bound to: http://localhost:13805
00:00:01 v #3 async.run_with_timeout_async / { timeout = 100 }
00:00:01 v #4 async.run_with_timeout_async / { timeout = 100 }
00:00:01 v #1 Supervisor.sendJson / port: 13805 / json: {"Ping":true} / result:
00:00:01 v #2 Supervisor.awaitCompiler / Ping / result: 'Some null' / port: 13805 / retry: 1
00:00:01 v #6 > Server bound to: http://localhost:13805
00:00:01 d #7 runtime.execute_with_options_async / { file_name = ../../../workspace/target/release/spiral_builder.exe; arguments = US5_0 "dib --path chat_contract.dib --retries 1"; options = { command = ../../../workspace/target/release/spiral_builder.exe dib --path chat_contract.dib --retries 1; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:00:01 v #8 > 00:00:00 d #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "chat_contract.dib", "--retries", "1"])) }
00:00:01 v #9 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/polyglot/apps/chat/contract/chat_contract.dib", "--output-path", "c:/home/git/polyglot/apps/chat/contract/chat_contract.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/polyglot/apps/chat/contract/chat_contract.dib" --output-path "c:/home/git/polyglot/apps/chat/contract/chat_contract.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:00:03 v #10 > >
00:00:03 v #11 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:03 v #12 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:03 v #13 > > │ # chat_contract                                                              │
00:00:03 v #14 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 v #15 > >
00:00:07 v #16 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:07 v #17 > > open rust
00:00:07 v #18 > > open rust.rust_operators
00:00:11 v #19 > >
00:00:11 v #20 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:11 v #21 > > //// test
00:00:11 v #22 > >
00:00:11 v #23 > > open testing
00:00:11 v #24 > >
00:00:11 v #25 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:11 v #26 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:11 v #27 > > │ ## chat_contract                                                             │
00:00:11 v #28 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:11 v #29 > >
00:00:11 v #30 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:11 v #31 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:11 v #32 > > │ ### state                                                                    │
00:00:11 v #33 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:11 v #34 > >
00:00:11 v #35 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:11 v #36 > > type state =
00:00:11 v #37 > >     {
00:00:11 v #38 > >         version : u32
00:00:11 v #39 > >         account_set : near.iterable_set near.account_id
00:00:11 v #40 > >         alias_set : near.iterable_set sm'.std_string
00:00:11 v #41 > >         account_map : near.lookup_map near.account_id sm'.std_string
00:00:11 v #42 > >         alias_map : near.lookup_map sm'.std_string (mapm.hash_map
00:00:11 v #43 > > near.account_id (u64 * u32))
00:00:11 v #44 > >     }
00:00:12 v #45 > >
00:00:12 v #46 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:12 v #47 > > //// test
00:00:12 v #48 > > ///! rust -c
00:00:12 v #49 > >
00:00:12 v #50 > > ()
00:00:35 v #51 > >
00:00:35 v #52 > > ╭─[ 23.31s - return value ]────────────────────────────────────────────────────╮
00:00:35 v #53 > > │                                                                              │
00:00:35 v #54 > > │ 00:00:08 i #2 near_workspaces.print_usd / { retry = 1;                 │
00:00:35 v #55 > > │ total_gas_burnt_usd = +0.000957; total_gas_burnt = 1432579057136 }           │
00:00:35 v #56 > > │ 00:00:08 i #3 near_workspaces.print_usd / outcome / { is_success =     │
00:00:35 v #57 > > │ true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; gas_burnt =   │
00:00:35 v #58 > > │ 308081859340; tokens_burnt = 30808185934000000000 }                          │
00:00:35 v #59 > > │ 00:00:08 i #4 near_workspaces.print_usd / outcome / { is_success =     │
00:00:35 v #60 > > │ true; gas_burnt_usd = +0.000602; tokens_burnt_usd = +0.000602; gas_burnt =   │
00:00:35 v #61 > > │ 901314635296; tokens_burnt = 90131463529600000000 }                          │
00:00:35 v #62 > > │ 00:00:08 i #5 near_workspaces.print_usd / outcome / { is_success =     │
00:00:35 v #63 > > │ true; gas_burnt_usd = +0.000149; tokens_burnt_usd = +0.000000; gas_burnt =   │
00:00:35 v #64 > > │ 223182562500; tokens_burnt = 0 }                                             │
00:00:35 v #65 > > │                                                                              │
00:00:35 v #66 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:35 v #67 > >
00:00:35 v #68 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:35 v #69 > > //// test
00:00:35 v #70 > > ///! rust -c
00:00:35 v #71 > >
00:00:35 v #72 > > trace Verbose (fun () => "") id
00:00:48 v #73 > >
00:00:48 v #74 > > ╭─[ 12.92s - return value ]────────────────────────────────────────────────────╮
00:00:48 v #75 > > │                                                                              │
00:00:48 v #76 > > │ 00:00:06 i #2 near_workspaces.print_usd / { retry = 1;                 │
00:00:48 v #77 > > │ total_gas_burnt_usd = +0.001032; total_gas_burnt = 1545399496396 }           │
00:00:48 v #78 > > │ 00:00:06 i #3 near_workspaces.print_usd / outcome / { is_success =     │
00:00:48 v #79 > > │ true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; gas_burnt =   │
00:00:48 v #80 > > │ 308081859340; tokens_burnt = 30808185934000000000 }                          │
00:00:48 v #81 > > │ 00:00:06 i #4 near_workspaces.print_usd / outcome / { is_success =     │
00:00:48 v #82 > > │ true; gas_burnt_usd = +0.000677; tokens_burnt_usd = +0.000677; gas_burnt =   │
00:00:48 v #83 > > │ 1014135074556; tokens_burnt = 101413507455600000000 }                        │
00:00:48 v #84 > > │ 00:00:06 i #5 near_workspaces.print_usd / outcome / { is_success =     │
00:00:48 v #85 > > │ true; gas_burnt_usd = +0.000149; tokens_burnt_usd = +0.000000; gas_burnt =   │
00:00:48 v #86 > > │ 223182562500; tokens_burnt = 0 }                                             │
00:00:48 v #87 > > │                                                                              │
00:00:48 v #88 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:48 v #89 > >
00:00:48 v #90 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:48 v #91 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:48 v #92 > > │ ### new                                                                      │
00:00:48 v #93 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:48 v #94 > >
00:00:48 v #95 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:48 v #96 > > inl new () : state =
00:00:48 v #97 > >     {
00:00:48 v #98 > >         version = 2
00:00:48 v #99 > >         account_set = "account_set" |> sm'.byte_slice |> near.new_iterable_set
00:00:48 v #100 > >         alias_set = "alias_set" |> sm'.byte_slice |> near.new_iterable_set
00:00:48 v #101 > >         account_map = "account_map" |> sm'.byte_slice |> near.new_lookup_map
00:00:48 v #102 > >         alias_map = "alias_map" |> sm'.byte_slice |> near.new_lookup_map
00:00:48 v #103 > >
00:00:48 v #104 > >     }
00:00:49 v #105 > >
00:00:49 v #106 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:49 v #107 > > //// test
00:00:49 v #108 > > ///! rust -c
00:00:49 v #109 > >
00:00:49 v #110 > > inl state = new ()
00:00:49 v #111 > > trace Verbose (fun () => "chat_contract") fun () => { state = state |>
00:00:49 v #112 > > sm'.format_debug }
00:00:49 v #113 > > trace Verbose (fun () => "") id
00:01:10 v #114 > >
00:01:10 v #115 > > ╭─[ 21.02s - return value ]────────────────────────────────────────────────────╮
00:01:10 v #116 > > │ 00:00:00 v #1 chat_contract / { state = (2, IterableSet { elements:    │
00:01:10 v #117 > > │ Vector { len: 0, prefix: [97, 99, 99, 111, 117, 110, 116, 95, 115, 101, 116, │
00:01:10 v #118 > > │ 118] }, index: LookupMap { prefix: [97, 99, 99, 111, 117, 110, 116, 95, 115, │
00:01:10 v #119 > > │ 101, 116, 109] } }, IterableSet { elements: Vector { len: 0, prefix: [97,    │
00:01:10 v #120 > > │ 108, 105, 97, 115, 95, 115, 101, 116, 118] }, index: LookupMap { prefix: [   │
00:01:10 v #121 > > │ 97, 108, 105, 97, 115, 95, 115, 101, 116, 109] } }, LookupMap { prefix: [97, │
00:01:10 v #122 > > │ 99, 99, 111, 117, 110, 116, 95, 109, 97, 112] }, LookupMap { prefix: [97,    │
00:01:10 v #123 > > │ 108, 105, 97, 115, 95, 109, 97, 112] }) }                                    │
00:01:10 v #124 > > │                                                                              │
00:01:10 v #125 > > │ 00:00:06 i #2 near_workspaces.print_usd / { retry = 1;                 │
00:01:10 v #126 > > │ total_gas_burnt_usd = +0.001333; total_gas_burnt = 1995695563667 }           │
00:01:10 v #127 > > │ 00:00:06 i #3 near_workspaces.print_usd / outcome / { is_success =     │
00:01:10 v #128 > > │ true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; gas_burnt =   │
00:01:10 v #129 > > │ 308081859340; tokens_burnt = 30808185934000000000 }                          │
00:01:10 v #130 > > │ 00:00:06 i #4 near_workspaces.print_usd / outcome / { is_success =     │
00:01:10 v #131 > > │ true; gas_burnt_usd = +0.001127; tokens_burnt_usd = +0.001127; gas_burnt =   │
00:01:10 v #132 > > │ 1687613704327; tokens_burnt = 168761370432700000000 }                        │
00:01:10 v #133 > > │ 00:00:06 w #5 spiral_wasm.run / Error error / { retry = 1; error = "{  │
00:01:10 v #134 > > │ receipt_outcomes_len = 1; retry = 1; receipt_failures = [] }" }              │
00:01:10 v #135 > > │                                                                              │
00:01:10 v #136 > > │                                                                              │
00:01:10 v #137 > > │ 00:00:00 v #1 chat_contract / { state = (2, IterableSet { elements:    │
00:01:10 v #138 > > │ Vector { len: 0, prefix: [97, 99, 99, 111, 117, 110, 116, 95, 115, 101, 116, │
00:01:10 v #139 > > │ 118] }, index: LookupMap { prefix: [97, 99, 99, 111, 117, 110, 116, 95, 115, │
00:01:10 v #140 > > │ 101, 116, 109] } }, IterableSet { elements: Vector { len: 0, prefix: [97,    │
00:01:10 v #141 > > │ 108, 105, 97, 115, 95, 115, 101, 116, 118] }, index: LookupMap { prefix: [   │
00:01:10 v #142 > > │ 97, 108, 105, 97, 115, 95, 115, 101, 116, 109] } }, LookupMap { prefix: [97, │
00:01:10 v #143 > > │ 99, 99, 111, 117, 110, 116, 95, 109, 97, 112] }, LookupMap { prefix: [97,    │
00:01:10 v #144 > > │ 108, 105, 97, 115, 95, 109, 97, 112] }) }                                    │
00:01:10 v #145 > > │                                                                              │
00:01:10 v #146 > > │ 00:00:13 i #8 near_workspaces.print_usd / { retry = 2;                 │
00:01:10 v #147 > > │ total_gas_burnt_usd = +0.001482; total_gas_burnt = 2218878126167 }           │
00:01:10 v #148 > > │ 00:00:13 i #9 near_workspaces.print_usd / outcome / { is_success =     │
00:01:10 v #149 > > │ true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; gas_burnt =   │
00:01:10 v #150 > > │ 308081859340; tokens_burnt = 30808185934000000000 }                          │
00:01:10 v #151 > > │ 00:00:13 i #10 near_workspaces.print_usd / outcome / { is_success =    │
00:01:10 v #152 > > │ true; gas_burnt_usd = +0.001127; tokens_burnt_usd = +0.001127; gas_burnt =   │
00:01:10 v #153 > > │ 1687613704327; tokens_burnt = 168761370432700000000 }                        │
00:01:10 v #154 > > │ 00:00:13 i #11 near_workspaces.print_usd / outcome / { is_success =    │
00:01:10 v #155 > > │ true; gas_burnt_usd = +0.000149; tokens_burnt_usd = +0.000000; gas_burnt =   │
00:01:10 v #156 > > │ 223182562500; tokens_burnt = 0 }                                             │
00:01:10 v #157 > > │                                                                              │
00:01:10 v #158 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:10 v #159 > >
00:01:10 v #160 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:10 v #161 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:10 v #162 > > │ ### is_valid_alias                                                           │
00:01:10 v #163 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:10 v #164 > >
00:01:10 v #165 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:10 v #166 > > inl is_valid_alias (alias : sm'.std_string) : bool =
00:01:10 v #167 > >     inl alias' = alias |> sm'.from_std_string
00:01:10 v #168 > >     inl alias_len = alias' |> sm'.length
00:01:10 v #169 > >
00:01:10 v #170 > >     alias_len > 0i32
00:01:10 v #171 > >         && alias_len < 64
00:01:10 v #172 > >         && (alias' |> sm'.starts_with "-" |> not)
00:01:10 v #173 > >         && (alias' |> sm'.ends_with "-" |> not)
00:01:10 v #174 > >         && (alias' |> sm'.as_str |> sm'.chars |> iter.all (fun c => (c |>
00:01:10 v #175 > > sm'.char_is_alphanumeric) || c = '-'))
00:01:10 v #176 > >
00:01:10 v #177 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:10 v #178 > > //// test
00:01:10 v #179 > > ///! rust -c
00:01:10 v #180 > >
00:01:10 v #181 > > ""
00:01:10 v #182 > > |> sm'.to_std_string
00:01:10 v #183 > > |> is_valid_alias
00:01:10 v #184 > > |> _assert_eq false
00:01:28 v #185 > >
00:01:28 v #186 > > ╭─[ 18.23s - return value ]────────────────────────────────────────────────────╮
00:01:28 v #187 > > │                                                                              │
00:01:28 v #188 > > │ 00:00:06 i #2 near_workspaces.print_usd / { retry = 1;                 │
00:01:28 v #189 > > │ total_gas_burnt_usd = +0.000822; total_gas_burnt = 1230963536953 }           │
00:01:28 v #190 > > │ 00:00:06 i #3 near_workspaces.print_usd / outcome / { is_success =     │
00:01:28 v #191 > > │ true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; gas_burnt =   │
00:01:28 v #192 > > │ 308081859340; tokens_burnt = 30808185934000000000 }                          │
00:01:28 v #193 > > │ 00:00:06 i #4 near_workspaces.print_usd / outcome / { is_success =     │
00:01:28 v #194 > > │ true; gas_burnt_usd = +0.000616; tokens_burnt_usd = +0.000616; gas_burnt =   │
00:01:28 v #195 > > │ 922881677613; tokens_burnt = 92288167761300000000 }                          │
00:01:28 v #196 > > │ 00:00:06 w #5 spiral_wasm.run / Error error / { retry = 1; error = "{  │
00:01:28 v #197 > > │ receipt_outcomes_len = 1; retry = 1; receipt_failures = [] }" }              │
00:01:28 v #198 > > │                                                                              │
00:01:28 v #199 > > │                                                                              │
00:01:28 v #200 > > │                                                                              │
00:01:28 v #201 > > │ 00:00:14 i #8 near_workspaces.print_usd / { retry = 2;                 │
00:01:28 v #202 > > │ total_gas_burnt_usd = +0.000971; total_gas_burnt = 1454146099453 }           │
00:01:28 v #203 > > │ 00:00:14 i #9 near_workspaces.print_usd / outcome / { is_success =     │
00:01:28 v #204 > > │ true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; gas_burnt =   │
00:01:28 v #205 > > │ 308081859340; tokens_burnt = 30808185934000000000 }                          │
00:01:28 v #206 > > │ 00:00:14 i #10 near_workspaces.print_usd / outcome / { is_success =    │
00:01:28 v #207 > > │ true; gas_burnt_usd = +0.000616; tokens_burnt_usd = +0.000616; gas_burnt =   │
00:01:28 v #208 > > │ 922881677613; tokens_burnt = 92288167761300000000 }                          │
00:01:28 v #209 > > │ 00:00:14 i #11 near_workspaces.print_usd / outcome / { is_success =    │
00:01:28 v #210 > > │ true; gas_burnt_usd = +0.000149; tokens_burnt_usd = +0.000000; gas_burnt =   │
00:01:28 v #211 > > │ 223182562500; tokens_burnt = 0 }                                             │
00:01:28 v #212 > > │                                                                              │
00:01:28 v #213 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:28 v #214 > >
00:01:28 v #215 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:28 v #216 > > //// test
00:01:28 v #217 > > ///! rust -c
00:01:28 v #218 > >
00:01:28 v #219 > > "a-"
00:01:28 v #220 > > |> sm'.to_std_string
00:01:28 v #221 > > |> is_valid_alias
00:01:28 v #222 > > |> _assert_eq false
00:01:39 v #223 > >
00:01:39 v #224 > > ╭─[ 10.93s - return value ]────────────────────────────────────────────────────╮
00:01:39 v #225 > > │                                                                              │
00:01:39 v #226 > > │ 00:00:06 i #2 near_workspaces.print_usd / { retry = 1;                 │
00:01:39 v #227 > > │ total_gas_burnt_usd = +0.000973; total_gas_burnt = 1456112416876 }           │
00:01:39 v #228 > > │ 00:00:06 i #3 near_workspaces.print_usd / outcome / { is_success =     │
00:01:39 v #229 > > │ true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; gas_burnt =   │
00:01:39 v #230 > > │ 308081859340; tokens_burnt = 30808185934000000000 }                          │
00:01:39 v #231 > > │ 00:00:06 i #4 near_workspaces.print_usd / outcome / { is_success =     │
00:01:39 v #232 > > │ true; gas_burnt_usd = +0.000618; tokens_burnt_usd = +0.000618; gas_burnt =   │
00:01:39 v #233 > > │ 924847995036; tokens_burnt = 92484799503600000000 }                          │
00:01:39 v #234 > > │ 00:00:06 i #5 near_workspaces.print_usd / outcome / { is_success =     │
00:01:39 v #235 > > │ true; gas_burnt_usd = +0.000149; tokens_burnt_usd = +0.000000; gas_burnt =   │
00:01:39 v #236 > > │ 223182562500; tokens_burnt = 0 }                                             │
00:01:39 v #237 > > │                                                                              │
00:01:39 v #238 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:39 v #239 > >
00:01:39 v #240 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:39 v #241 > > //// test
00:01:39 v #242 > > ///! rust -c
00:01:39 v #243 > >
00:01:39 v #244 > > "a-a"
00:01:39 v #245 > > |> sm'.to_std_string
00:01:39 v #246 > > |> is_valid_alias
00:01:39 v #247 > > |> _assert_eq true
00:02:22 v #248 > >
00:02:22 v #249 > > ╭─[ 42.51s - return value ]────────────────────────────────────────────────────╮
00:02:22 v #250 > > │                                                                              │
00:02:22 v #251 > > │ 00:00:06 i #2 near_workspaces.print_usd / { retry = 1;                 │
00:02:22 v #252 > > │ total_gas_burnt_usd = +0.000825; total_gas_burnt = 1234523614175 }           │
00:02:22 v #253 > > │ 00:00:06 i #3 near_workspaces.print_usd / outcome / { is_success =     │
00:02:22 v #254 > > │ true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; gas_burnt =   │
00:02:22 v #255 > > │ 308081859340; tokens_burnt = 30808185934000000000 }                          │
00:02:22 v #256 > > │ 00:00:06 i #4 near_workspaces.print_usd / outcome / { is_success =     │
00:02:22 v #257 > > │ true; gas_burnt_usd = +0.000619; tokens_burnt_usd = +0.000619; gas_burnt =   │
00:02:22 v #258 > > │ 926441754835; tokens_burnt = 92644175483500000000 }                          │
00:02:22 v #259 > > │ 00:00:06 w #5 spiral_wasm.run / Error error / { retry = 1; error = "{  │
00:02:22 v #260 > > │ receipt_outcomes_len = 1; retry = 1; receipt_failures = [] }" }              │
00:02:22 v #261 > > │                                                                              │
00:02:22 v #262 > > │                                                                              │
00:02:22 v #263 > > │                                                                              │
00:02:22 v #264 > > │ 00:00:13 i #8 near_workspaces.print_usd / { retry = 2;                 │
00:02:22 v #265 > > │ total_gas_burnt_usd = +0.000825; total_gas_burnt = 1234523614175 }           │
00:02:22 v #266 > > │ 00:00:13 i #9 near_workspaces.print_usd / outcome / { is_success =     │
00:02:22 v #267 > > │ true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; gas_burnt =   │
00:02:22 v #268 > > │ 308081859340; tokens_burnt = 30808185934000000000 }                          │
00:02:22 v #269 > > │ 00:00:13 i #10 near_workspaces.print_usd / outcome / { is_success =    │
00:02:22 v #270 > > │ true; gas_burnt_usd = +0.000619; tokens_burnt_usd = +0.000619; gas_burnt =   │
00:02:22 v #271 > > │ 926441754835; tokens_burnt = 92644175483500000000 }                          │
00:02:22 v #272 > > │ 00:00:13 w #11 spiral_wasm.run / Error error / { retry = 2; error = "{ │
00:02:22 v #273 > > │ receipt_outcomes_len = 1; retry = 2; receipt_failures = [] }" }              │
00:02:22 v #274 > > │                                                                              │
00:02:22 v #275 > > │                                                                              │
00:02:22 v #276 > > │                                                                              │
00:02:22 v #277 > > │ 00:00:19 i #14 near_workspaces.print_usd / { retry = 3;                │
00:02:22 v #278 > > │ total_gas_burnt_usd = +0.000825; total_gas_burnt = 12...error = "{           │
00:02:22 v #279 > > │ receipt_outcomes_len = 1; retry = 4; receipt_failures = [] }" }              │
00:02:22 v #280 > > │                                                                              │
00:02:22 v #281 > > │                                                                              │
00:02:22 v #282 > > │                                                                              │
00:02:22 v #283 > > │ 00:00:31 i #26 near_workspaces.print_usd / { retry = 5;                │
00:02:22 v #284 > > │ total_gas_burnt_usd = +0.000825; total_gas_burnt = 1234523614175 }           │
00:02:22 v #285 > > │ 00:00:31 i #27 near_workspaces.print_usd / outcome / { is_success =    │
00:02:22 v #286 > > │ true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; gas_burnt =   │
00:02:22 v #287 > > │ 308081859340; tokens_burnt = 30808185934000000000 }                          │
00:02:22 v #288 > > │ 00:00:31 i #28 near_workspaces.print_usd / outcome / { is_success =    │
00:02:22 v #289 > > │ true; gas_burnt_usd = +0.000619; tokens_burnt_usd = +0.000619; gas_burnt =   │
00:02:22 v #290 > > │ 926441754835; tokens_burnt = 92644175483500000000 }                          │
00:02:22 v #291 > > │ 00:00:31 w #29 spiral_wasm.run / Error error / { retry = 5; error = "{ │
00:02:22 v #292 > > │ receipt_outcomes_len = 1; retry = 5; receipt_failures = [] }" }              │
00:02:22 v #293 > > │                                                                              │
00:02:22 v #294 > > │                                                                              │
00:02:22 v #295 > > │                                                                              │
00:02:22 v #296 > > │ 00:00:38 i #32 near_workspaces.print_usd / { retry = 6;                │
00:02:22 v #297 > > │ total_gas_burnt_usd = +0.000974; total_gas_burnt = 1457706176675 }           │
00:02:22 v #298 > > │ 00:00:38 i #33 near_workspaces.print_usd / outcome / { is_success =    │
00:02:22 v #299 > > │ true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; gas_burnt =   │
00:02:22 v #300 > > │ 308081859340; tokens_burnt = 30808185934000000000 }                          │
00:02:22 v #301 > > │ 00:00:38 i #34 near_workspaces.print_usd / outcome / { is_success =    │
00:02:22 v #302 > > │ true; gas_burnt_usd = +0.000619; tokens_burnt_usd = +0.000619; gas_burnt =   │
00:02:22 v #303 > > │ 926441754835; tokens_burnt = 92644175483500000000 }                          │
00:02:22 v #304 > > │ 00:00:38 i #35 near_workspaces.print_usd / outcome / { is_success =    │
00:02:22 v #305 > > │ true; gas_burnt_usd = +0.000149; tokens_burnt_usd = +0.000000; gas_burnt =   │
00:02:22 v #306 > > │ 223182562500; tokens_burnt = 0 }                                             │
00:02:22 v #307 > > │                                                                              │
00:02:22 v #308 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:22 v #309 > >
00:02:22 v #310 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:22 v #311 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:22 v #312 > > │ ### generate_cid                                                             │
00:02:22 v #313 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:22 v #314 > >
00:02:22 v #315 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:22 v #316 > > inl generate_cid (content : am'.vec u8) : sm'.std_string =
00:02:22 v #317 > >     !\($'"  fn encode_u64(value: u64) -> Vec<u8> { //"') : ()
00:02:22 v #318 > >     !\($'"    let mut buffer = unsigned_varint::encode::u64_buffer(); //"') : ()
00:02:22 v #319 > >     !\($'"    unsigned_varint::encode::u64(value, &mut buffer).to_vec() //"') :
00:02:22 v #320 > > ()
00:02:22 v #321 > >     !\($'"  } //"') : ()
00:02:22 v #322 > >
00:02:22 v #323 > >     !\($'"  fn sha256_hash(content: &[[u8]]) -> Vec<u8> { //"') : ()
00:02:22 v #324 > >     !\($'"    let mut hasher: sha2::Sha256 = sha2::Digest::new(); //"') : ()
00:02:22 v #325 > >     !\($'"    sha2::Digest::update(&mut hasher, content); //"') : ()
00:02:22 v #326 > >     !\($'"    sha2::Digest::finalize(hasher).to_vec() //"') : ()
00:02:22 v #327 > >     !\($'"  } //"') : ()
00:02:22 v #328 > >
00:02:22 v #329 > >     !\($'"  let version: u8 = 1; //"') : ()
00:02:22 v #330 > >     !\($'"  let codec_raw: u64 = 0x55; //"') : ()
00:02:22 v #331 > >
00:02:22 v #332 > >     !\($'"  let codec_bytes = encode_u64(codec_raw); //"') : ()
00:02:22 v #333 > >     !\($'"  let hash_result = sha256_hash(&!content); //"') : ()
00:02:22 v #334 > >     !\($'"  let multihash = std::iter::once(0x12) //"') : ()
00:02:22 v #335 > >     !\($'"    .chain(std::iter::once(32)) //"') : ()
00:02:22 v #336 > >     !\($'"    .chain(hash_result.into_iter()) //"') : ()
00:02:22 v #337 > >     !\($'"    .collect(); //"') : ()
00:02:22 v #338 > >     !\($'"  let cid_bytes = [[vec\![[version]], codec_bytes,
00:02:22 v #339 > > multihash]].concat(); //"') : ()
00:02:22 v #340 > >     !\($'"  let result = multibase::encode(multibase::Base::Base32Lower,
00:02:22 v #341 > > &cid_bytes); //"') : ()
00:02:22 v #342 > >     !\($'"result"')
00:02:22 v #343 > >
00:02:22 v #344 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:22 v #345 > > //// test
00:02:22 v #346 > > ///! rust -c -d multibase sha2 unsigned-varint
00:02:22 v #347 > >
00:02:22 v #348 > > ;[[]]
00:02:22 v #349 > > |> am'.to_vec
00:02:22 v #350 > > |> generate_cid
00:02:22 v #351 > > |> sm'.from_std_string
00:02:22 v #352 > > |> _assert_eq "bafkreihdwdcefgh4dqkjv67uzcmw7ojee6xedzdetojuzjevtenxquvyku"
00:02:42 v #353 > >
00:02:42 v #354 > > ╭─[ 19.93s - return value ]────────────────────────────────────────────────────╮
00:02:42 v #355 > > │                                                                              │
00:02:42 v #356 > > │ 00:00:07 i #2 near_workspaces.print_usd / { retry = 1;                 │
00:02:42 v #357 > > │ total_gas_burnt_usd = +0.000876; total_gas_burnt = 1312006740624 }           │
00:02:42 v #358 > > │ 00:00:07 i #3 near_workspaces.print_usd / outcome / { is_success =     │
00:02:42 v #359 > > │ true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; gas_burnt =   │
00:02:42 v #360 > > │ 308081859340; tokens_burnt = 30808185934000000000 }                          │
00:02:42 v #361 > > │ 00:00:07 i #4 near_workspaces.print_usd / outcome / { is_success =     │
00:02:42 v #362 > > │ true; gas_burnt_usd = +0.000671; tokens_burnt_usd = +0.000671; gas_burnt =   │
00:02:42 v #363 > > │ 1003924881284; tokens_burnt = 100392488128400000000 }                        │
00:02:42 v #364 > > │ 00:00:07 w #5 spiral_wasm.run / Error error / { retry = 1; error = "{  │
00:02:42 v #365 > > │ receipt_outcomes_len = 1; retry = 1; receipt_failures = [] }" }              │
00:02:42 v #366 > > │                                                                              │
00:02:42 v #367 > > │                                                                              │
00:02:42 v #368 > > │                                                                              │
00:02:42 v #369 > > │ 00:00:14 i #8 near_workspaces.print_usd / { retry = 2;                 │
00:02:42 v #370 > > │ total_gas_burnt_usd = +0.001026; total_gas_burnt = 1535189303124 }           │
00:02:42 v #371 > > │ 00:00:14 i #9 near_workspaces.print_usd / outcome / { is_success =     │
00:02:42 v #372 > > │ true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; gas_burnt =   │
00:02:42 v #373 > > │ 308081859340; tokens_burnt = 30808185934000000000 }                          │
00:02:42 v #374 > > │ 00:00:14 i #10 near_workspaces.print_usd / outcome / { is_success =    │
00:02:42 v #375 > > │ true; gas_burnt_usd = +0.000671; tokens_burnt_usd = +0.000671; gas_burnt =   │
00:02:42 v #376 > > │ 1003924881284; tokens_burnt = 100392488128400000000 }                        │
00:02:42 v #377 > > │ 00:00:14 i #11 near_workspaces.print_usd / outcome / { is_success =    │
00:02:42 v #378 > > │ true; gas_burnt_usd = +0.000149; tokens_burnt_usd = +0.000000; gas_burnt =   │
00:02:42 v #379 > > │ 223182562500; tokens_burnt = 0 }                                             │
00:02:42 v #380 > > │                                                                              │
00:02:42 v #381 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:42 v #382 > >
00:02:42 v #383 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:42 v #384 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:42 v #385 > > │ ### claim_alias                                                              │
00:02:42 v #386 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:42 v #387 > >
00:02:42 v #388 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:42 v #389 > > inl claim_alias (state : rust.ref (rust.mut' state)) (alias : sm'.std_string) :
00:02:42 v #390 > > () =
00:02:42 v #391 > >     inl account_set : rust.ref (rust.mut' (near.iterable_set near.account_id)) =
00:02:42 v #392 > >         !\($'$"&mut !state.1"')
00:02:42 v #393 > >
00:02:42 v #394 > >     inl alias_set : rust.ref (rust.mut' (near.iterable_set sm'.std_string)) =
00:02:42 v #395 > >         !\($'$"&mut !state.2"')
00:02:42 v #396 > >
00:02:42 v #397 > >     inl account_map : rust.ref (rust.mut' (near.lookup_map near.account_id
00:02:42 v #398 > > sm'.std_string)) =
00:02:42 v #399 > >         !\($'$"&mut !state.3"')
00:02:42 v #400 > >
00:02:42 v #401 > >     inl alias_map : rust.ref (rust.mut' (near.lookup_map sm'.std_string
00:02:42 v #402 > > (mapm.hash_map near.account_id (u64 * u32)))) =
00:02:42 v #403 > >         !\($'$"&mut !state.4"')
00:02:42 v #404 > >
00:02:42 v #405 > >     inl signer_account_id = near.signer_account_id ()
00:02:42 v #406 > >     inl predecessor_account_id = near.predecessor_account_id ()
00:02:42 v #407 > >     inl block_timestamp = near.block_timestamp ()
00:02:42 v #408 > >
00:02:42 v #409 > >     trace Debug
00:02:42 v #410 > >         fun () => "chat_contract.claim_alias"
00:02:42 v #411 > >         fun () => {
00:02:42 v #412 > >             alias
00:02:42 v #413 > >             block_timestamp
00:02:42 v #414 > >             signer_account_id = signer_account_id |> sm'.to_string'
00:02:42 v #415 > >             predecessor_account_id = predecessor_account_id |> sm'.to_string'
00:02:42 v #416 > >         }
00:02:42 v #417 > >
00:02:42 v #418 > >     if alias |> is_valid_alias |> not
00:02:42 v #419 > >     then near.panic_str "chat_contract.claim_alias / invalid alias" . true
00:02:42 v #420 > >     else false
00:02:42 v #421 > >     |> ignore
00:02:42 v #422 > >
00:02:42 v #423 > >     inl account_alias =
00:02:42 v #424 > >         account_map
00:02:42 v #425 > >         |> near.lookup_get signer_account_id
00:02:42 v #426 > >         |> optionm'.cloned
00:02:42 v #427 > >
00:02:42 v #428 > >     match account_alias |> optionm'.unbox with
00:02:42 v #429 > >     | Some account_alias when account_alias =. alias =>
00:02:42 v #430 > >         trace Warning
00:02:42 v #431 > >             fun () => "chat_contract.claim_alias / alias already claimed"
00:02:42 v #432 > >             fun () => { account_alias = account_alias |> sm'.format_debug }
00:02:42 v #433 > >     | account_alias' =>
00:02:42 v #434 > >         trace Debug
00:02:42 v #435 > >             fun () => "chat_contract.claim_alias"
00:02:42 v #436 > >             fun () => { account_alias = account_alias |> sm'.format_debug }
00:02:42 v #437 > >
00:02:42 v #438 > >         match account_alias' with
00:02:42 v #439 > >         | Some account_alias =>
00:02:42 v #440 > >             !\($'"    !alias_map //"') : ()
00:02:42 v #441 > >             !\($'"      .get_mut(&!account_alias) //"') : ()
00:02:42 v #442 > >             !\($'"      .unwrap() //"') : ()
00:02:42 v #443 > >             !\\(signer_account_id, $'"      .remove(&$0); //"') : ()
00:02:42 v #444 > >         | None => ()
00:02:42 v #445 > >
00:02:42 v #446 > >         !\\((signer_account_id, alias), $'"  !account_map.insert($0.clone(),
00:02:42 v #447 > > $1.clone()); //"') : ()
00:02:42 v #448 > >
00:02:42 v #449 > >         account_set |> near.iterable_set_insert signer_account_id |> ignore
00:02:42 v #450 > >         alias_set |> near.iterable_set_insert alias |> ignore
00:02:42 v #451 > >
00:02:42 v #452 > >         !\\(alias, $'"  let new_alias_account_map = match !alias_map.get(&$0) {
00:02:42 v #453 > > //"') : ()
00:02:42 v #454 > >         !\($'"    None => { //"') : ()
00:02:42 v #455 > >         !\($'"      let mut new_map = std::collections::HashMap::new(); //"') :
00:02:42 v #456 > > ()
00:02:42 v #457 > >         !\\((signer_account_id, block_timestamp), $'"      new_map.insert($0,
00:02:42 v #458 > > ($1, 0u32)); //"') : ()
00:02:42 v #459 > >         !\($'"      new_map //"') : ()
00:02:42 v #460 > >         !\($'"    } //"') : ()
00:02:42 v #461 > >         !\($'"    Some(accounts) => { //"') : ()
00:02:42 v #462 > >         !\($'"      let mut accounts_vec = accounts.iter().collect::<Vec<_>>();
00:02:42 v #463 > > //"') : ()
00:02:42 v #464 > >         !\($'"      accounts_vec.sort_unstable_by_key(|(_, (_, index))| index);
00:02:42 v #465 > > //"') : ()
00:02:42 v #466 > >         !\($'"      let mut new_map = accounts_vec //"') : ()
00:02:42 v #467 > >         !\($'"        .iter() //"') : ()
00:02:42 v #468 > >         !\($'"        .enumerate() //"') : ()
00:02:42 v #469 > >         !\($'"        .map(|(i, (signer_account_id, (timestamp, _)))| { //"') :
00:02:42 v #470 > > ()
00:02:42 v #471 > >         !\($'"          ((*signer_account_id).clone(), (*timestamp, i as u32))
00:02:42 v #472 > > //"') : ()
00:02:42 v #473 > >         !\($'"        }) //"') : ()
00:02:42 v #474 > >         !\($'"        .collect::<std::collections::HashMap<_, _>>(); //"') : ()
00:02:42 v #475 > >         !\\(signer_account_id, $'"      new_map.insert($0, (!block_timestamp,
00:02:42 v #476 > > accounts_vec.len() as u32)); //"') : ()
00:02:42 v #477 > >         !\($'"      new_map //"') : ()
00:02:42 v #478 > >         !\($'"    } //"') : ()
00:02:42 v #479 > >         !\($'"  }; //"') : ()
00:02:42 v #480 > >
00:02:42 v #481 > >         !\\(alias, $'"  !alias_map.insert($0, new_alias_account_map); //"') : ()
00:02:42 v #482 > >
00:02:42 v #483 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:42 v #484 > > //// test
00:02:42 v #485 > > ///! rust -c
00:02:42 v #486 > >
00:02:42 v #487 > > inl state = new ()
00:02:42 v #488 > > inl version = state.version
00:02:42 v #489 > > inl account_set = state.account_set
00:02:42 v #490 > > inl alias_set = state.alias_set
00:02:42 v #491 > > inl account_map = state.account_map
00:02:42 v #492 > > inl alias_map = state.alias_map
00:02:42 v #493 > > inl version = join version
00:02:42 v #494 > > inl account_set = join account_set
00:02:42 v #495 > > inl alias_set = join alias_set
00:02:42 v #496 > > inl account_map = join account_map
00:02:42 v #497 > > inl alias_map = join alias_map
00:02:42 v #498 > > inl state : rust.ref (rust.mut' state) =
00:02:42 v #499 > >     !\\(
00:02:42 v #500 > >         version,
00:02:42 v #501 > >         $'$"&mut ($0, !account_set, !alias_set, !account_map, !alias_map)"'
00:02:42 v #502 > >     )
00:02:42 v #503 > >
00:02:42 v #504 > > "alias1"
00:02:42 v #505 > > |> sm'.to_std_string
00:02:42 v #506 > > |> claim_alias state
00:02:42 v #507 > >
00:02:42 v #508 > > trace Verbose
00:02:42 v #509 > >     fun () => "chat_contract"
00:02:42 v #510 > >     fun () => { state = state |> sm'.format_debug }
00:02:42 v #511 > >
00:02:42 v #512 > > trace Debug (fun () => "") id
00:03:24 v #513 > >
00:03:24 v #514 > > ╭─[ 42.00s - return value ]────────────────────────────────────────────────────╮
00:03:24 v #515 > > │ 00:00:00 d #1 chat_contract.claim_alias / { alias = "alias1";          │
00:03:24 v #516 > > │ block_timestamp = 1731418356934048891; signer_account_id =                   │
00:03:24 v #517 > > │ "dev-20241112133235-19101098198910"; predecessor_account_id =                │
00:03:24 v #518 > > │ "dev-20241112133235-19101098198910" }                                        │
00:03:24 v #519 > > │ 00:00:00 d #2 chat_contract.claim_alias / { account_alias = None }     │
00:03:24 v #520 > > │ 00:00:00 v #3 chat_contract / { state = (2, IterableSet { elements:    │
00:03:24 v #521 > > │ Vector { len: 1, prefix: [97, 99, 99, 111, 117, 110, 116, 95, 115, 101, 116, │
00:03:24 v #522 > > │ 118] }, index: LookupMap { prefix: [97, 99, 99, 111, 117, 110, 116, 95, 115, │
00:03:24 v #523 > > │ 101, 116, 109] } }, IterableSet { elements: Vector { len: 1, prefix: [97,    │
00:03:24 v #524 > > │ 108, 105, 97, 115, 95, 115, 101, 116, 118] }, index: LookupMap { prefix: [   │
00:03:24 v #525 > > │ 97, 108, 105, 97, 115, 95, 115, 101, 116, 109] } }, LookupMap { prefix: [97, │
00:03:24 v #526 > > │ 99, 99, 111, 117, 110, 116, 95, 109, 97, 112] }, LookupMap { prefix: [97,    │
00:03:24 v #527 > > │ 108, 105, 97, 115, 95, 109, 97, 112] }) }                                    │
00:03:24 v #528 > > │                                                                              │
00:03:24 v #529 > > │ 00:00:08 i #2 near_workspaces.print_usd / { retry = 1;                 │
00:03:24 v #530 > > │ total_gas_burnt_usd = +0.002552; total_gas_burnt = 3820399258597 }           │
00:03:24 v #531 > > │ 00:00:08 i #3 near_workspaces.print_usd / outcome / { is_success =     │
00:03:24 v #532 > > │ true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; gas_burnt =   │
00:03:24 v #533 > > │ 308081859340; tokens_burnt = 30808185934000000000 }                          │
00:03:24 v #534 > > │ 00:00:08 i #4 near_workspaces.print_usd / outcome / { is_success =     │
00:03:24 v #535 > > │ true; gas_burnt_usd = +0.002346; tokens_burnt_usd = +0.002346; gas_burnt =   │
00:03:24 v #536 > > │ 3512317399257; tokens_burnt = 351231739925700000000 }                        │
00:03:24 v #537 > > │ 00:00:08 w #5 spiral_wasm.run / Error error / { retry = 1;             │
00:03:24 v #538 > > │ error...ner_account_id = "dev-20241112133300-86332548564197";                │
00:03:24 v #539 > > │ predecessor_account_id = "dev-20241112133300-86332548564197" }               │
00:03:24 v #540 > > │ 00:00:00 d #2 chat_contract.claim_alias / { account_alias = None }     │
00:03:24 v #541 > > │ 00:00:00 v #3 chat_contract / { state = (2, IterableSet { elements:    │
00:03:24 v #542 > > │ Vector { len: 1, prefix: [97, 99, 99, 111, 117, 110, 116, 95, 115, 101, 116, │
00:03:24 v #543 > > │ 118] }, index: LookupMap { prefix: [97, 99, 99, 111, 117, 110, 116, 95, 115, │
00:03:24 v #544 > > │ 101, 116, 109] } }, IterableSet { elements: Vector { len: 1, prefix: [97,    │
00:03:24 v #545 > > │ 108, 105, 97, 115, 95, 115, 101, 116, 118] }, index: LookupMap { prefix: [   │
00:03:24 v #546 > > │ 97, 108, 105, 97, 115, 95, 115, 101, 116, 109] } }, LookupMap { prefix: [97, │
00:03:24 v #547 > > │ 99, 99, 111, 117, 110, 116, 95, 109, 97, 112] }, LookupMap { prefix: [97,    │
00:03:24 v #548 > > │ 108, 105, 97, 115, 95, 109, 97, 112] }) }                                    │
00:03:24 v #549 > > │                                                                              │
00:03:24 v #550 > > │ 00:00:33 i #26 near_workspaces.print_usd / { retry = 5;                │
00:03:24 v #551 > > │ total_gas_burnt_usd = +0.002701; total_gas_burnt = 4043581821097 }           │
00:03:24 v #552 > > │ 00:00:33 i #27 near_workspaces.print_usd / outcome / { is_success =    │
00:03:24 v #553 > > │ true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; gas_burnt =   │
00:03:24 v #554 > > │ 308081859340; tokens_burnt = 30808185934000000000 }                          │
00:03:24 v #555 > > │ 00:00:33 i #28 near_workspaces.print_usd / outcome / { is_success =    │
00:03:24 v #556 > > │ true; gas_burnt_usd = +0.002346; tokens_burnt_usd = +0.002346; gas_burnt =   │
00:03:24 v #557 > > │ 3512317399257; tokens_burnt = 351231739925700000000 }                        │
00:03:24 v #558 > > │ 00:00:33 i #29 near_workspaces.print_usd / outcome / { is_success =    │
00:03:24 v #559 > > │ true; gas_burnt_usd = +0.000149; tokens_burnt_usd = +0.000000; gas_burnt =   │
00:03:24 v #560 > > │ 223182562500; tokens_burnt = 0 }                                             │
00:03:24 v #561 > > │                                                                              │
00:03:24 v #562 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:24 v #563 > >
00:03:24 v #564 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:24 v #565 > > //// test
00:03:24 v #566 > > ///! rust \"-c=-e=\\\"chat_contract.claim_alias / invalid alias\\\"\"
00:03:24 v #567 > >
00:03:24 v #568 > > ""
00:03:24 v #569 > > |> sm'.to_std_string
00:03:24 v #570 > > |> claim_alias (
00:03:24 v #571 > >     inl state = new ()
00:03:24 v #572 > >     inl version = state.version
00:03:24 v #573 > >     inl account_set = state.account_set
00:03:24 v #574 > >     inl alias_set = state.alias_set
00:03:24 v #575 > >     inl account_map = state.account_map
00:03:24 v #576 > >     inl alias_map = state.alias_map
00:03:24 v #577 > >     !\\(version, $'$"&mut ($0, !account_set, !alias_set, !account_map,
00:03:24 v #578 > > !alias_map)"')
00:03:24 v #579 > > )
00:03:24 v #580 > > trace Debug (fun () => "") id
00:03:39 v #581 > >
00:03:39 v #582 > > ╭─[ 14.94s - return value ]────────────────────────────────────────────────────╮
00:03:39 v #583 > > │                                                                              │
00:03:39 v #584 > > │ 00:00:06 i #2 near_workspaces.print_usd / { retry = 1;                 │
00:03:39 v #585 > > │ total_gas_burnt_usd = +0.001313; total_gas_burnt = 1965771536372 }           │
00:03:39 v #586 > > │ 00:00:06 i #3 near_workspaces.print_usd / outcome / { is_success =     │
00:03:39 v #587 > > │ true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; gas_burnt =   │
00:03:39 v #588 > > │ 308081859340; tokens_burnt = 30808185934000000000 }                          │
00:03:39 v #589 > > │ 00:00:06 i #4 near_workspaces.print_usd / outcome / { is_success =     │
00:03:39 v #590 > > │ false; gas_burnt_usd = +0.000958; tokens_burnt_usd = +0.000958; gas_burnt =  │
00:03:39 v #591 > > │ 1434507114532; tokens_burnt = 143450711453200000000 }                        │
00:03:39 v #592 > > │ 00:00:06 i #5 near_workspaces.print_usd / outcome / { is_success =     │
00:03:39 v #593 > > │ true; gas_burnt_usd = +0.000149; tokens_burnt_usd = +0.000000; gas_burnt =   │
00:03:39 v #594 > > │ 223182562500; tokens_burnt = 0 }                                             │
00:03:39 v #595 > > │ 00:00:06 c #6 spiral_wasm.run / Ok (Some error) / { retry = 1; error = │
00:03:39 v #596 > > │ { receipt_outcomes_len = 2; retry = 1; receipt_failures = [                  │
00:03:39 v #597 > > │     ExecutionOutcome {                                                       │
00:03:39 v #598 > > │         transaction_hash: 59uRin7Rrt1ZKFGxipadkgqgNKWS8zJT28RNSbnm9sEw,      │
00:03:39 v #599 > > │         block_hash: 49Lpu6cPTY9Uq3ywn93SR3Djc9yVuBc3ZhfPUG5o85Zz,            │
00:03:39 v #600 > > │         logs: [],                                                            │
00:03:39 v #601 > > │         receipt_ids: [                                                       │
00:03:39 v #602 > > │             51iJrphiCCi2QNRDAuXF95cs2UYRcQgU4BT6WsGazPW3,                    │
00:03:39 v #603 > > │         ],                                                                   │
00:03:39 v #604 > > │         gas_burnt: NearGas {                                                 │
00:03:39 v #605 > > │             inner: 1434507114532,                                            │
00:03:39 v #606 > > │         },                                                                   │
00:03:39 v #607 > > │         tokens_burnt: NearToken {                                            │
00:03:39 v #608 > > │             inner: 143450711453200000000,                                    │
00:03:39 v #609 > > │         },                                                                   │
00:03:39 v #610 > > │         executor_id: AccountId(                                              │
00:03:39 v #611 > > │             "dev-20241112133315-91438328852119",                             │
00:03:39 v #612 > > │         ),                                                                   │
00:03:39 v #613 > > │         status: Failure(ActionError(ActionError { index: Some(0), kind:      │
00:03:39 v #614 > > │ FunctionCallError(ExecutionError("Smart contract panicked:                   │
00:03:39 v #615 > > │ chat_contract.claim_alias / invalid alias")) })),                            │
00:03:39 v #616 > > │     },                                                                       │
00:03:39 v #617 > > │ ] } }                                                                        │
00:03:39 v #618 > > │                                                                              │
00:03:39 v #619 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:39 v #620 > >
00:03:39 v #621 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:39 v #622 > > //// test
00:03:39 v #623 > > ///! rust -cd borsh
00:03:39 v #624 > >
00:03:39 v #625 > > inl state' = new ()
00:03:39 v #626 > > inl state = state'
00:03:39 v #627 > > inl version = state.version
00:03:39 v #628 > > inl account_set = state.account_set
00:03:39 v #629 > > inl alias_set = state.alias_set
00:03:39 v #630 > > inl account_map = state.account_map
00:03:39 v #631 > > inl alias_map = state.alias_map
00:03:39 v #632 > > inl version = join version
00:03:39 v #633 > > inl account_set = join account_set
00:03:39 v #634 > > inl alias_set = join alias_set
00:03:39 v #635 > > inl account_map = join account_map
00:03:39 v #636 > > inl alias_map = join alias_map
00:03:39 v #637 > >
00:03:39 v #638 > > inl state =
00:03:39 v #639 > >     !\\(
00:03:39 v #640 > >         (version, account_set, alias_set),
00:03:39 v #641 > >         $'$"&mut ($0, $1, $2, !account_map, !alias_map)"'
00:03:39 v #642 > >     )
00:03:39 v #643 > >
00:03:39 v #644 > > "alias1"
00:03:39 v #645 > > |> sm'.to_std_string
00:03:39 v #646 > > |> claim_alias state
00:03:39 v #647 > >
00:03:39 v #648 > > "alias1"
00:03:39 v #649 > > |> sm'.to_std_string
00:03:39 v #650 > > |> claim_alias state
00:03:39 v #651 > >
00:03:39 v #652 > > "alias1"
00:03:39 v #653 > > |> sm'.to_std_string
00:03:39 v #654 > > |> claim_alias state
00:03:39 v #655 > >
00:03:39 v #656 > > inl account_set' : rust.ref (near.iterable_set near.account_id) =
00:03:39 v #657 > >     !\($'$"&!state.1"')
00:03:39 v #658 > >
00:03:39 v #659 > > inl alias_set' : rust.ref (near.iterable_set sm'.std_string) =
00:03:39 v #660 > >     !\($'$"&!state.2"')
00:03:39 v #661 > >
00:03:39 v #662 > > inl account_set' =
00:03:39 v #663 > >     account_set'
00:03:39 v #664 > >     |> iter.iter_ref''
00:03:39 v #665 > >     |> iter.cloned
00:03:39 v #666 > >     |> iter_collect
00:03:39 v #667 > >
00:03:39 v #668 > > inl alias_set' =
00:03:39 v #669 > >     alias_set'
00:03:39 v #670 > >     |> iter.iter_ref''
00:03:39 v #671 > >     |> iter.cloned
00:03:39 v #672 > >     |> iter_collect
00:03:39 v #673 > >     |> am'.vec_map sm'.from_std_string
00:03:39 v #674 > >
00:03:39 v #675 > > trace Verbose
00:03:39 v #676 > >     fun () => "chat_contract"
00:03:39 v #677 > >     fun () => {
00:03:39 v #678 > >         account_set' = account_set' |> sm'.format_debug
00:03:39 v #679 > >         alias_set' = alias_set' |> sm'.format_debug
00:03:39 v #680 > >         state = state |> sm'.format_debug
00:03:39 v #681 > >     }
00:03:39 v #682 > >
00:03:39 v #683 > > trace Debug (fun () => "") id
00:03:39 v #684 > >
00:03:39 v #685 > > account_set'
00:03:39 v #686 > > |> am'.vec_len
00:03:39 v #687 > > |> convert
00:03:39 v #688 > > |> _assert_eq 1u32
00:03:39 v #689 > >
00:03:39 v #690 > > alias_set'
00:03:39 v #691 > > |> am'.from_vec_base
00:03:39 v #692 > > |> _assert_eq' ;[[ "alias1" ]]
00:03:55 v #693 > >
00:03:55 v #694 > > ╭─[ 16.04s - return value ]────────────────────────────────────────────────────╮
00:03:55 v #695 > > │ 00:00:00 d #1 chat_contract.claim_alias / { alias = "alias1";          │
00:03:55 v #696 > > │ block_timestamp = 1731418412732061501; signer_account_id =                   │
00:03:55 v #697 > > │ "dev-20241112133331-83785213431366"; predecessor_account_id =                │
00:03:55 v #698 > > │ "dev-20241112133331-83785213431366" }                                        │
00:03:55 v #699 > > │ 00:00:00 d #2 chat_contract.claim_alias / { account_alias = None }     │
00:03:55 v #700 > > │ 00:00:00 d #3 chat_contract.claim_alias / { alias = "alias1";          │
00:03:55 v #701 > > │ block_timestamp = 1731418412732061501; signer_account_id =                   │
00:03:55 v #702 > > │ "dev-20241112133331-83785213431366"; predecessor_account_id =                │
00:03:55 v #703 > > │ "dev-20241112133331-83785213431366" }                                        │
00:03:55 v #704 > > │ 00:00:00 d #4 chat_contract.claim_alias / { account_alias =            │
00:03:55 v #705 > > │ Some("alias1") }                                                             │
00:03:55 v #706 > > │ 00:00:00 d #5 chat_contract.claim_alias / { alias = "alias1";          │
00:03:55 v #707 > > │ block_timestamp = 1731418412732061501; signer_account_id =                   │
00:03:55 v #708 > > │ "dev-20241112133331-83785213431366"; predecessor_account_id =                │
00:03:55 v #709 > > │ "dev-20241112133331-83785213431366" }                                        │
00:03:55 v #710 > > │ 00:00:00 d #6 chat_contract.claim_alias / { account_alias =            │
00:03:55 v #711 > > │ Some("alias1") }                                                             │
00:03:55 v #712 > > │ 00:00:00 v #7 chat_contract / { account_set' = [                       │
00:03:55 v #713 > > │ AccountId("dev-20241112133331-83785213431366")]; alias_set' = ["alias1"];    │
00:03:55 v #714 > > │ state = (2, IterableSet { elements: Vector { len: 1, prefix: [97, 99, 99,    │
00:03:55 v #715 > > │ 111, 117, 110, 116, 95, 115, 101, 116, 118] }, index: LookupMap { prefix: [  │
00:03:55 v #716 > > │ 97, 99, 99, 111, 117, 110, 116, 95, 115, 101, 116, 109] } }, IterableSet {   │
00:03:55 v #717 > > │ elements: Vector { len: 1, prefix: [97, 108, 105, 97, 115, 95, 115, 101,     │
00:03:55 v #718 > > │ 116, 118] }, index: LookupMap { prefix: [97, 108, 105, 97, 115, 95, 115,     │
00:03:55 v #719 > > │ 101, 116, 109] } }, LookupMap { prefix: [97, 99, 99, 111, 117, 110, 116, 95, │
00:03:55 v #720 > > │ 109, 97, 112] }, LookupMap { prefix: [97, 108, 105, 97, 115, 95, 109, 97,    │
00:03:55 v #721 > > │ 112] }) }                                                                    │
00:03:55 v #722 > > │                                                                              │
00:03:55 v #723 > > │ 00:00:06 i #2 near_workspaces.print_usd / { retry = 1;                 │
00:03:55 v #724 > > │ total_gas_burnt_usd = +0.004572; total_gas_burnt = 6844553733463 }           │
00:03:55 v #725 > > │ 00:00:06 i #3 near_workspaces.print_usd / outcome / { is_success =     │
00:03:55 v #726 > > │ true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; gas_burnt =   │
00:03:55 v #727 > > │ 308081859340; tokens_burnt = 30808185934000000000 }                          │
00:03:55 v #728 > > │ 00:00:06 i #4 near_workspaces.print_usd / outcome / { is_success =     │
00:03:55 v #729 > > │ true; gas_burnt_usd = +0.004217; tokens_burnt_usd = +0.004217; gas_burnt =   │
00:03:55 v #730 > > │ 6313289311623; tokens_burnt = 631328931162300000000 }                        │
00:03:55 v #731 > > │ 00:00:06 i #5 near_workspaces.print_usd / outcome / { is_success =     │
00:03:55 v #732 > > │ true; gas_burnt_usd = +0.000149; tokens_burnt_usd = +0.000000; gas_burnt =   │
00:03:55 v #733 > > │ 223182562500; tokens_burnt = 0 }                                             │
00:03:55 v #734 > > │                                                                              │
00:03:55 v #735 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:55 v #736 > >
00:03:55 v #737 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:55 v #738 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:55 v #739 > > │ ### get_account_info                                                         │
00:03:55 v #740 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:55 v #741 > >
00:03:55 v #742 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:55 v #743 > > inl get_account_info
00:03:55 v #744 > >     (state : rust.ref state)
00:03:55 v #745 > >     (account_id : near.account_id)
00:03:55 v #746 > >     : optionm'.option' (sm'.std_string * (u64 * u32))
00:03:55 v #747 > >     =
00:03:55 v #748 > >     inl account_map : rust.ref (near.lookup_map near.account_id sm'.std_string)
00:03:55 v #749 > > =
00:03:55 v #750 > >         !\($'$"&!state.3"')
00:03:55 v #751 > >
00:03:55 v #752 > >     inl alias_map : rust.ref (near.lookup_map sm'.std_string (mapm.hash_map
00:03:55 v #753 > > near.account_id (u64 * u32))) =
00:03:55 v #754 > >         !\($'$"&!state.4"')
00:03:55 v #755 > >
00:03:55 v #756 > >     !\\(account_id, $'"let result = !account_map.get(&$0).and_then(|alias| {
00:03:55 v #757 > > //"') : ()
00:03:55 v #758 > >     !\($'"    !alias_map //"') : ()
00:03:55 v #759 > >     !\($'"      .get(alias) //"') : ()
00:03:55 v #760 > >     !\($'"      .map(|accounts| { //"') : ()
00:03:55 v #761 > >     !\($'"          let result = (alias.clone(),
00:03:55 v #762 > > *accounts.get(&!account_id).unwrap()); //"') : ()
00:03:55 v #763 > >     !\($'"          (result.0, result.1.0, result.1.1) //"') : ()
00:03:55 v #764 > >     !\($'"      }) //"') : ()
00:03:55 v #765 > >     !\($'"}); //"') : ()
00:03:55 v #766 > >
00:03:55 v #767 > >     inl result = !\($'"result"')
00:03:55 v #768 > >
00:03:55 v #769 > >     trace Debug
00:03:55 v #770 > >         fun () => "chat_contract.get_account_info"
00:03:55 v #771 > >         fun () => { account_id result }
00:03:55 v #772 > >
00:03:55 v #773 > >     trace Debug (fun () => "") id
00:03:55 v #774 > >
00:03:55 v #775 > >     result
00:03:56 v #776 > >
00:03:56 v #777 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:56 v #778 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:56 v #779 > > │ ### main                                                                     │
00:03:56 v #780 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:56 v #781 > >
00:03:56 v #782 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:56 v #783 > > ///! _
00:03:56 v #784 > >
00:03:56 v #785 > > inl main () =
00:03:56 v #786 > >     !\($'"} //"') : ()
00:03:56 v #787 > >
00:03:56 v #788 > >     !\($'"#[[near_sdk::near_bindgen]] //"') : ()
00:03:56 v #789 > >
00:03:56 v #790 > >     !\($'"#[[derive( //"') : ()
00:03:56 v #791 > >     !\($'"  near_sdk::PanicOnDefault, //"') : ()
00:03:56 v #792 > >     !\($'"  borsh::BorshDeserialize, //"') : ()
00:03:56 v #793 > >     !\($'"  borsh::BorshSerialize, //"') : ()
00:03:56 v #794 > >     !\($'")]] //"') : ()
00:03:56 v #795 > >
00:03:56 v #796 > >     !\($'"pub struct State ( //"') : ()
00:03:56 v #797 > >
00:03:56 v #798 > >     !\($'"/*"') : ()
00:03:56 v #799 > >     (null () : rust.type_emit state) |> ignore
00:03:56 v #800 > >     !\($'"*/ )"') : ()
00:03:56 v #801 > >
00:03:56 v #802 > >     inl new_ () =
00:03:56 v #803 > >         !\($'"#[[init]] //"') : ()
00:03:56 v #804 > >         !\($'"pub fn new() -> Self { // 1"') : ()
00:03:56 v #805 > >
00:03:56 v #806 > >         (!\($'"true; /*"') : bool) |> ignore
00:03:56 v #807 > >
00:03:56 v #808 > >         (null () : rust.type_emit ()) |> ignore
00:03:56 v #809 > >
00:03:56 v #810 > >         (!\($'"true; */"') : bool) |> ignore
00:03:56 v #811 > >
00:03:56 v #812 > >         inl result = new ()
00:03:56 v #813 > >
00:03:56 v #814 > >         $'let _result = !result in _result |> (fun x ->
00:03:56 v #815 > > Fable.Core.RustInterop.emitRustExpr x $"Self($0) // x") // 2' : ()
00:03:56 v #816 > >
00:03:56 v #817 > >         !\($'"} // 2."') : ()
00:03:56 v #818 > >
00:03:56 v #819 > >         !\($'"} // 1."') : ()
00:03:56 v #820 > >
00:03:56 v #821 > >         2
00:03:56 v #822 > >
00:03:56 v #823 > >     inl is_valid_alias () =
00:03:56 v #824 > >         !\($'"fn is_valid_alias(alias: String) -> bool { //"') : ()
00:03:56 v #825 > >         inl alias = !\($'$"alias"')
00:03:56 v #826 > >         inl result = alias |> is_valid_alias
00:03:56 v #827 > >         $'let _result = !result in _result |> (fun x ->
00:03:56 v #828 > > Fable.Core.RustInterop.emitRustExpr x "$0 }") // 2' : ()
00:03:56 v #829 > >         !\($'"} //"') : ()
00:03:56 v #830 > >         1
00:03:56 v #831 > >
00:03:56 v #832 > >     inl generate_cid () =
00:03:56 v #833 > >         !\($'"pub fn generate_cid( //"') : ()
00:03:56 v #834 > >         !\($'"  &self, //"') : ()
00:03:56 v #835 > >         !\($'"  content: Vec<u8>, //"') : ()
00:03:56 v #836 > >         !\($'") -> String { //"') : ()
00:03:56 v #837 > >         inl content = !\($'$"content"')
00:03:56 v #838 > >         inl result = generate_cid content
00:03:56 v #839 > >         $'let _result = !result in _result |> (fun x ->
00:03:56 v #840 > > Fable.Core.RustInterop.emitRustExpr x "$0 }") // 2' : ()
00:03:56 v #841 > >         !\($'"} //"') : ()
00:03:56 v #842 > >         2
00:03:56 v #843 > >
00:03:56 v #844 > >     inl generate_cid_borsh () =
00:03:56 v #845 > >         !\($'"#[[result_serializer(borsh)]] //"') : ()
00:03:56 v #846 > >         !\($'"pub fn generate_cid_borsh( //"') : ()
00:03:56 v #847 > >         !\($'"  &self, //"') : ()
00:03:56 v #848 > >         !\($'"  #[[serializer(borsh)]] content: Vec<u8>, //"') : ()
00:03:56 v #849 > >         !\($'") -> String { //"') : ()
00:03:56 v #850 > >         !\($'"  self.generate_cid(content) //"') : ()
00:03:56 v #851 > >         !\($'"} //"') : ()
00:03:56 v #852 > >         1
00:03:56 v #853 > >
00:03:56 v #854 > >     inl claim_alias () =
00:03:56 v #855 > >         !\($'"pub fn claim_alias( //"') : ()
00:03:56 v #856 > >         !\($'"  &mut self, //"') : ()
00:03:56 v #857 > >         !\($'"  alias: String, //"') : ()
00:03:56 v #858 > >         !\($'") { //"') : ()
00:03:56 v #859 > >
00:03:56 v #860 > >         inl state = !\($'$"&mut self.0"')
00:03:56 v #861 > >         inl alias = !\($'$"alias"')
00:03:56 v #862 > >
00:03:56 v #863 > >         inl result = claim_alias state alias
00:03:56 v #864 > >         trace Debug (fun () => "") (join id)
00:03:56 v #865 > >
00:03:56 v #866 > >         !\($'"} //"') : ()
00:03:56 v #867 > >
00:03:56 v #868 > >         !\($'"} //"') : ()
00:03:56 v #869 > >
00:03:56 v #870 > >         !\($'"} //"') : ()
00:03:56 v #871 > >
00:03:56 v #872 > >         3
00:03:56 v #873 > >
00:03:56 v #874 > >     inl get_account_info () =
00:03:56 v #875 > >         !\($'"pub fn get_account_info( //"') : ()
00:03:56 v #876 > >         !\($'"  &self, //"') : ()
00:03:56 v #877 > >         !\($'"  account_id: near_sdk::AccountId, //"') : ()
00:03:56 v #878 > >         !\($'") -> Option<(String, u64, u32)> { //"') : ()
00:03:56 v #879 > >
00:03:56 v #880 > >         inl state = !\($'$"&self.0"')
00:03:56 v #881 > >         inl account_id : near.account_id = !\($'$"account_id"')
00:03:56 v #882 > >
00:03:56 v #883 > >         inl result = account_id |> get_account_info state
00:03:56 v #884 > >         $'let _result = !result in _result |> (fun x ->
00:03:56 v #885 > > Fable.Core.RustInterop.emitRustExpr x "$0 } // 4") // 3' : ()
00:03:56 v #886 > >
00:03:56 v #887 > >         !\($'"} // 2"') : ()
00:03:56 v #888 > >
00:03:56 v #889 > >         !\($'"} // 1"') : ()
00:03:56 v #890 > >
00:03:56 v #891 > >         2
00:03:56 v #892 > >
00:03:56 v #893 > >     inl get_alias_map () =
00:03:56 v #894 > >         !\($'"pub fn get_alias_map( //"') : ()
00:03:56 v #895 > >         !\($'"  &self, //"') : ()
00:03:56 v #896 > >         !\($'"  alias: String, //"') : ()
00:03:56 v #897 > >         !\($'") -> Option<std::collections::HashMap<near_sdk::AccountId, (u64,
00:03:56 v #898 > > u32)>> { //"') : ()
00:03:56 v #899 > >
00:03:56 v #900 > >         inl alias_map : rust.ref (near.lookup_map sm'.std_string (mapm.hash_map
00:03:56 v #901 > > near.account_id (u64 * u32))) =
00:03:56 v #902 > >             !\($'$"&self.0.4"')
00:03:56 v #903 > >
00:03:56 v #904 > >         inl alias : sm'.std_string = !\($'$"alias"')
00:03:56 v #905 > >
00:03:56 v #906 > >         trace Debug
00:03:56 v #907 > >             fun () => "chat_contract.get_alias_map"
00:03:56 v #908 > >             fun () => { alias }
00:03:56 v #909 > >
00:03:56 v #910 > >         trace Debug (fun () => "") (join id)
00:03:56 v #911 > >
00:03:56 v #912 > >         !\\(alias, $'"  !alias_map.get(&$0).cloned() //"') : ()
00:03:56 v #913 > >         !\($'"} //"') : ()
00:03:56 v #914 > >
00:03:56 v #915 > >         !\($'"} //"') : ()
00:03:56 v #916 > >
00:03:56 v #917 > >         2
00:03:56 v #918 > >
00:03:56 v #919 > >     inl get_alias_map_borsh () =
00:03:56 v #920 > >         !\($'"#[[result_serializer(borsh)]] //"') : ()
00:03:56 v #921 > >         !\($'"pub fn get_alias_map_borsh( //"') : ()
00:03:56 v #922 > >         !\($'"  &self, //"') : ()
00:03:56 v #923 > >         !\($'"  #[[serializer(borsh)]] alias: String, //"') : ()
00:03:56 v #924 > >         !\($'") -> Option<std::collections::HashMap<near_sdk::AccountId, (u64,
00:03:56 v #925 > > u32)>> { //"') : ()
00:03:56 v #926 > >         !\($'"  self.get_alias_map(alias) //"') : ()
00:03:56 v #927 > >         !\($'"} //"') : ()
00:03:56 v #928 > >         1
00:03:56 v #929 > >
00:03:56 v #930 > >     inl fns =
00:03:56 v #931 > >         [[
00:03:56 v #932 > >             new_
00:03:56 v #933 > >             is_valid_alias
00:03:56 v #934 > >             generate_cid
00:03:56 v #935 > >             generate_cid_borsh
00:03:56 v #936 > >             claim_alias
00:03:56 v #937 > >             get_account_info
00:03:56 v #938 > >             get_alias_map
00:03:56 v #939 > >             get_alias_map_borsh
00:03:56 v #940 > >         ]]
00:03:56 v #941 > >
00:03:56 v #942 > >     inl rec loop acc fns i =
00:03:56 v #943 > >         match fns with
00:03:56 v #944 > >         | [[]] => acc
00:03:56 v #945 > >         | x :: xs =>
00:03:56 v #946 > >             !\($'"#[[near_sdk::near_bindgen]] //"') : ()
00:03:56 v #947 > >             !\($'"impl State { //"') : ()
00:03:56 v #948 > >             inl n = x ()
00:03:56 v #949 > >             !\($'"} /* c"') : ()
00:03:56 v #950 > >             inl rec loop' i' =
00:03:56 v #951 > >                 if i' <> 1 // <= n
00:03:56 v #952 > >                 then (!\($'"true; */ // ???? / i: !i / i\': !i' / acc: !acc / n:
00:03:56 v #953 > > !n"') : bool) |> ignore
00:03:56 v #954 > >                 else
00:03:56 v #955 > >                     (!\($'"true; // ??? / i: !i / i\': !i' / acc: !acc / n:
00:03:56 v #956 > > !n"') : bool) |> ignore
00:03:56 v #957 > >                     loop' (i' + 1)
00:03:56 v #958 > >             loop' 1u8
00:03:56 v #959 > >             loop (acc + n) xs (i + 1)
00:03:56 v #960 > >     inl n = loop 0u8 fns 1u8
00:03:56 v #961 > >
00:03:56 v #962 > >
00:03:56 v #963 > >     // !\($'"/* a"') : ()
00:03:56 v #964 > >
00:03:56 v #965 > >     // !\($'"} // b"') : ()
00:03:56 v #966 > >
00:03:56 v #967 > >     !\($'"fn _main() //"') : ()
00:03:56 v #968 > >     !\($'"{ { //"') : ()
00:03:56 v #969 > >
00:03:56 v #970 > >     inl rec loop' i' =
00:03:56 v #971 > >         if i' <= n
00:03:56 v #972 > >         then
00:03:56 v #973 > >             (!\($'"true; { (); // ?? / i\': !i' / n: !n"') : bool) |> ignore
00:03:56 v #974 > >             loop' (i' + 1)
00:03:56 v #975 > >         else
00:03:56 v #976 > >             (!\($'"true; { { (); // ? / i\': !i' / n: !n"') : bool) |> ignore
00:03:56 v #977 > >             // (!\($'"true; */ // ?? / i\': !i' / n: !n"') : bool) |> ignore
00:03:56 v #978 > >     loop' 1u8
00:03:56 v #979 > >
00:03:56 v #980 > > inl main () =
00:03:56 v #981 > >     $'!main |> ignore' : ()
00:03:56 v #982 > 00:03:55 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 47928 }
00:03:56 v #983 > 00:03:55 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/polyglot/apps/chat/contract/chat_contract.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/polyglot/apps/chat/contract/chat_contract.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:03:58 v #984 > 00:03:56 v #5 ! [NbConvertApp] Converting notebook c:/home/git/polyglot/apps/chat/contract/chat_contract.dib.ipynb to html
00:03:58 v #985 > 00:03:56 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:03:58 v #986 > 00:03:56 v #7 !   validate(nb)
00:03:58 v #987 > 00:03:57 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:03:58 v #988 > 00:03:57 v #9 !   return _pygments_highlight(
00:03:59 v #989 > 00:03:57 v #10 ! [NbConvertApp] Writing 386291 bytes to c:\home\git\polyglot\apps\chat\contract\chat_contract.dib.html
00:03:59 v #990 > 00:03:57 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 884 }
00:03:59 v #991 > 00:03:57 d #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 884 }
00:03:59 v #992 > 00:03:57 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/polyglot/apps/chat/contract/chat_contract.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/polyglot/apps/chat/contract/chat_contract.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:04:00 v #993 > 00:03:58 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:04:00 v #994 > 00:03:58 d #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:04:00 v #995 > 00:03:58 d #16 spiral_builder.run / dib / { exit_code = 0; result_length = 48871 }
00:04:00 d #996 runtime.execute_with_options_async / { exit_code = 0; output_length = 53509 }
00:04:00 d #3 main / executeCommand / exitCode: 0 / command: ../../../workspace/target/release/spiral_builder.exe dib --path chat_contract.dib --retries 1
00:04:00 v #5 async.run_with_timeout_async / { timeout = 100 }
00:00:00 d #1 writeDibCode / output: Spi / path: chat_contract.dib
00:00:00 d #2 parseDibCode / output: Spi / file: chat_contract.dib
00:00:00 v #1 async.run_with_timeout_async / { timeout = 180 }
00:00:00 d #1 runtime.execute_with_options_async / { file_name = dotnet; arguments = US5_0
  ""C:\home\git\polyglot\deps\The-Spiral-Language\The Spiral Language 2\artifacts\bin\The Spiral Language 2\release\Spiral.dll" --port 13805 --default-int i32 --default-float f64"; options = { command = dotnet "C:\home\git\polyglot\deps\The-Spiral-Language\The Spiral Language 2\artifacts\bin\The Spiral Language 2\release\Spiral.dll" --port 13805 --default-int i32 --default-float f64; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = Some <fun:main@595-7>; stdin = None; trace = true; working_directory = Some "C:\home\git\polyglot" } }
00:00:00 v #2 > 00:00:00 d #1 pwd: C:\home\git\polyglot
00:00:00 v #3 > 00:00:00 d #2 dllPath: C:\home\git\polyglot\deps\The-Spiral-Language\The Spiral Language 2\artifacts\bin\The Spiral Language 2\release
00:00:00 v #4 > 00:00:00 d #3 targetDir: C:\home\git\polyglot\target/spiral_Eval
00:00:01 v #2 async.run_with_timeout_async / { timeout = 100 }
00:00:01 v #3 async.run_with_timeout_async / { timeout = 100 }
00:00:01 v #5 > Starting the Spiral Server. It is bound to: http://localhost:13805
00:00:01 v #4 async.run_with_timeout_async / { timeout = 100 }
00:00:01 v #1 Supervisor.sendJson / port: 13805 / json: {"Ping":true} / result:
00:00:01 v #2 Supervisor.awaitCompiler / Ping / result: 'Some null' / port: 13805 / retry: 1
00:00:01 v #6 > Server bound to: http://localhost:13805
00:00:01 v #5 async.run_with_timeout_async / { timeout = 180 }
00:00:02 d #3 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: chat_contract.spi
00:00:02 d #4 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: chat_contract.spi
00:00:02 d #5 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: chat_contract.spi
00:00:02 v #6 Supervisor.sendJson / port: 13805 / json: {"FileOpen":{"spiText":"/// # chat_contract\nopen rust\nopen rust.rust_operators\n\n/// ## chat_cont...03E ignore\u0027 : ()\n","uri":"file:///c:/home/git/polyglot/apps/chat/contract/chat_contract.spi"}} / result:
00:00:02 v #7 Supervisor.sendJson / port: 13805 / json: {"BuildFile":{"backend":"Fsharp","uri":"file:///c:/home/git/polyglot/apps/chat/contract/chat_contract.spi"}} / result:
00:00:02 d #8 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: chat_contract.spi
00:00:02 d #9 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: chat_contract.spi
00:00:03 d #10 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: chat_contract.spi
00:00:03 d #11 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: chat_contract.spi
00:00:03 d #12 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: chat_contract.spi
00:00:03 d #13 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: chat_contract.spi
00:00:04 d #14 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: chat_contract.spi
00:00:04 d #15 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: chat_contract.spi
00:00:04 d #16 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: chat_contract.spi
00:00:04 d #17 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: chat_contract.spi
00:00:05 d #18 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: chat_contract.spi
00:00:05 d #19 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: chat_contract.spi
00:00:05 d #20 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: chat_contract.spi
00:00:05 d #21 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: chat_contract.spi
00:00:06 d #22 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: chat_contract.spi
00:00:06 d #23 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: chat_contract.spi
00:00:06 d #24 Supervisor.buildFile / AsyncSeq.scan / outputContent:
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("*/ $0 /*")>]
#endif
type TypeEmit<'T> = class end
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable... / i': 15uy / n: 14uy"
    let v809 : bool = Fable.Core.RustInterop.emitRustExpr () v808 
    ()
let v0 : (unit -> unit) = closure0()
v0 |> ignore
()
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: chat_contract.spi
00:00:06 d #25 Supervisor.buildFile / takeWhileInclusive / outputContent:
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("*/ $0 /*")>]
#endif
type TypeEmit<'T> = class end
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable... / i': 15uy / n: 14uy"
    let v809 : bool = Fable.Core.RustInterop.emitRustExpr () v808 
    ()
let v0 : (unit -> unit) = closure0()
v0 |> ignore
()
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: chat_contract.spi
00:00:06 d #26 FileSystem.watchWithFilter / Disposing watch stream / filter: FileName, LastWrite
00:00:06 v #6 async.run_with_timeout_async / { timeout = 100 }
00:00:00 d #1 persistCodeProject / packages: [Fable.Core] / modules: [lib/spiral/common.fsx; lib/spiral/sm.fsx; lib/spiral/crypto.fsx; ... ] / name: chat_contract / hash:  / code.Length: 134639
00:00:00 d #2 buildProject / fullPath: C:\home\git\polyglot\target\Builder\chat_contract\chat_contract.fsproj
00:00:00 d #1 runtime.execute_with_options_async / { file_name = dotnet; arguments = US5_0
  "publish "C:\home\git\polyglot\target/Builder\chat_contract\chat_contract.fsproj" --configuration Release --output "C:\home\git\polyglot\apps\chat\contract\dist" --runtime linux-x64"; options = { command = dotnet publish "C:\home\git\polyglot\target/Builder\chat_contract\chat_contract.fsproj" --configuration Release --output "C:\home\git\polyglot\apps\chat\contract\dist" --runtime linux-x64; cancellation_token = None; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = Some "C:\home\git\polyglot\target\Builder\chat_contract" } }
00:00:00 v #2 > MSBuild version 17.10.0-preview-24101-01+07fd5d51f for .NET
00:00:01 v #3 >   Determining projects to restore...
00:00:02 v #4 >   Restored C:\home\git\polyglot\target\Builder\chat_contract\chat_contract.fsproj (in 971 ms).
00:00:02 v #5 > C:\Users\i574n\scoop\apps\dotnet-sdk-preview\current\sdk\9.0.100-preview.1.24101.2\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.RuntimeIdentifierInference.targets(313,5): message NETSDK1057: You are using a preview version of .NET. See: https://aka.ms/dotnet-support-policy [C:\home\git\polyglot\target\Builder\chat_contract\chat_contract.fsproj]
00:00:08 v #6 > C:\home\git\polyglot\target\Builder\chat_contract\chat_contract.fs(3165,15): warning FS0025: Incomplete pattern matches on this expression. For example, the value 'US6_0 (_)' may indicate a case not covered by the pattern(s). [C:\home\git\polyglot\target\Builder\chat_contract\chat_contract.fsproj]
00:00:11 v #7 >   chat_contract -> C:\home\git\polyglot\target\Builder\chat_contract\bin\Release\net9.0\linux-x64\chat_contract.dll
00:00:12 v #8 >   chat_contract -> C:\home\git\polyglot\apps\chat\contract\dist\
00:00:12 d #9 runtime.execute_with_options_async / { exit_code = 0; output_length = 1018 }
00:00:12 d #10 runtime.execute_with_options_async / { file_name = dotnet; arguments = US5_0
  "publish "C:\home\git\polyglot\target/Builder\chat_contract\chat_contract.fsproj" --configuration Release --output "C:\home\git\polyglot\apps\chat\contract\dist" --runtime win-x64"; options = { command = dotnet publish "C:\home\git\polyglot\target/Builder\chat_contract\chat_contract.fsproj" --configuration Release --output "C:\home\git\polyglot\apps\chat\contract\dist" --runtime win-x64; cancellation_token = None; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = Some "C:\home\git\polyglot\target\Builder\chat_contract" } }
00:00:12 v #11 > MSBuild version 17.10.0-preview-24101-01+07fd5d51f for .NET
00:00:13 v #12 >   Determining projects to restore...
00:00:14 v #13 >   Restored C:\home\git\polyglot\target\Builder\chat_contract\chat_contract.fsproj (in 321 ms).
00:00:14 v #14 > C:\Users\i574n\scoop\apps\dotnet-sdk-preview\current\sdk\9.0.100-preview.1.24101.2\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.RuntimeIdentifierInference.targets(313,5): message NETSDK1057: You are using a preview version of .NET. See: https://aka.ms/dotnet-support-policy [C:\home\git\polyglot\target\Builder\chat_contract\chat_contract.fsproj]
00:00:20 v #15 > C:\home\git\polyglot\target\Builder\chat_contract\chat_contract.fs(3165,15): warning FS0025: Incomplete pattern matches on this expression. For example, the value 'US6_0 (_)' may indicate a case not covered by the pattern(s). [C:\home\git\polyglot\target\Builder\chat_contract\chat_contract.fsproj]
00:00:24 v #16 >   chat_contract -> C:\home\git\polyglot\target\Builder\chat_contract\bin\Release\net9.0\win-x64\chat_contract.dll
00:00:25 v #17 >   chat_contract -> C:\home\git\polyglot\apps\chat\contract\dist\
00:00:25 d #18 runtime.execute_with_options_async / { exit_code = 0; output_length = 1016 }
targetDir: C:\home\git\polyglot\target\Builder\chat_contract
Fable 4.21.0: F# to Rust compiler (status: alpha)

Thanks to the contributor! @Booksbaum
Stand with Ukraine! https://standwithukraine.com.ua/

Parsing target\Builder\chat_contract\chat_contract.fsproj...
Retrieving project options from cache, in case of issues run `dotnet fable clean` or try `--noCache` option.
Project and references (14 source files) parsed in 174ms

Started Fable compilation...

Fable compilation finished in 7598ms

.\target\Builder\chat_contract\chat_contract.fs(3165,15): (3165,19) warning FSHARP: Incomplete pattern matches on this expression. For example, the value 'US6_0 (_)' may indicate a case not covered by the pattern(s). (code 25)
.\lib\spiral\common.fsx(2015,0): (2015,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
.\lib\spiral\sm.fsx(517,0): (517,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
.\lib\spiral\crypto.fsx(2239,0): (2239,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
.\lib\spiral\date_time.fsx(1613,0): (1613,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
.\lib\spiral\async_.fsx(146,0): (146,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
.\lib\spiral\threading.fsx(140,0): (140,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
.\lib\spiral\networking.fsx(20552,0): (20552,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
.\lib\spiral\platform.fsx(116,0): (116,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
.\lib\spiral\runtime.fsx(9265,0): (9265,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
.\lib\spiral\file_system.fsx(35073,0): (35073,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
.\lib\spiral\trace.fsx(2052,0): (2052,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
.\target\Builder\chat_contract\chat_contract.fs(3383,6): (3383,12) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
   Compiling proc-macro2 v1.0.88
   Compiling unicode-ident v1.0.13
   Compiling once_cell v1.20.2
   Compiling typenum v1.17.0
   Compiling heck v0.5.0
   Compiling quote v1.0.37
   Compiling syn v2.0.79
   Compiling syn v1.0.109
   Compiling proc-macro-error-attr v1.0.4
   Compiling hybrid-array v0.2.0-rc.11
   Compiling proc-macro-error v1.0.4
   Compiling block-buffer v0.11.0-rc.2
   Compiling crypto-common v0.2.0-rc.1
   Compiling data-encoding-macro-internal v0.1.13
   Compiling data-encoding-macro v0.1.15
   Compiling multibase v0.9.1
   Compiling digest v0.11.0-pre.9
   Compiling sha2 v0.11.0-pre.4
   Compiling wasm-bindgen-backend v0.2.95
   Compiling darling_core v0.20.10
   Compiling serde_derive v1.0.210
   Compiling syn_derive v0.1.8
   Compiling strum_macros v0.26.4
   Compiling wasm-bindgen-macro-support v0.2.95
   Compiling borsh-derive v1.5.1
   Compiling wasm-bindgen-macro v0.2.95
   Compiling darling_macro v0.20.10
   Compiling borsh v1.5.1
   Compiling wasm-bindgen v0.2.95
   Compiling darling v0.20.10
   Compiling serde v1.0.210
   Compiling js-sys v0.3.72
   Compiling serde_json v1.0.129
   Compiling near-token v0.3.0
   Compiling near-gas v0.3.0
   Compiling near-account-id v1.0.0
   Compiling near-sdk-macros v5.5.0
   Compiling getrandom v0.2.15
   Compiling fable_library_rust v0.1.0 (C:\home\git\polyglot\lib\rust\fable\fable_modules\fable-library-rust)
   Compiling near-sdk v5.5.0
   Compiling chat_contract v0.0.1 (C:\home\git\polyglot\apps\chat\contract)
    Finished `release` profile [optimized] target(s) in 36.78s
    Finished `release` profile [optimized] target(s) in 13.77s
     Running `/mnt/c/home/git/polyglot/workspace/target/release/chat_contract_tests`


new: ExecutionFinalResult {
    total_gas_burnt: NearGas {
        inner: 1864931778995,
    },
    transaction: ExecutionOutcome {
        transaction_hash: 2TuTGXvhfyp2mU6brJiFXqeynwPhEucLRJqZp8k8AHdC,
        block_hash: 15wKLswzLqidMbnBsEwmKMUWjqBdvMwhC8pogba4uJU,
        logs: [],
        receipt_ids: [
            CVMLNyP3TzUvdbUxkQVVgHCu77zpGPHn6RnLeibJYa8f,
        ],
        gas_burnt: NearGas {
            inner: 308066207802,
        },
        tokens_burnt: NearToken {
            inner: 30806620780200000000,
        },
        executor_id: AccountId(
            "dev-20241112133522-25870108874847",
        ),
        status: SuccessReceiptId(CVMLNyP3TzUvdbUxkQVVgHCu77zpGPHn6RnLeibJYa8f),
    },
    receipts: [
        ExecutionOutcome {
            transaction_hash: CVMLNyP3TzUvdbUxkQVVgHCu77zpGPHn6RnLeibJYa8f,
            block_hash: 15wKLswzLqidMbnBsEwmKMUWjqBdvMwhC8pogba4uJU,
            logs: [],
            receipt_ids: [
                2mueHpgzmxZoNj8ZYQDihkVU2tNSTDbLQCqsdyYqbPjU,
            ],
            gas_burnt: NearGas {
                inner: 1333683008693,
            },
            tokens_burnt: NearToken {
                inner: 133368300869300000000,
            },
            executor_id: AccountId(
                "dev-20241112133522-25870108874847",
            ),
            status: SuccessValue(''),
        },
        ExecutionOutcome {
            transaction_hash: 2mueHpgzmxZoNj8ZYQDihkVU2tNSTDbLQCqsdyYqbPjU,
            block_hash: 9RGJxtR4FF4baR9iPWyREzt2mLGGH4t6D3ncP7f5r7Gy,
            logs: [],
            receipt_ids: [],
            gas_burnt: NearGas {
                inner: 223182562500,
            },
            tokens_burnt: NearToken {
                inner: 0,
            },
            executor_id: AccountId(
                "dev-20241112133522-25870108874847",
            ),
            status: SuccessValue(''),
        },
    ],
    status: SuccessValue(''),
}
total_gas_burnt_usd: 0.00124577442836866
outcome (success: true):
  outcome_gas_burnt_usd: 0.000205788226811736
  outcome_tokens_burnt_usd: 0.0
outcome (success: true):
  outcome_gas_burnt_usd: 0.0008909002498069239
  outcome_tokens_burnt_usd: 0.0
outcome (success: true):
  outcome_gas_burnt_usd: 0.00014908595175
  outcome_tokens_burnt_usd: 0.0


claim_alias(contract, ''): ExecutionFinalResult {
    total_gas_burnt: NearGas {
        inner: 1944784841580,
    },
    transaction: ExecutionOutcome {
        transaction_hash: C2p8P75VsPanC4oRD7e6tHWmybQRox5iMmGfgu3ZkQRH,
        block_hash: 9DarwTHPV8uRkCs8zDCApNocdhYooQ6G2DT1tzPUHjth,
        logs: [],
        receipt_ids: [
            HB1Qec5RPmrDzwCAC7jtASMVtNZqPAVPCSPdd84ifFcw,
        ],
        gas_burnt: NearGas {
            inner: 308110926482,
        },
        tokens_burnt: NearToken {
            inner: 30811092648200000000,
        },
        executor_id: AccountId(
            "dev-20241112133522-25870108874847",
        ),
        status: SuccessReceiptId(HB1Qec5RPmrDzwCAC7jtASMVtNZqPAVPCSPdd84ifFcw),
    },
    receipts: [
        ExecutionOutcome {
            transaction_hash: HB1Qec5RPmrDzwCAC7jtASMVtNZqPAVPCSPdd84ifFcw,
            block_hash: 9DarwTHPV8uRkCs8zDCApNocdhYooQ6G2DT1tzPUHjth,
            logs: [],
            receipt_ids: [
                63oWjzZEPMtfYydm4kyXwFrDzasgiqKbpdWpxj7T8TUc,
            ],
            gas_burnt: NearGas {
                inner: 1636673915098,
            },
            tokens_burnt: NearToken {
                inner: 163667391509800000000,
            },
            executor_id: AccountId(
                "dev-20241112133522-25870108874847",
            ),
            status: Failure(ActionError(ActionError { index: Some(0), kind: FunctionCallError(ExecutionError("Smart contract panicked: chat_contract.claim_alias / invalid alias")) })),
        },
    ],
    status: Failure(ActionError(ActionError { index: Some(0), kind: FunctionCallError(ExecutionError("Smart contract panicked: chat_contract.claim_alias / invalid alias")) })),
}
total_gas_burnt_usd: 0.00129911627417544
outcome (success: true):
  outcome_gas_burnt_usd: 0.000205818098889976
  outcome_tokens_burnt_usd: 0.0
outcome (success: false):
  outcome_gas_burnt_usd: 0.0010932981752854638
  outcome_tokens_burnt_usd: 0.0


dev_create_account(account1): Account {
    id: AccountId(
        "dev-20241112133524-55575661331191",
    ),
}


generate_cid_borsh(account1): ViewResultDetails { result: [59, 0, 0, 0, 98, 97, 102, 107, 114, 101, 105, 104, 100, 119, 100, 99, 101, 102, 103, 104, 52, 100, 113, 107, 106, 118, 54, 55, 117, 122, 99, 109, 119, 55, 111, 106, 101, 101, 54, 120, 101, 100, 122, 100, 101, 116, 111, 106, 117, 122, 106, 101, 118, 116, 101, 110, 120, 113, 117, 118, 121, 107, 117], logs: [] }


claim_alias(account1, alias1): ExecutionFinalResult {
    total_gas_burnt: NearGas {
        inner: 3326359867968,
    },
    transaction: ExecutionOutcome {
        transaction_hash: 82tKNtFtJJeTBRjMvwtxjEV24siDTuPCQHz71VTDLXLD,
        block_hash: HWsjrUWjRoyNUTNchPSTUcrc8uNjnLfaUdsUuTs9VNe2,
        logs: [],
        receipt_ids: [
            4TkWC2kmqrc2RLG6YSHmPgaqdZ69w5VJCpXbp8u1Ecpn,
        ],
        gas_burnt: NearGas {
            inner: 308124342086,
        },
        tokens_burnt: NearToken {
            inner: 30812434208600000000,
        },
        executor_id: AccountId(
            "dev-20241112133524-55575661331191",
        ),
        status: SuccessReceiptId(4TkWC2kmqrc2RLG6YSHmPgaqdZ69w5VJCpXbp8u1Ecpn),
    },
    receipts: [
        ExecutionOutcome {
            transaction_hash: 4TkWC2kmqrc2RLG6YSHmPgaqdZ69w5VJCpXbp8u1Ecpn,
            block_hash: ESaTDZbeNrhdcnHWQggrTi86dFR9frcxaMXqYXDo77Yn,
            logs: [
                "13:35:25 \u{1b}[94md\u{1b}[39m #1 chat_contract.claim_alias / { alias = \"alias1\"; block_timestamp = 1731418525863274548; signer_account_id = \"dev-20241112133524-55575661331191\"; predecessor_account_id = \"dev-20241112133524-55575661331191\" }\n13:35:25 \u{1b}[94md\u{1b}[39m #2 chat_contract.claim_alias / { account_alias = None }",
            ],
            receipt_ids: [
                2ArSubod1VJUjV8GW4F42UuvNvJKKd1XYfscr3jMPnj7,
            ],
            gas_burnt: NearGas {
                inner: 3018235525882,
            },
            tokens_burnt: NearToken {
                inner: 301823552588200000000,
            },
            executor_id: AccountId(
                "dev-20241112133522-25870108874847",
            ),
            status: SuccessValue(''),
        },
    ],
    status: SuccessValue(''),
}
total_gas_burnt_usd: 0.002222008391802624
outcome (success: true):
  outcome_gas_burnt_usd: 0.000205827060513448
  outcome_tokens_burnt_usd: 0.0
outcome (success: true):
  outcome_gas_burnt_usd: 0.002016181331289176
  outcome_tokens_burnt_usd: 0.0


claim_alias(account1, alias1): ExecutionFinalResult {
    total_gas_burnt: NearGas {
        inner: 3700145578800,
    },
    transaction: ExecutionOutcome {
        transaction_hash: CobRJxyzUYxjp4yDyTenRcJUJ3mjKAfDwjEa5CYafHwY,
        block_hash: GeqWAHTm7vhQtUEes1kVbJB1Z1hDGxqrboNEgFz2UwFR,
        logs: [],
        receipt_ids: [
            5zS6f1QDquwXghVBzaCXMCaMo5iRC8tu2jmspsdvUXYr,
        ],
        gas_burnt: NearGas {
            inner: 308124342086,
        },
        tokens_burnt: NearToken {
            inner: 30812434208600000000,
        },
        executor_id: AccountId(
            "dev-20241112133524-55575661331191",
        ),
        status: SuccessReceiptId(5zS6f1QDquwXghVBzaCXMCaMo5iRC8tu2jmspsdvUXYr),
    },
    receipts: [
        ExecutionOutcome {
            transaction_hash: 5zS6f1QDquwXghVBzaCXMCaMo5iRC8tu2jmspsdvUXYr,
            block_hash: Do84WrxzTzqm7JH28msB2mTxdZk4FfvW5tyXPuCBhEvZ,
            logs: [
                "13:35:26 \u{1b}[94md\u{1b}[39m #1 chat_contract.claim_alias / { alias = \"alias1\"; block_timestamp = 1731418526473384648; signer_account_id = \"dev-20241112133524-55575661331191\"; predecessor_account_id = \"dev-20241112133524-55575661331191\" }\n13:35:26 \u{1b}[94md\u{1b}[39m #2 chat_contract.claim_alias / { account_alias = Some(\"alias1\") }",
            ],
            receipt_ids: [
                6kEr1wBaeeLmWTp7t3WPiFRHD6Ng1GEDH8Xz8D23Zsps,
            ],
            gas_burnt: NearGas {
                inner: 3168838674214,
            },
            tokens_burnt: NearToken {
                inner: 316883867421400000000,
            },
            executor_id: AccountId(
                "dev-20241112133522-25870108874847",
            ),
            status: SuccessValue(''),
        },
        ExecutionOutcome {
            transaction_hash: 6kEr1wBaeeLmWTp7t3WPiFRHD6Ng1GEDH8Xz8D23Zsps,
            block_hash: 9nzDXT6CpHzbVKAQpnRPLEVPbfiVB9pxKYDddGv4wrJT,
            logs: [],
            receipt_ids: [],
            gas_burnt: NearGas {
                inner: 223182562500,
            },
            tokens_burnt: NearToken {
                inner: 0,
            },
            executor_id: AccountId(
                "dev-20241112133524-55575661331191",
            ),
            status: SuccessValue(''),
        },
    ],
    status: SuccessValue(''),
}
total_gas_burnt_usd: 0.0024716972466384
outcome (success: true):
  outcome_gas_burnt_usd: 0.000205827060513448
  outcome_tokens_burnt_usd: 0.0
outcome (success: true):
  outcome_gas_burnt_usd: 0.002116784234374952
  outcome_tokens_burnt_usd: 0.0
outcome (success: true):
  outcome_gas_burnt_usd: 0.00014908595175
  outcome_tokens_burnt_usd: 0.0


get_account_info(account1): Some(
    (
        "alias1",
        1731418526473384648,
        0,
    ),
)


get_alias_map(account1, alias1): Some(
    {
        AccountId(
            "dev-20241112133524-55575661331191",
        ): (
            1731418526473384648,
            0,
        ),
    },
)


dev_create_account(account2): Account {
    id: AccountId(
        "dev-20241112133526-11234696549597",
    ),
}


claim_alias(alias2): ExecutionFinalResult {
    total_gas_burnt: NearGas {
        inner: 3797627857506,
    },
    transaction: ExecutionOutcome {
        transaction_hash: 7Kxb9C4V46UUAfVzdj77UrTBgNuAfk29iUa33dX3iHYE,
        block_hash: 8VYoor9AcxeSHM1P2XsbhVgR8JFhN3quup3Kd7SsAHAA,
        logs: [],
        receipt_ids: [
            CmxDaD722K63QbetzgcXRravn2miwZtT9fePGHaZ2rCB,
        ],
        gas_burnt: NearGas {
            inner: 308124342086,
        },
        tokens_burnt: NearToken {
            inner: 30812434208600000000,
        },
        executor_id: AccountId(
            "dev-20241112133526-11234696549597",
        ),
        status: SuccessReceiptId(CmxDaD722K63QbetzgcXRravn2miwZtT9fePGHaZ2rCB),
    },
    receipts: [
        ExecutionOutcome {
            transaction_hash: CmxDaD722K63QbetzgcXRravn2miwZtT9fePGHaZ2rCB,
            block_hash: 7LDkhpnoUjuVqGjwUtUiyLmjHaMEQtYzuiAPAnRageTq,
            logs: [
                "13:35:28 \u{1b}[94md\u{1b}[39m #1 chat_contract.claim_alias / { alias = \"alias2\"; block_timestamp = 1731418528500445113; signer_account_id = \"dev-20241112133526-11234696549597\"; predecessor_account_id = \"dev-20241112133526-11234696549597\" }\n13:35:28 \u{1b}[94md\u{1b}[39m #2 chat_contract.claim_alias / { account_alias = None }",
            ],
            receipt_ids: [
                5pbcxezCWnXWhkEVGJSDdpw3j3uUL1cGND1ckUugPiZr,
            ],
            gas_burnt: NearGas {
                inner: 3266320952920,
            },
            tokens_burnt: NearToken {
                inner: 326632095292000000000,
            },
            executor_id: AccountId(
                "dev-20241112133522-25870108874847",
            ),
            status: SuccessValue(''),
        },
        ExecutionOutcome {
            transaction_hash: 5pbcxezCWnXWhkEVGJSDdpw3j3uUL1cGND1ckUugPiZr,
            block_hash: 5DbA1niu4DfhxnRiSNhwe2jfCDRH3W7wbdWoZf3TfALc,
            logs: [],
            receipt_ids: [],
            gas_burnt: NearGas {
                inner: 223182562500,
            },
            tokens_burnt: NearToken {
                inner: 0,
            },
            executor_id: AccountId(
                "dev-20241112133526-11234696549597",
            ),
            status: SuccessValue(''),
        },
    ],
    status: SuccessValue(''),
}
total_gas_burnt_usd: 0.002536815408814008
outcome (success: true):
  outcome_gas_burnt_usd: 0.000205827060513448
  outcome_tokens_burnt_usd: 0.0
outcome (success: true):
  outcome_gas_burnt_usd: 0.00218190239655056
  outcome_tokens_burnt_usd: 0.0
outcome (success: true):
  outcome_gas_burnt_usd: 0.00014908595175
  outcome_tokens_burnt_usd: 0.0


get_account_info(account2): Some(
    (
        "alias2",
        1731418528500445113,
        0,
    ),
)


get_alias_map_borsh(alias2): Some(
    {
        AccountId(
            "dev-20241112133526-11234696549597",
        ): (
            1731418528500445113,
            0,
        ),
    },
)


claim_alias(account2, alias1): ExecutionFinalResult {
    total_gas_burnt: NearGas {
        inner: 3987324561369,
    },
    transaction: ExecutionOutcome {
        transaction_hash: Afo1LYTBbouBCPfqYdxom6wXp48feECGcNnbG8KAckRX,
        block_hash: B8gMsaD5zhhyVvwyUBLT8Sa6jjAdUd5eFmfYfsiHwdyA,
        logs: [],
        receipt_ids: [
            2Dtf4L8Qi4GKjRPhkWYRjJ3qtYU5GhcmfW1Dz136uUTf,
        ],
        gas_burnt: NearGas {
            inner: 308124342086,
        },
        tokens_burnt: NearToken {
            inner: 30812434208600000000,
        },
        executor_id: AccountId(
            "dev-20241112133526-11234696549597",
        ),
        status: SuccessReceiptId(2Dtf4L8Qi4GKjRPhkWYRjJ3qtYU5GhcmfW1Dz136uUTf),
    },
    receipts: [
        ExecutionOutcome {
            transaction_hash: 2Dtf4L8Qi4GKjRPhkWYRjJ3qtYU5GhcmfW1Dz136uUTf,
            block_hash: Fqtn7FKPhuhRk22NtZ2tDwo6PNQQaSeeCe1y32pMheDM,
            logs: [
                "13:35:29 \u{1b}[94md\u{1b}[39m #1 chat_contract.claim_alias / { alias = \"alias1\"; block_timestamp = 1731418529511419044; signer_account_id = \"dev-20241112133526-11234696549597\"; predecessor_account_id = \"dev-20241112133526-11234696549597\" }\n13:35:29 \u{1b}[94md\u{1b}[39m #2 chat_contract.claim_alias / { account_alias = Some(\"alias2\") }",
            ],
            receipt_ids: [
                5QUF7We8AaCZ9Sh2mWEcFo3HPuF7g3TcGjXLypdNwbGU,
            ],
            gas_burnt: NearGas {
                inner: 3456017656783,
            },
            tokens_burnt: NearToken {
                inner: 345601765678300000000,
            },
            executor_id: AccountId(
                "dev-20241112133522-25870108874847",
            ),
            status: SuccessValue(''),
        },
        ExecutionOutcome {
            transaction_hash: 5QUF7We8AaCZ9Sh2mWEcFo3HPuF7g3TcGjXLypdNwbGU,
            block_hash: BZds2ZEWQHevTXAz6YqpfFXYRAmfKuUhiUCR127v5jvP,
            logs: [],
            receipt_ids: [],
            gas_burnt: NearGas {
                inner: 223182562500,
            },
            tokens_burnt: NearToken {
                inner: 0,
            },
            executor_id: AccountId(
                "dev-20241112133526-11234696549597",
            ),
            status: SuccessValue(''),
        },
    ],
    status: SuccessValue(''),
}
total_gas_burnt_usd: 0.0026635328069944918
outcome (success: true):
  outcome_gas_burnt_usd: 0.000205827060513448
  outcome_tokens_burnt_usd: 0.0
outcome (success: true):
  outcome_gas_burnt_usd: 0.002308619794731044
  outcome_tokens_burnt_usd: 0.0
outcome (success: true):
  outcome_gas_burnt_usd: 0.00014908595175
  outcome_tokens_burnt_usd: 0.0


get_account_info(account2): Some(
    (
        "alias1",
        1731418529511419044,
        1,
    ),
)


get_alias_map(account2, alias1): Some(
    {
        AccountId(
            "dev-20241112133524-55575661331191",
        ): (
            1731418526473384648,
            0,
        ),
        AccountId(
            "dev-20241112133526-11234696549597",
        ): (
            1731418529511419044,
            1,
        ),
    },
)


get_alias_map(account2, alias2): Some(
    {},
)


claim_alias(account1, alias2): ExecutionFinalResult {
    total_gas_burnt: NearGas {
        inner: 3764169436065,
    },
    transaction: ExecutionOutcome {
        transaction_hash: AztNJ8rWS1Z6YBfwnioPFNQF24kBHzK7SfjMpJ1RgFsJ,
        block_hash: EMNhLZuKx3K7KzM1MBevVjAhw3RLpBH6rPuuB8JM2aGo,
        logs: [],
        receipt_ids: [
            812L33mw9bihvPXCEpJjq7nhwSFvj18feGFR7QJXREgC,
        ],
        gas_burnt: NearGas {
            inner: 308124342086,
        },
        tokens_burnt: NearToken {
            inner: 30812434208600000000,
        },
        executor_id: AccountId(
            "dev-20241112133524-55575661331191",
        ),
        status: SuccessReceiptId(812L33mw9bihvPXCEpJjq7nhwSFvj18feGFR7QJXREgC),
    },
    receipts: [
        ExecutionOutcome {
            transaction_hash: 812L33mw9bihvPXCEpJjq7nhwSFvj18feGFR7QJXREgC,
            block_hash: ENnmxnWXVsAfucs5yrz4DsF4uZ5eDdHJVRqZTyxfnbuh,
            logs: [
                "13:35:30 \u{1b}[94md\u{1b}[39m #1 chat_contract.claim_alias / { alias = \"alias2\"; block_timestamp = 1731418530525554476; signer_account_id = \"dev-20241112133524-55575661331191\"; predecessor_account_id = \"dev-20241112133524-55575661331191\" }\n13:35:30 \u{1b}[94md\u{1b}[39m #2 chat_contract.claim_alias / { account_alias = Some(\"alias1\") }",
            ],
            receipt_ids: [
                3a1QrHQRWt72cvyjkgGsgZtSJjHMhYTvQXBCExqh6ZiH,
            ],
            gas_burnt: NearGas {
                inner: 3456045093979,
            },
            tokens_burnt: NearToken {
                inner: 345604509397900000000,
            },
            executor_id: AccountId(
                "dev-20241112133522-25870108874847",
            ),
            status: SuccessValue(''),
        },
    ],
    status: SuccessValue(''),
}
total_gas_burnt_usd: 0.00251446518329142
outcome (success: true):
  outcome_gas_burnt_usd: 0.000205827060513448
  outcome_tokens_burnt_usd: 0.0
outcome (success: true):
  outcome_gas_burnt_usd: 0.002308638122777972
  outcome_tokens_burnt_usd: 0.0


get_account_info(account1): Some(
    (
        "alias2",
        1731418530525554476,
        0,
    ),
)


get_alias_map(account1, alias2): Some(
    {
        AccountId(
            "dev-20241112133524-55575661331191",
        ): (
            1731418530525554476,
            0,
        ),
    },
)


get_alias_map(account1, alias1): Some(
    {
        AccountId(
            "dev-20241112133526-11234696549597",
        ): (
            1731418529511419044,
            1,
        ),
    },
)


claim_alias(account1, alias1): ExecutionFinalResult {
    total_gas_burnt: NearGas {
        inner: 3989588106249,
    },
    transaction: ExecutionOutcome {
        transaction_hash: BNZ4up9wEYRZzC4v6NGcQmu8xmYUNqZLeb5WzX1u7sSB,
        block_hash: 7SFNQ9kGbv4Zcf96ePe6iqkXLCjU6aTMM9pfwzo5xdFA,
        logs: [],
        receipt_ids: [
            8nuZiurLxhTtRdo4f41qmDHTBN1zeZY1M9qqbnNGdLPo,
        ],
        gas_burnt: NearGas {
            inner: 308124342086,
        },
        tokens_burnt: NearToken {
            inner: 30812434208600000000,
        },
        executor_id: AccountId(
            "dev-20241112133524-55575661331191",
        ),
        status: SuccessReceiptId(8nuZiurLxhTtRdo4f41qmDHTBN1zeZY1M9qqbnNGdLPo),
    },
    receipts: [
        ExecutionOutcome {
            transaction_hash: 8nuZiurLxhTtRdo4f41qmDHTBN1zeZY1M9qqbnNGdLPo,
            block_hash: 2QbmuPyyrwPNngqGVmvmY4PqDPC4EKVMDmVvVnoSv1pN,
            logs: [
                "13:35:31 \u{1b}[94md\u{1b}[39m #1 chat_contract.claim_alias / { alias = \"alias1\"; block_timestamp = 1731418531133869015; signer_account_id = \"dev-20241112133524-55575661331191\"; predecessor_account_id = \"dev-20241112133524-55575661331191\" }\n13:35:31 \u{1b}[94md\u{1b}[39m #2 chat_contract.claim_alias / { account_alias = Some(\"alias2\") }",
            ],
            receipt_ids: [
                ADK3dDqbkXTbw3CaqwZ9a1tYqsWPKf3PwksUgDa18VKB,
            ],
            gas_burnt: NearGas {
                inner: 3458281201663,
            },
            tokens_burnt: NearToken {
                inner: 345828120166300000000,
            },
            executor_id: AccountId(
                "dev-20241112133522-25870108874847",
            ),
            status: SuccessValue(''),
        },
        ExecutionOutcome {
            transaction_hash: ADK3dDqbkXTbw3CaqwZ9a1tYqsWPKf3PwksUgDa18VKB,
            block_hash: 8CLeFbjKzwdh7i44ykeiypBgDZYeLdmsY69CdViwbuF,
            logs: [],
            receipt_ids: [],
            gas_burnt: NearGas {
                inner: 223182562500,
            },
            tokens_burnt: NearToken {
                inner: 0,
            },
            executor_id: AccountId(
                "dev-20241112133524-55575661331191",
            ),
            status: SuccessValue(''),
        },
    ],
    status: SuccessValue(''),
}
total_gas_burnt_usd: 0.002665044854974332
outcome (success: true):
  outcome_gas_burnt_usd: 0.000205827060513448
  outcome_tokens_burnt_usd: 0.0
outcome (success: true):
  outcome_gas_burnt_usd: 0.0023101318427108837
  outcome_tokens_burnt_usd: 0.0
outcome (success: true):
  outcome_gas_burnt_usd: 0.00014908595175
  outcome_tokens_burnt_usd: 0.0


get_account_info(account1): Some(
    (
        "alias1",
        1731418531133869015,
        1,
    ),
)


get_alias_map(account1, alias1): Some(
    {
        AccountId(
            "dev-20241112133524-55575661331191",
        ): (
            1731418531133869015,
            1,
        ),
        AccountId(
            "dev-20241112133526-11234696549597",
        ): (
            1731418529511419044,
            0,
        ),
    },
)


get_alias_map(account1, alias2): Some(
    {},
)
In [ ]:
{ pwsh ../apps/spiral/temp/build.ps1 } | Invoke-Block
00:00:00 v #1 async.run_with_timeout_async / { timeout = 180 }
00:00:00 d #1 runtime.execute_with_options_async / { file_name = dotnet; arguments = US5_0
  ""C:\home\git\polyglot\deps\The-Spiral-Language\The Spiral Language 2\artifacts\bin\The Spiral Language 2\release\Spiral.dll" --port 13805 --default-int i32 --default-float f64"; options = { command = dotnet "C:\home\git\polyglot\deps\The-Spiral-Language\The Spiral Language 2\artifacts\bin\The Spiral Language 2\release\Spiral.dll" --port 13805 --default-int i32 --default-float f64; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = Some <fun:main@595-7>; stdin = None; trace = true; working_directory = Some "C:\home\git\polyglot" } }
00:00:01 v #2 > 00:00:00 d #1 pwd: C:\home\git\polyglot
00:00:01 v #3 > 00:00:00 d #2 dllPath: C:\home\git\polyglot\deps\The-Spiral-Language\The Spiral Language 2\artifacts\bin\The Spiral Language 2\release
00:00:01 v #4 > 00:00:00 d #3 targetDir: C:\home\git\polyglot\target/spiral_Eval
00:00:01 v #2 async.run_with_timeout_async / { timeout = 100 }
00:00:01 v #3 async.run_with_timeout_async / { timeout = 100 }
00:00:01 v #5 > Starting the Spiral Server. It is bound to: http://localhost:13805
00:00:01 v #4 async.run_with_timeout_async / { timeout = 100 }
00:00:01 v #1 Supervisor.sendJson / port: 13805 / json: {"Ping":true} / result:
00:00:01 v #2 Supervisor.awaitCompiler / Ping / result: 'Some null' / port: 13805 / retry: 1
00:00:01 v #6 > Server bound to: http://localhost:13805
00:00:01 d #7 runtime.execute_with_options_async / { file_name = ../../../../workspace/target/release/spiral_builder.exe; arguments = US5_0 "dib --path cube.dib"; options = { command = ../../../../workspace/target/release/spiral_builder.exe dib --path cube.dib; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:00:01 v #8 > 00:00:00 d #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "cube.dib"])) }
00:00:01 v #9 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/polyglot/apps/spiral/temp/cube/cube.dib", "--output-path", "c:/home/git/polyglot/apps/spiral/temp/cube/cube.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/polyglot/apps/spiral/temp/cube/cube.dib" --output-path "c:/home/git/polyglot/apps/spiral/temp/cube/cube.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:00:03 v #10 > >
00:00:03 v #11 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:03 v #12 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:03 v #13 > > │ # cube                                                                       │
00:00:03 v #14 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:03 v #15 > >
00:00:03 v #16 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:03 v #17 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:03 v #18 > > │ ## cube                                                                      │
00:00:03 v #19 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 v #20 > >
00:00:07 v #21 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:07 v #22 > > open System
00:00:07 v #23 > > open System.Threading.Tasks
00:00:07 v #24 > > open System.Text
00:00:07 v #25 > >
00:00:07 v #26 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:07 v #27 > > let width = 160
00:00:07 v #28 > > let height = 44
00:00:07 v #29 > > let backgroundChar = '.'
00:00:07 v #30 > > let distanceFromCam = 100.0
00:00:07 v #31 > > let k1 = 40.0
00:00:07 v #32 > > let incrementSpeed = 0.6
00:00:07 v #33 > >
00:00:07 v #34 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:07 v #35 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:07 v #36 > > │ ### get_width                                                                │
00:00:07 v #37 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 v #38 > >
00:00:09 v #39 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:09 v #40 > > inl get_width () =
00:00:09 v #41 > >     160i32
00:00:12 v #42 > >
00:00:12 v #43 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:12 v #44 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:12 v #45 > > │ ### get_height                                                               │
00:00:12 v #46 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:12 v #47 > >
00:00:12 v #48 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:12 v #49 > > inl get_height () =
00:00:12 v #50 > >     44i32
00:00:13 v #51 > >
00:00:13 v #52 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:13 v #53 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:13 v #54 > > │ ### get_background_char                                                      │
00:00:13 v #55 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:13 v #56 > >
00:00:13 v #57 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:13 v #58 > > inl get_background_char () =
00:00:13 v #59 > >     '.'
00:00:13 v #60 > >
00:00:13 v #61 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:13 v #62 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:13 v #63 > > │ ### get_distance_from_cam                                                    │
00:00:13 v #64 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:13 v #65 > >
00:00:13 v #66 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:13 v #67 > > inl get_distance_from_cam () =
00:00:13 v #68 > >     100f64
00:00:14 v #69 > >
00:00:14 v #70 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:14 v #71 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:14 v #72 > > │ ### get_k1                                                                   │
00:00:14 v #73 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:14 v #74 > >
00:00:14 v #75 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:14 v #76 > > inl get_k1 () =
00:00:14 v #77 > >     40f64
00:00:15 v #78 > >
00:00:15 v #79 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:15 v #80 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:15 v #81 > > │ ### get_increment_speed                                                      │
00:00:15 v #82 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:15 v #83 > >
00:00:15 v #84 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:15 v #85 > > inl get_increment_speed () =
00:00:15 v #86 > >     0.6f64
00:00:15 v #87 > >
00:00:15 v #88 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:15 v #89 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:15 v #90 > > │ ### rotation                                                                 │
00:00:15 v #91 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:15 v #92 > >
00:00:15 v #93 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:15 v #94 > > type Rotation = { a: float; b: float; c: float }
00:00:15 v #95 > >
00:00:15 v #96 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:15 v #97 > > type rotation =
00:00:15 v #98 > >     {
00:00:15 v #99 > >         a : f64
00:00:15 v #100 > >         b : f64
00:00:15 v #101 > >         c : f64
00:00:15 v #102 > >     }
00:00:16 v #103 > >
00:00:16 v #104 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:16 v #105 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:16 v #106 > > │ ### cube                                                                     │
00:00:16 v #107 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:16 v #108 > >
00:00:16 v #109 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:16 v #110 > > type Cube = { cubeWidth: float; horizontalOffset: float }
00:00:16 v #111 > >
00:00:16 v #112 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:16 v #113 > > type cube =
00:00:16 v #114 > >     {
00:00:16 v #115 > >         cube_width : f64
00:00:16 v #116 > >         horizontal_offset : f64
00:00:16 v #117 > >     }
00:00:16 v #118 > >
00:00:16 v #119 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:16 v #120 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:16 v #121 > > │ ### get_cubes                                                                │
00:00:16 v #122 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:16 v #123 > >
00:00:16 v #124 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:16 v #125 > > let cubes = [[
00:00:16 v #126 > >     { cubeWidth = 20.0; horizontalOffset = -40.0 }
00:00:16 v #127 > >     { cubeWidth = 10.0; horizontalOffset = 10.0 }
00:00:16 v #128 > >     { cubeWidth = 5.0; horizontalOffset = 40.0 }
00:00:16 v #129 > > ]]
00:00:16 v #130 > >
00:00:16 v #131 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:16 v #132 > > inl get_cubes () : list cube =
00:00:16 v #133 > >     [[
00:00:16 v #134 > >         { cube_width = 20; horizontal_offset = -40 }
00:00:16 v #135 > >         { cube_width = 10; horizontal_offset = 10 }
00:00:16 v #136 > >         { cube_width = 5; horizontal_offset = 40 }
00:00:16 v #137 > >     ]]
00:00:17 v #138 > >
00:00:17 v #139 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:17 v #140 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:17 v #141 > > │ ### calculate_x                                                              │
00:00:17 v #142 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:17 v #143 > >
00:00:17 v #144 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:17 v #145 > > let calculateX i j k (rot: Rotation) =
00:00:17 v #146 > >     let a, b, c = rot.a, rot.b, rot.c
00:00:17 v #147 > >     j * sin a * sin b * cos c - k * cos a * sin b * cos c +
00:00:17 v #148 > >     j * cos a * sin c + k * sin a * sin c + i * cos b * cos c
00:00:17 v #149 > >
00:00:17 v #150 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:17 v #151 > > inl calculate_x i j k (rot : rotation) =
00:00:17 v #152 > >     inl a, b, c = rot.a, rot.b, rot.c
00:00:17 v #153 > >     j * sin a * sin b * cos c - k * cos a * sin b * cos c +
00:00:17 v #154 > >     j * cos a * sin c + k * sin a * sin c + i * cos b * cos c
00:00:17 v #155 > >
00:00:17 v #156 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:17 v #157 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:17 v #158 > > │ ### calculate_y                                                              │
00:00:17 v #159 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:17 v #160 > >
00:00:17 v #161 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:17 v #162 > > let calculateY i j k (rot: Rotation) =
00:00:17 v #163 > >     let a, b, c = rot.a, rot.b, rot.c
00:00:17 v #164 > >     j * cos a * cos c + k * sin a * cos c -
00:00:17 v #165 > >     j * sin a * sin b * sin c + k * cos a * sin b * sin c -
00:00:17 v #166 > >     i * cos b * sin c
00:00:17 v #167 > >
00:00:17 v #168 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:17 v #169 > > inl calculate_y i j k (rot : rotation) =
00:00:17 v #170 > >     inl a, b, c = rot.a, rot.b, rot.c
00:00:17 v #171 > >     j * cos a * cos c + k * sin a * cos c -
00:00:17 v #172 > >     j * sin a * sin b * sin c + k * cos a * sin b * sin c -
00:00:17 v #173 > >     i * cos b * sin c
00:00:18 v #174 > >
00:00:18 v #175 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:18 v #176 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:18 v #177 > > │ ### calculate_z                                                              │
00:00:18 v #178 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:18 v #179 > >
00:00:18 v #180 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:18 v #181 > > let calculateZ i j k (rot: Rotation) =
00:00:18 v #182 > >     let a, b, c = rot.a, rot.b, rot.c
00:00:18 v #183 > >     k * cos a * cos b - j * sin a * cos b + i * sin b
00:00:18 v #184 > >
00:00:18 v #185 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:18 v #186 > > inl calculate_z i j k (rot : rotation) =
00:00:18 v #187 > >     inl a, b, c = rot.a, rot.b, rot.c
00:00:18 v #188 > >     k * cos a * cos b - j * sin a * cos b + i * sin b
00:00:18 v #189 > >
00:00:18 v #190 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:18 v #191 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:18 v #192 > > │ ### calculate_for_surface                                                    │
00:00:18 v #193 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:18 v #194 > >
00:00:18 v #195 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:18 v #196 > > let calculateForSurface cubeX cubeY cubeZ ch rot horizontalOffset =
00:00:18 v #197 > >     let x = calculateX cubeX cubeY cubeZ rot
00:00:18 v #198 > >     let y = calculateY cubeX cubeY cubeZ rot
00:00:18 v #199 > >     let z = calculateZ cubeX cubeY cubeZ rot + distanceFromCam
00:00:18 v #200 > >     let ooz = 1.0 / z
00:00:18 v #201 > >     let xp = int (float width / 2.0 + horizontalOffset + k1 * ooz * x * 2.0)
00:00:18 v #202 > >     let yp = int (float height / 2.0 + k1 * ooz * y)
00:00:18 v #203 > >     let idx = xp + yp * width
00:00:18 v #204 > >     if idx >= 0 && idx < width * height
00:00:18 v #205 > >     then Some (idx, (ooz, ch))
00:00:18 v #206 > >     else None
00:00:18 v #207 > >
00:00:18 v #208 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:18 v #209 > > let calculate_for_surface cube_x cube_y cube_z ch rot horizontal_offset =
00:00:18 v #210 > >     inl x = calculate_x cube_x cube_y cube_z rot
00:00:18 v #211 > >     inl y = calculate_y cube_x cube_y cube_z rot
00:00:18 v #212 > >     inl z = calculate_z cube_x cube_y cube_z rot + get_distance_from_cam ()
00:00:18 v #213 > >     inl ooz = 1.0 / z
00:00:18 v #214 > >     inl xp = i32 (f64 (get_width ()) / 2.0 + horizontal_offset + get_k1 () * ooz
00:00:18 v #215 > > * x * 2.0)
00:00:18 v #216 > >     inl yp = i32 (f64 (get_height ()) / 2.0 + get_k1 () * ooz * y)
00:00:18 v #217 > >     inl idx = xp + yp * get_width ()
00:00:18 v #218 > >     if idx >= 0 && idx < get_width () * get_height ()
00:00:18 v #219 > >     then Some (idx, (ooz, ch))
00:00:18 v #220 > >     else None
00:00:19 v #221 > >
00:00:19 v #222 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:19 v #223 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:19 v #224 > > │ ### frange                                                                   │
00:00:19 v #225 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:19 v #226 > >
00:00:19 v #227 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:19 v #228 > > let frange start stop step =
00:00:19 v #229 > >     seq {
00:00:19 v #230 > >         let mutable current = start
00:00:19 v #231 > >         while (step > 0.0 && current < stop) || (step < 0.0 && current > stop)
00:00:19 v #232 > > do
00:00:19 v #233 > >             yield current
00:00:19 v #234 > >             current <- current + step
00:00:19 v #235 > >     }
00:00:19 v #236 > >
00:00:19 v #237 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:19 v #238 > > inl frange start stop step : _ f64 =
00:00:19 v #239 > >     fun () =>
00:00:19 v #240 > >         inl current = mut start
00:00:19 v #241 > >         loopw.while
00:00:19 v #242 > >             fun () => (step > 0f64 && *current < stop) || (step < 0 && *current
00:00:19 v #243 > > > stop)
00:00:19 v #244 > >             fun () =>
00:00:19 v #245 > >                 *current |> yield
00:00:19 v #246 > >                 current <- *current + step
00:00:19 v #247 > >     |> seq.new_seq
00:00:19 v #248 > >
00:00:19 v #249 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:19 v #250 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:19 v #251 > > │ ### get_cube_points                                                          │
00:00:19 v #252 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:19 v #253 > >
00:00:19 v #254 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:19 v #255 > > let getCubePoints (cube: Cube) rot =
00:00:19 v #256 > >     let cw = cube.cubeWidth
00:00:19 v #257 > >     let ho = cube.horizontalOffset
00:00:19 v #258 > >     let cubeRange = frange (-cw) cw incrementSpeed
00:00:19 v #259 > >     seq {
00:00:19 v #260 > >         for cubeX in cubeRange do
00:00:19 v #261 > >             for cubeY in cubeRange do
00:00:19 v #262 > >                 let x =
00:00:19 v #263 > >                     [[
00:00:19 v #264 > >                         calculateForSurface cubeX cubeY (-cw) '@' rot ho
00:00:19 v #265 > >                         calculateForSurface cw cubeY cubeX '$' rot ho
00:00:19 v #266 > >                         calculateForSurface (-cw) cubeY (-cubeX) '~' rot ho
00:00:19 v #267 > >                         calculateForSurface (-cubeX) cubeY cw '#' rot ho
00:00:19 v #268 > >                         calculateForSurface cubeX (-cw) (-cubeY) ';' rot ho
00:00:19 v #269 > >                         calculateForSurface cubeX cw cubeY '+' rot ho
00:00:19 v #270 > >                     ]]
00:00:19 v #271 > >                     |> Seq.choose id
00:00:19 v #272 > >                 yield! x
00:00:19 v #273 > >     }
00:00:19 v #274 > >
00:00:19 v #275 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:19 v #276 > > inl get_cube_points (cube : cube) rot =
00:00:19 v #277 > >     inl cw = cube.cube_width
00:00:19 v #278 > >     inl ho = cube.horizontal_offset
00:00:19 v #279 > >     inl cube_range = frange -cw cw (get_increment_speed ())
00:00:19 v #280 > >     inl cube_range = join cube_range
00:00:19 v #281 > >     inl get cube_x cube_y =
00:00:19 v #282 > >         [[
00:00:19 v #283 > >             calculate_for_surface cube_x cube_y -cw ';' rot ho
00:00:19 v #284 > >             calculate_for_surface cw cube_y cube_x '\\' rot ho
00:00:19 v #285 > >             calculate_for_surface -cw cube_y -cube_x '/' rot ho
00:00:19 v #286 > >             calculate_for_surface -cube_x cube_y cw '=' rot ho
00:00:19 v #287 > >             calculate_for_surface cube_x -cw -cube_y '>' rot ho
00:00:19 v #288 > >             calculate_for_surface cube_x cw cube_y '<' rot ho
00:00:19 v #289 > >         ]]
00:00:19 v #290 > >         |> listm'.box
00:00:19 v #291 > >     inl get = join get
00:00:19 v #292 > >     inl box x : _ (i32 * f64 * char) =
00:00:19 v #293 > >         optionm'.box x
00:00:19 v #294 > >     inl box = join box
00:00:19 v #295 > >     fun () =>
00:00:19 v #296 > >         backend_switch {
00:00:19 v #297 > >             Fsharp = fun () =>
00:00:19 v #298 > >                 $'for cube_x in !cube_range do'
00:00:19 v #299 > >                 $'for cube_y in !cube_range do'
00:00:19 v #300 > >                 $'let x = !get cube_x cube_y |> Seq.choose !box '
00:00:19 v #301 > >                 $'yield\! x' : ()
00:00:19 v #302 > >             Python = fun () =>
00:00:19 v #303 > >                 $'cube_range = !cube_range '
00:00:19 v #304 > >                 $'get = !get '
00:00:19 v #305 > >                 $'box = !box '
00:00:19 v #306 > >                 $'for cube_x in cube_range:'
00:00:19 v #307 > >                 $'    for cube_y in cube_range:'
00:00:19 v #308 > >                 $'        x = get(cube_x)(cube_y)'
00:00:19 v #309 > >                 $'        for i in x:'
00:00:19 v #310 > >                 $'            i_ = box(i)'
00:00:19 v #311 > >                 $'            if i_ is not None: yield i' : ()
00:00:19 v #312 > >         }
00:00:19 v #313 > >     |> seq.new_seq
00:00:20 v #314 > >
00:00:20 v #315 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:20 v #316 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:20 v #317 > > │ ### generate_frame                                                           │
00:00:20 v #318 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:20 v #319 > >
00:00:20 v #320 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:20 v #321 > > let generateFrame rot =
00:00:20 v #322 > >     let updates =
00:00:20 v #323 > >         cubes
00:00:20 v #324 > >         |> Seq.collect (fun cube -> getCubePoints cube rot)
00:00:20 v #325 > >     let buffer = Array.create (width * height) None
00:00:20 v #326 > >     updates
00:00:20 v #327 > >     |> Seq.iter (fun (idx, (ooz, ch)) ->
00:00:20 v #328 > >         match buffer.[[idx]] with
00:00:20 v #329 > >         | Some (prevOoz, _) when prevOoz >= ooz -> ()
00:00:20 v #330 > >         | _ -> buffer.[[idx]] <- Some (ooz, ch)
00:00:20 v #331 > >     )
00:00:20 v #332 > >     let sb = StringBuilder()
00:00:20 v #333 > >     for row in 0 .. (height - 1) do
00:00:20 v #334 > >         for col in 0 .. (width - 1) do
00:00:20 v #335 > >             let idx = col + row * width
00:00:20 v #336 > >             let ch =
00:00:20 v #337 > >                 match buffer.[[idx]] with
00:00:20 v #338 > >                 | Some (_, ch) -> ch
00:00:20 v #339 > >                 | None -> backgroundChar
00:00:20 v #340 > >             sb.Append(ch) |> ignore
00:00:20 v #341 > >         sb.AppendLine() |> ignore
00:00:20 v #342 > >     sb.ToString()
00:00:20 v #343 > >
00:00:20 v #344 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:20 v #345 > > //// test
00:00:20 v #346 > >
00:00:20 v #347 > > let rot = { a = 0.0; b = 0.0; c = 0.0 }
00:00:20 v #348 > > let frame = generateFrame rot
00:00:20 v #349 > > Console.Write frame
00:00:20 v #350 > >
00:00:20 v #351 > > ╭─[ 45.84ms - stdout ]─────────────────────────────────────────────────────────╮
00:00:20 v #352 > > │ ............................................................................ │
00:00:20 v #353 > > │ ............................................................................ │
00:00:20 v #354 > > │ ........                                                                     │
00:00:20 v #355 > > │ ............................................................................ │
00:00:20 v #356 > > │ ............................................................................ │
00:00:20 v #357 > > │ ........                                                                     │
00:00:20 v #358 > > │ ............................................................................ │
00:00:20 v #359 > > │ ............................................................................ │
00:00:20 v #360 > > │ ........                                                                     │
00:00:20 v #361 > > │ ............................................................................ │
00:00:20 v #362 > > │ ............................................................................ │
00:00:20 v #363 > > │ ........                                                                     │
00:00:20 v #364 > > │ ............................................................................ │
00:00:20 v #365 > > │ ............................................................................ │
00:00:20 v #366 > > │ ........                                                                     │
00:00:20 v #367 > > │ ............................................................................ │
00:00:20 v #368 > > │ ............................................................................ │
00:00:20 v #369 > > │ ........                                                                     │
00:00:20 v #370 > > │ ............................................................................ │
00:00:20 v #371 > > │ ............................................................................ │
00:00:20 v #372 > > │ ........                                                                     │
00:00:20 v #373 > > │ ............................................................................ │
00:00:20 v #374 > > │ ............................................................................ │
00:00:20 v #375 > > │ ........                                                                     │
00:00:20 v #376 > > │ ............................................................................ │
00:00:20 v #377 > > │ ............................................................................ │
00:00:20 v #378 > > │ ........                                                                     │
00:00:20 v #379 > > │ ............................................................................ │
00:00:20 v #380 > > │ ............................................................................ │
00:00:20 v #381 > > │ ........                                                                     │
00:00:20 v #382 > > │ ............................................................................ │
00:00:20 v #383 > > │ ............................................................................ │
00:00:20 v #384 > > │ ........                                                                     │
00:00:20 v #385 > > │ ............................................................................ │
00:00:20 v #386 > > │ ............................................................................ │
00:00:20 v #387 > > │ ........                                                                     │
00:00:20 v #388 > > │ ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$............... │
00:00:20 v #389 > > │ ............................................................................ │
00:00:20 v #390 > > │ ........                                                                     │
00:00:20 v #391 > > │ ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$............... │
00:00:20 v #392 > > │ ............................................................................ │
00:00:20 v #393 > > │ ........                                                                     │
00:00:20 v #394 > > │ ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$............... │
00:00:20 v #395 > > │ ............................................................................ │
00:00:20 v #396 > > │ ........                                                                     │
00:00:20 v #397 > > │ ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$............... │
00:00:20 v #398 > > │ ............................................................................ │
00:00:20 v #399 > > │ ........                                                                     │
00:00:20 v #400 > > │ ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$............... │
00:00:20 v #401 > > │ ............................................................................ │
00:00:20 v #402 > > │ ........                                                                     │
00:00:20 v #403 > > │ ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$............... │
00:00:20 v #404 > > │ .....@@@@@@@@@@@@@@@@@$..................................................... │
00:00:20 v #405 > > │ ........                                                                     │
00:00:20 v #406 > > │ ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$............... │
00:00:20 v #407 > > │ .....@@@@@@@@@@@@@@@@@$..................................................... │
00:00:20 v #408 > > │ ........                                                                     │
00:00:20 v #409 > > │ ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$............... │
00:00:20 v #410 > > │ .....@@@@@@@@@@@@@@@@@$................@@@@@@@@@$........................... │
00:00:20 v #411 > > │ ........                                                                     │
00:00:20 v #412 > > │ ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$............... │
00:00:20 v #413 > > │ .....@@@@@@@@@@@@@@@@@$................@@@@@@@@@$........................... │
00:00:20 v #414 > > │ ........                                                                     │
00:00:20 v #415 > > │ ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$............... │
00:00:20 v #416 > > │ .....@@@@@@@@@@@@@@@@@$................@@@@@@@@@$........................... │
00:00:20 v #417 > > │ ........                                                                     │
00:00:20 v #418 > > │ ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$............... │
00:00:20 v #419 > > │ .....@@@@@@@@@@@@@@@@@$................@@@@@@@@@$........................... │
00:00:20 v #420 > > │ ........                                                                     │
00:00:20 v #421 > > │ ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$............... │
00:00:20 v #422 > > │ .....@@@@@@@@@@@@@@@@@$................@@@@@@@@@$........................... │
00:00:20 v #423 > > │ ........                                                                     │
00:00:20 v #424 > > │ ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$............... │
00:00:20 v #425 > > │ .....@@@@@@@@@@@@@@@@@$................+++++++++............................ │
00:00:20 v #426 > > │ ........                                                                     │
00:00:20 v #427 > > │ ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$............... │
00:00:20 v #428 > > │ .....@@@@@@@@@@@@@@@@@$..................................................... │
00:00:20 v #429 > > │ ........                                                                     │
00:00:20 v #430 > > │ ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$............... │
00:00:20 v #431 > > │ .....+++++++++++++++++$..................................................... │
00:00:20 v #432 > > │ ........                                                                     │
00:00:20 v #433 > > │ ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$............... │
00:00:20 v #434 > > │ ............................................................................ │
00:00:20 v #435 > > │ ........                                                                     │
00:00:20 v #436 > > │ ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$............... │
00:00:20 v #437 > > │ ............................................................................ │
00:00:20 v #438 > > │ ........                                                                     │
00:00:20 v #439 > > │ ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$............... │
00:00:20 v #440 > > │ ............................................................................ │
00:00:20 v #441 > > │ ........                                                                     │
00:00:20 v #442 > > │ ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$............... │
00:00:20 v #443 > > │ ............................................................................ │
00:00:20 v #444 > > │ ........                                                                     │
00:00:20 v #445 > > │ ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$............... │
00:00:20 v #446 > > │ ............................................................................ │
00:00:20 v #447 > > │ ........                                                                     │
00:00:20 v #448 > > │ ....................++++++++++++++++++++++++++++++++++++++++................ │
00:00:20 v #449 > > │ ............................................................................ │
00:00:20 v #450 > > │ ........                                                                     │
00:00:20 v #451 > > │ ............................................................................ │
00:00:20 v #452 > > │ ............................................................................ │
00:00:20 v #453 > > │ ........                                                                     │
00:00:20 v #454 > > │ ............................................................................ │
00:00:20 v #455 > > │ ............................................................................ │
00:00:20 v #456 > > │ ........                                                                     │
00:00:20 v #457 > > │ ............................................................................ │
00:00:20 v #458 > > │ ............................................................................ │
00:00:20 v #459 > > │ ........                                                                     │
00:00:20 v #460 > > │ ............................................................................ │
00:00:20 v #461 > > │ ............................................................................ │
00:00:20 v #462 > > │ ........                                                                     │
00:00:20 v #463 > > │ ............................................................................ │
00:00:20 v #464 > > │ ............................................................................ │
00:00:20 v #465 > > │ ........                                                                     │
00:00:20 v #466 > > │ ............................................................................ │
00:00:20 v #467 > > │ ............................................................................ │
00:00:20 v #468 > > │ ........                                                                     │
00:00:20 v #469 > > │ ............................................................................ │
00:00:20 v #470 > > │ ............................................................................ │
00:00:20 v #471 > > │ ........                                                                     │
00:00:20 v #472 > > │ ............................................................................ │
00:00:20 v #473 > > │ ............................................................................ │
00:00:20 v #474 > > │ ........                                                                     │
00:00:20 v #475 > > │ ............................................................................ │
00:00:20 v #476 > > │ ............................................................................ │
00:00:20 v #477 > > │ ........                                                                     │
00:00:20 v #478 > > │ ............................................................................ │
00:00:20 v #479 > > │ ............................................................................ │
00:00:20 v #480 > > │ ........                                                                     │
00:00:20 v #481 > > │ ............................................................................ │
00:00:20 v #482 > > │ ............................................................................ │
00:00:20 v #483 > > │ ........                                                                     │
00:00:20 v #484 > > │                                                                              │
00:00:20 v #485 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:20 v #486 > >
00:00:20 v #487 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:20 v #488 > > inl generate_frame rot =
00:00:20 v #489 > >     inl updates : seq.seq' (int * (f64 * char)) =
00:00:20 v #490 > >         inl get_cube_points' cube : seq.seq' (int * (f64 * char)) =
00:00:20 v #491 > >             get_cube_points cube rot
00:00:20 v #492 > >         inl cubes = get_cubes () |> listm'.box
00:00:20 v #493 > >         backend_switch {
00:00:20 v #494 > >             Fsharp = fun () =>
00:00:20 v #495 > >                 inl get_cube_points' = join get_cube_points'
00:00:20 v #496 > >                 (cubes |> $'Seq.collect !get_cube_points' ') : seq.seq' (int *
00:00:20 v #497 > > (f64 * char))
00:00:20 v #498 > >             Python = fun () =>
00:00:20 v #499 > >                 $'cubes = !cubes '
00:00:20 v #500 > >                 $'get_cube_points = !get_cube_points' '
00:00:20 v #501 > >                 $'[[x for cube in cubes for x in get_cube_points(*cube)]]' :
00:00:20 v #502 > > seq.seq' (int * (f64 * char))
00:00:20 v #503 > >         }
00:00:20 v #504 > >     inl none : _ (f64 * char) = None
00:00:20 v #505 > >     inl width = get_width ()
00:00:20 v #506 > >     inl height = get_height ()
00:00:20 v #507 > >     inl buffer =
00:00:20 v #508 > >         backend_switch {
00:00:20 v #509 > >             Fsharp = fun () =>
00:00:20 v #510 > >                 $'Array.create (!width * !height) !none ' : a int (option (f64 *
00:00:20 v #511 > > char))
00:00:20 v #512 > >             Python = fun () =>
00:00:20 v #513 > >                 $'[[!none for _ in range(!width * !height)]]' : a int (option
00:00:20 v #514 > > (f64 * char))
00:00:20 v #515 > >         }
00:00:20 v #516 > >
00:00:20 v #517 > >     inl fn idx ((ooz : f64), (ch : char)) =
00:00:20 v #518 > >         match buffer |> am'.index idx with
00:00:20 v #519 > >         | Some (prev_ooz, _) when prev_ooz >= ooz => ()
00:00:20 v #520 > >         | _ =>
00:00:20 v #521 > >             inl x = (ooz, ch) |> Some
00:00:20 v #522 > >             backend_switch {
00:00:20 v #523 > >                 Fsharp = fun () =>
00:00:20 v #524 > >                     $'!buffer.[[!idx]] <- !x ' : ()
00:00:20 v #525 > >                 Python = fun () =>
00:00:20 v #526 > >                     $'!buffer[[!idx]] = !x ' : ()
00:00:20 v #527 > >             }
00:00:20 v #528 > >     backend_switch {
00:00:20 v #529 > >         Fsharp = fun () =>
00:00:20 v #530 > >             updates
00:00:20 v #531 > >             |> $'Seq.iter (fun (struct (idx, ooz, ch)) -> !fn idx (ooz, ch))' :
00:00:20 v #532 > > ()
00:00:20 v #533 > >         Python = fun () =>
00:00:20 v #534 > >             $'for (idx, ooz, ch) in !updates: !fn(idx)(ooz, ch)' : ()
00:00:20 v #535 > >     }
00:00:20 v #536 > >
00:00:20 v #537 > >     inl sb = "" |> sm'.string_builder
00:00:20 v #538 > >     inl fn1 row =
00:00:20 v #539 > >         inl fn2 col =
00:00:20 v #540 > >             inl idx = col + row * width
00:00:20 v #541 > >             inl ch =
00:00:20 v #542 > >                 match buffer |> am'.index idx with
00:00:20 v #543 > >                 | Some (_, ch) => ch
00:00:20 v #544 > >                 | None => get_background_char ()
00:00:20 v #545 > >             sb |> sm'.builder_append (ch |> sm'.obj_to_string) |> ignore
00:00:20 v #546 > >
00:00:20 v #547 > >         backend_switch {
00:00:20 v #548 > >             Fsharp = fun () =>
00:00:20 v #549 > >                 $'for col in 0 .. (!width - 1) do !fn2 col' : ()
00:00:20 v #550 > >             Python = fun () =>
00:00:20 v #551 > >                 $'for col in range(!width): !fn2(col)' : ()
00:00:20 v #552 > >         }
00:00:20 v #553 > >         sb |> sm'.builder_append_line |> ignore
00:00:20 v #554 > >
00:00:20 v #555 > >     backend_switch {
00:00:20 v #556 > >         Fsharp = fun () =>
00:00:20 v #557 > >             $'for row in 0 .. (!height - 1) do !fn1 row' : ()
00:00:20 v #558 > >         Python = fun () =>
00:00:20 v #559 > >             $'for row in range(!height): !fn1(row)' : ()
00:00:20 v #560 > >     }
00:00:20 v #561 > >     sb |> sm'.obj_to_string
00:00:20 v #562 > >
00:00:20 v #563 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:20 v #564 > > //// test
00:00:20 v #565 > > ///! fsharp
00:00:20 v #566 > > ///! cuda
00:00:20 v #567 > > ///! rust
00:00:20 v #568 > > ///! typescript
00:00:20 v #569 > > ///! python
00:00:20 v #570 > >
00:00:20 v #571 > > { a = 0.0; b = 0.0; c = 0.0 }
00:00:20 v #572 > > |> generate_frame
00:00:20 v #573 > > |> console.write_line
00:00:27 v #574 > >
00:00:27 v #575 > > ╭─[ 6.29s - return value ]─────────────────────────────────────────────────────╮
00:00:27 v #576 > > │ "                                                                            │
00:00:27 v #577 > > │ .py output (Cuda):                                                           │
00:00:27 v #578 > > │ ............................................................................ │
00:00:27 v #579 > > │ ............................................................................ │
00:00:27 v #580 > > │ ........                                                                     │
00:00:27 v #581 > > │ ............................................................................ │
00:00:27 v #582 > > │ ............................................................................ │
00:00:27 v #583 > > │ ........                                                                     │
00:00:27 v #584 > > │ ............................................................................ │
00:00:27 v #585 > > │ ............................................................................ │
00:00:27 v #586 > > │ ........                                                                     │
00:00:27 v #587 > > │ ............................................................................ │
00:00:27 v #588 > > │ ............................................................................ │
00:00:27 v #589 > > │ ........                                                                     │
00:00:27 v #590 > > │ ............................................................................ │
00:00:27 v #591 > > │ ............................................................................ │
00:00:27 v #592 > > │ ........                                                                     │
00:00:27 v #593 > > │ ............................................................................ │
00:00:27 v #594 > > │ ............................................................................ │
00:00:27 v #595 > > │ ........                                                                     │
00:00:27 v #596 > > │ ............................................................................ │
00:00:27 v #597 > > │ ............................................................................ │
00:00:27 v #598 > > │ ........                                                                     │
00:00:27 v #599 > > │ ............................................................................ │
00:00:27 v #600 > > │ ............................................................................ │
00:00:27 v #601 > > │ ........                                                                     │
00:00:27 v #602 > > │ ............................................................................ │
00:00:27 v #603 > > │ ............................................................................ │
00:00:27 v #604 > > │ ........                                                                     │
00:00:27 v #605 > > │ ............................................................................ │
00:00:27 v #606 > > │ ............................................................................ │
00:00:27 v #607 > > │ ............................................................................ │
00:00:27 v #608 > > │ ........                                                                     │
00:00:27 v #609 > > │ ............................................................................ │
00:00:27 v #610 > > │ ............................................................................ │
00:00:27 v #611 > > │ ........                                                                     │
00:00:27 v #612 > > │ ............................................................................ │
00:00:27 v #613 > > │ ............................................................................ │
00:00:27 v #614 > > │ ........                                                                     │
00:00:27 v #615 > > │ ............................................................................ │
00:00:27 v #616 > > │ ............................................................................ │
00:00:27 v #617 > > │ ........                                                                     │
00:00:27 v #618 > > │ ............................................................................ │
00:00:27 v #619 > > │ ............................................................................ │
00:00:27 v #620 > > │ ........                                                                     │
00:00:27 v #621 > > │ ............................................................................ │
00:00:27 v #622 > > │ ............................................................................ │
00:00:27 v #623 > > │ ........                                                                     │
00:00:27 v #624 > > │ ............................................................................ │
00:00:27 v #625 > > │ ............................................................................ │
00:00:27 v #626 > > │ ........                                                                     │
00:00:27 v #627 > > │ ............................................................................ │
00:00:27 v #628 > > │ ............................................................................ │
00:00:27 v #629 > > │ ........                                                                     │
00:00:27 v #630 > > │ ............................................................................ │
00:00:27 v #631 > > │ ............................................................................ │
00:00:27 v #632 > > │ ........                                                                     │
00:00:27 v #633 > > │                                                                              │
00:00:27 v #634 > > │                                                                              │
00:00:27 v #635 > > │                                                                              │
00:00:27 v #636 > > │ "                                                                            │
00:00:27 v #637 > > │                                                                              │
00:00:27 v #638 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:27 v #639 > >
00:00:27 v #640 > > ╭─[ 6.30s - stdout ]───────────────────────────────────────────────────────────╮
00:00:27 v #641 > > │ .fsx output:                                                                 │
00:00:27 v #642 > > │ ............................................................................ │
00:00:27 v #643 > > │ ............................................................................ │
00:00:27 v #644 > > │ ........                                                                     │
00:00:27 v #645 > > │ ............................................................................ │
00:00:27 v #646 > > │ ............................................................................ │
00:00:27 v #647 > > │ ........                                                                     │
00:00:27 v #648 > > │ ............................................................................ │
00:00:27 v #649 > > │ ............................................................................ │
00:00:27 v #650 > > │ ........                                                                     │
00:00:27 v #651 > > │ ............................................................................ │
00:00:27 v #652 > > │ ............................................................................ │
00:00:27 v #653 > > │ ........                                                                     │
00:00:27 v #654 > > │ ............................................................................ │
00:00:27 v #655 > > │ ............................................................................ │
00:00:27 v #656 > > │ ........                                                                     │
00:00:27 v #657 > > │ ............................................................................ │
00:00:27 v #658 > > │ ............................................................................ │
00:00:27 v #659 > > │ ........                                                                     │
00:00:27 v #660 > > │ ............................................................................ │
00:00:27 v #661 > > │ ............................................................................ │
00:00:27 v #662 > > │ ........                                                                     │
00:00:27 v #663 > > │ ............................................................................ │
00:00:27 v #664 > > │ ............................................................................ │
00:00:27 v #665 > > │ ........                                                                     │
00:00:27 v #666 > > │ ............................................................................ │
00:00:27 v #667 > > │ ............................................................................ │
00:00:27 v #668 > > │ ........                                                                     │
00:00:27 v #669 > > │ ............................................................................ │
00:00:27 v #670 > > │ ............................................................................ │
00:00:27 v #671 > > │ ........                                                                     │
00:00:27 v #672 > > │ ............................................................................ │
00:00:27 v #673 > > │ ............................................................................ │
00:00:27 v #674 > > │ ........                                                                     │
00:00:27 v #675 > > │ ............................................................................ │
00:00:27 v #676 > > │ ............................................................................ │
00:00:27 v #677 > > │ ........                                                                     │
00:00:27 v #678 > > │ ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............... │
00:00:27 v #679 > > │ ............................................................................ │
00:00:27 v #680 > > │ ........                                                                     │
00:00:27 v #681 > > │ ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............... │
00:00:27 v #682 > > │ ............................................................................ │
00:00:27 v #683 > > │ ........                                                                     │
00:00:27 v #684 > > │ ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............... │
00:00:27 v #685 > > │ ............................................................................ │
00:00:27 v #686 > > │ ........                                                                     │
00:00:27 v #687 > > │ ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............... │
00:00:27 v #688 > > │ ............................................................................ │
00:00:27 v #689 > > │ ........                                                                     │
00:00:27 v #690 > > │ ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............... │
00:00:27 v #691 > > │ ............................................................................ │
00:00:27 v #692 > > │ ........                                                                     │
00:00:27 v #693 > > │ ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............... │
00:00:27 v #694 > > │ .....;;;;;;;;;;;;;;;;;\..................................................... │
00:00:27 v #695 > > │ ........                                                                     │
00:00:27 v #696 > > │ ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............... │
00:00:27 v #697 > > │ .....;;;;;;;;;;;;;;;;;\..................................................... │
00:00:27 v #698 > > │ ........                                                                     │
00:00:27 v #699 > > │ ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............... │
00:00:27 v #700 > > │ .....;;;;;;;;;;;;;;;;;\................;;;;;;;;;\........................... │
00:00:27 v #701 > > │ ........                                                                     │
00:00:27 v #702 > > │ ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............... │
00:00:27 v #703 > > │ .....;;;;;;;;;;;;;;;;;\................;;;;;;;;;\........................... │
00:00:27 v #704 > > │ ........                                                                     │
00:00:27 v #705 > > │ ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............... │
00:00:27 v #706 > > │ .....;;;;;;;;;;;;;;;;;\................;;;;;;;;;\........................... │
00:00:27 v #707 > > │ ........                                                                     │
00:00:27 v #708 > > │ ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............... │
00:00:27 v #709 > > │ .....;;;;;;;;;;;;;;;;;\................;;;;;;;;;\........................... │
00:00:27 v #710 > > │ ........                                                                     │
00:00:27 v #711 > > │ ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............... │
00:00:27 v #712 > > │ .....;;;;;;;;;;;;;;;;;\................;;;;;;;;;\........................... │
00:00:27 v #713 > > │ ........                                                                     │
00:00:27 v #714 > > │ ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............... │
00:00:27 v #715 > > │ .....;;;;;;;;;;;;;;;;;\................<<<<<<<<<............................ │
00:00:27 v #716 > > │ ........                                                                     │
00:00:27 v #717 > > │ ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............... │
00:00:27 v #718 > > │ .....;;;;;;;;;;;;;;;;;\..................................................... │
00:00:27 v #719 > > │ ........                                                                     │
00:00:27 v #720 > > │ ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............... │
00:00:27 v #721 > > │ .....<<<<<<<<<<<<<<<<<\..................................................... │
00:00:27 v #722 > > │ ........                                                                     │
00:00:27 v #723 > > │ ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............... │
00:00:27 v #724 > > │ ............................................................................ │
00:00:27 v #725 > > │ ........                                                                     │
00:00:27 v #726 > > │ ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............... │
00:00:27 v #727 > > │ ............................................................................ │
00:00:27 v #728 > > │ ........                                                                     │
00:00:27 v #729 > > │ ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............... │
00:00:27 v #730 > > │ ............................................................................ │
00:00:27 v #731 > > │ ........                                                                     │
00:00:27 v #732 > > │ ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............... │
00:00:27 v #733 > > │ ............................................................................ │
00:00:27 v #734 > > │ ........                                                                     │
00:00:27 v #735 > > │ ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............... │
00:00:27 v #736 > > │ ............................................................................ │
00:00:27 v #737 > > │ ........                                                                     │
00:00:27 v #738 > > │ ....................<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<................ │
00:00:27 v #739 > > │ ............................................................................ │
00:00:27 v #740 > > │ ........                                                                     │
00:00:27 v #741 > > │ ............................................................................ │
00:00:27 v #742 > > │ ............................................................................ │
00:00:27 v #743 > > │ ........                                                                     │
00:00:27 v #744 > > │ ............................................................................ │
00:00:27 v #745 > > │ ............................................................................ │
00:00:27 v #746 > > │ ........                                                                     │
00:00:27 v #747 > > │ ............................................................................ │
00:00:27 v #748 > > │ ............................................................................ │
00:00:27 v #749 > > │ ........                                                                     │
00:00:27 v #750 > > │ ............................................................................ │
00:00:27 v #751 > > │ ............................................................................ │
00:00:27 v #752 > > │ ........                                                                     │
00:00:27 v #753 > > │ ............................................................................ │
00:00:27 v #754 > > │ ............................................................................ │
00:00:27 v #755 > > │ ........                                                                     │
00:00:27 v #756 > > │ ............................................................................ │
00:00:27 v #757 > > │ ............................................................................ │
00:00:27 v #758 > > │ ........                                                                     │
00:00:27 v #759 > > │ ............................................................................ │
00:00:27 v #760 > > │ ............................................................................ │
00:00:27 v #761 > > │ ........                                                                     │
00:00:27 v #762 > > │ ............................................................................ │
00:00:27 v #763 > > │ ............................................................................ │
00:00:27 v #764 > > │ ........                                                                     │
00:00:27 v #765 > > │ ............................................................................ │
00:00:27 v #766 > > │ ............................................................................ │
00:00:27 v #767 > > │ ........                                                                     │
00:00:27 v #768 > > │ ............................................................................ │
00:00:27 v #769 > > │ ............................................................................ │
00:00:27 v #770 > > │ ........                                                                     │
00:00:27 v #771 > > │ ............................................................................ │
00:00:27 v #772 > > │ ............................................................................ │
00:00:27 v #773 > > │ ........                                                                     │
00:00:27 v #774 > > │                                                                              │
00:00:27 v #775 > > │                                                                              │
00:00:27 v #776 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:27 v #777 > >
00:00:27 v #778 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:27 v #779 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:27 v #780 > > │ ### main_loop                                                                │
00:00:27 v #781 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:27 v #782 > >
00:00:27 v #783 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:27 v #784 > > let rec mainLoop rot = async {
00:00:27 v #785 > >     let frame = generateFrame rot
00:00:27 v #786 > >     // Console.SetCursorPosition(0, 0)
00:00:27 v #787 > >     Console.Write(frame)
00:00:27 v #788 > >     let rot' = { a = rot.a + 0.05; b = rot.b + 0.05; c = rot.c + 0.01 }
00:00:27 v #789 > >     do! Async.Sleep 16
00:00:27 v #790 > >     return! mainLoop rot'
00:00:27 v #791 > > }
00:00:27 v #792 > >
00:00:27 v #793 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:27 v #794 > > let rec main_loop max i rot = async.new_async_unit fun () =>
00:00:27 v #795 > >     inl rot = join rot
00:00:27 v #796 > >     inl frame = rot |> generate_frame
00:00:27 v #797 > >     if max < 0 then
00:00:27 v #798 > >         run_target function
00:00:27 v #799 > >             | Fsharp (Native) => fun () => $'System.Console.SetCursorPosition
00:00:27 v #800 > > (0, 0)'
00:00:27 v #801 > >             | Rust _ => fun () =>
00:00:27 v #802 > >                 open rust.rust_operators
00:00:27 v #803 > >                 !\($'$"print\!(\\\"\\\\x1B[[1;1H\\\")"')
00:00:27 v #804 > >             | TypeScript _ => fun () =>
00:00:27 v #805 > >                 open typescript_operators
00:00:27 v #806 > >                 !\($'$"process.stdout.write(\'\\\\u001B[[1;1H\')"')
00:00:27 v #807 > >             | Python _ => fun () =>
00:00:27 v #808 > >                 open python_operators
00:00:27 v #809 > >                 // global "import sys"
00:00:27 v #810 > >                 !\($'$"sys.stdout.write(\\\"\\\\033[[1;1H\\\")"')
00:00:27 v #811 > >             | _ => fun () => ()
00:00:27 v #812 > >     frame |> console.write_line
00:00:27 v #813 > >     async.sleep 1 |> async.do
00:00:27 v #814 > >     if max > 0 && i >= max
00:00:27 v #815 > >     then ()
00:00:27 v #816 > >     else
00:00:27 v #817 > >         { a = rot.a + 0.05; b = rot.b + 0.05; c = rot.c + 0.01 }
00:00:27 v #818 > >         |> main_loop max (i + 1)
00:00:27 v #819 > >         |> async.return_await'
00:00:27 v #820 > >
00:00:27 v #821 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:27 v #822 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:27 v #823 > > │ ### main                                                                     │
00:00:27 v #824 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:27 v #825 > >
00:00:27 v #826 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:27 v #827 > > // [[<EntryPoint>]]
00:00:27 v #828 > > let main argv =
00:00:27 v #829 > >     // Console.CursorVisible <- false
00:00:27 v #830 > >     Async.StartImmediate (mainLoop { a = 0.0; b = 0.0; c = 0.0 })
00:00:27 v #831 > >     System.Threading.Thread.Sleep(1000)
00:00:27 v #832 > >
00:00:27 v #833 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:27 v #834 > > // main [[||]]
00:00:27 v #835 > >
00:00:27 v #836 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:27 v #837 > > inl main (_args : array_base string) =
00:00:27 v #838 > >     inl console =
00:00:27 v #839 > >         run_target function
00:00:27 v #840 > >         | Fsharp (Wasm) => fun () => false
00:00:27 v #841 > >         | _ => fun () =>
00:00:27 v #842 > >             ((join "VSCODE_PID") |> env.get_environment_variable |> sm'.length
00:00:27 v #843 > > |> (=) 0i32)
00:00:27 v #844 > >                 && ("AUTOMATION" |> env.get_environment_variable |> sm'.length
00:00:27 v #845 > > |> (=) 0i32)
00:00:27 v #846 > >     if console then
00:00:27 v #847 > >         run_target function
00:00:27 v #848 > >             | Fsharp (Native) => fun () => $'System.Console.CursorVisible <-
00:00:27 v #849 > > false'
00:00:27 v #850 > >             | Rust _ => fun () =>
00:00:27 v #851 > >                 open rust.rust_operators
00:00:27 v #852 > >                 !\($'$"print\!(\\\"\\\\x1B[[?25l\\\")"')
00:00:27 v #853 > >             | TypeScript _ => fun () =>
00:00:27 v #854 > >                 open typescript_operators
00:00:27 v #855 > >                 !\($'$"process.stdout.write(\'\\\\u001B[[?25l\')"')
00:00:27 v #856 > >             | Python _ => fun () =>
00:00:27 v #857 > >                 open python_operators
00:00:27 v #858 > >                 python.import_all "sys"
00:00:27 v #859 > >                 !\($'$"sys.stdout.write(\\\"\\\\033[[?25l\\\")"')
00:00:27 v #860 > >             | _ => fun () => ()
00:00:27 v #861 > >     main_loop (if console then -1i32 else 50) 1i32 { a = 0.0; b = 0.0; c = 0.0 }
00:00:27 v #862 > >     |> fun x =>
00:00:27 v #863 > >         run_target_args' x function
00:00:27 v #864 > >         | Fsharp (Wasm)
00:00:27 v #865 > >         | TypeScript _ => fun x =>
00:00:27 v #866 > >             x
00:00:27 v #867 > >             |> async.start_child
00:00:27 v #868 > >             |> ignore
00:00:27 v #869 > >         | Rust _ => fun x =>
00:00:27 v #870 > >             x
00:00:27 v #871 > >             |> async.start_child
00:00:27 v #872 > >             |> ignore
00:00:27 v #873 > >         | Python _ => fun x =>
00:00:27 v #874 > >             x
00:00:27 v #875 > >             |> async.start_immediate
00:00:27 v #876 > >             threading.sleep' 2000
00:00:27 v #877 > >         | _ => fun x =>
00:00:27 v #878 > >             x
00:00:27 v #879 > >             |> async.run_synchronously
00:00:27 v #880 > >
00:00:27 v #881 > > inl main () =
00:00:27 v #882 > >     $'let main_ = !main '
00:00:27 v #883 > >     $'#if \!FABLE_COMPILER_RUST'
00:00:27 v #884 > >     $'main_ [[||]]' : ()
00:00:27 v #885 > >     $'#else'
00:00:27 v #886 > >     $'let main args = main_ [[||]]; 0' : ()
00:00:27 v #887 > >     $'#endif' : ()
00:00:29 v #888 > >
00:00:30 v #889 > > ╭─[ 2.34s - stdout ]───────────────────────────────────────────────────────────╮
00:00:30 v #890 > > │ ............................................................................ │
00:00:30 v #891 > > │ ............................................................................ │
00:00:30 v #892 > > │ ........                                                                     │
00:00:30 v #893 > > │ ............................................................................ │
00:00:30 v #894 > > │ ............................................................................ │
00:00:30 v #895 > > │ ........                                                                     │
00:00:30 v #896 > > │ ............................................................................ │
00:00:30 v #897 > > │ ............................................................................ │
00:00:30 v #898 > > │ ........                                                                     │
00:00:30 v #899 > > │ ............................................................................ │
00:00:30 v #900 > > │ ............................................................................ │
00:00:30 v #901 > > │ ........                                                                     │
00:00:30 v #902 > > │ ............................................................................ │
00:00:30 v #903 > > │ ............................................................................ │
00:00:30 v #904 > > │ ........                                                                     │
00:00:30 v #905 > > │ ............................................................................ │
00:00:30 v #906 > > │ ............................................................................ │
00:00:30 v #907 > > │ ........                                                                     │
00:00:30 v #908 > > │ ............................................................................ │
00:00:30 v #909 > > │ ............................................................................ │
00:00:30 v #910 > > │ ........                                                                     │
00:00:30 v #911 > > │ ............................................................................ │
00:00:30 v #912 > > │ ............................................................................ │
00:00:30 v #913 > > │ ........                                                                     │
00:00:30 v #914 > > │ ............................................................................ │
00:00:30 v #915 > > │ ............................................................................ │
00:00:30 v #916 > > │ ........                                                                     │
00:00:30 v #917 > > │ ............................................................................ │
00:00:30 v #918 > > │ ............................................................................ │
00:00:30 v #919 > > │ ........                                                                     │
00:00:30 v #920 > > │ ............................................................................ │
00:00:30 v #921 > > │ ............................................................................ │
00:00:30 v #922 > > │ ........                                                                     │
00:00:30 v #923 > > │ ............................................................................ │
00:00:30 v #924 > > │ ............................................................................ │
00:00:30 v #925 > > │ ........                                                                     │
00:00:30 v #926 > > │ ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............... │
00:00:30 v #927 > > │ ............................................................................ │
00:00:30 v #928 > > │ ........                                                                     │
00:00:30 v #929 > > │ ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............... │
00:00:30 v #930 > > │ ............................................................................ │
00:00:30 v #931 > > │ ........                                                                     │
00:00:30 v #932 > > │ ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............... │
00:00:30 v #933 > > │ ............................................................................ │
00:00:30 v #934 > > │ ........                                                                     │
00:00:30 v #935 > > │ ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............... │
00:00:30 v #936 > > │ ............................................................................ │
00:00:30 v #937 > > │ ........                                                                     │
00:00:30 v #938 > > │ ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............... │
00:00:30 v #939 > > │ ............................................................................ │
00:00:30 v #940 > > │ ........                                                                     │
00:00:30 v #941 > > │ ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............... │
00:00:30 v #942 > > │ .....;;;;;;;;;;;;;;;;;\..................................................... │
00:00:30 v #943 > > │ ........                                                                     │
00:00:30 v #944 > > │ ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............... │
00:00:30 v #945 > > │ .....;;;;;;;;;;;;;;;;;\..................................................... │
00:00:30 v #946 > > │ ........                                                                     │
00:00:30 v #947 > > │ ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............... │
00:00:30 v #948 > > │ .....;;;;;;;;;;;;;;;;;\................;;;;;;;;;\........................... │
00:00:30 v #949 > > │ ........                                                                     │
00:00:30 v #950 > > │ ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............... │
00:00:30 v #951 > > │ .....;;;;;;;;;;;;;;;;;\................;;;;;;;;;\........................... │
00:00:30 v #952 > > │ ........                                                                     │
00:00:30 v #953 > > │ ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............... │
00:00:30 v #954 > > │ .....;;;;;;;;;;;;;;;;;\................;;;;;;;;;\........................... │
00:00:30 v #955 > > │ ........                                                                     │
00:00:30 v #956 > > │ ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............... │
00:00:30 v #957 > > │ .....;;;;;;;;;;;;;;;;;\................;;;;;;;;;\........................... │
00:00:30 v #958 > > │ ........                                                                     │
00:00:30 v #959 > > │ ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............... │
00:00:30 v #960 > > │ .....;;;;;;;;;;;;;;;;;\................;;;;;;;;;\........................... │
00:00:30 v #961 > > │ ........                                                                     │
00:00:30 v #962 > > │ ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............... │
00:00:30 v #963 > > │ .....;;;;;;;;;;;;;;;;;\................<<<<<<<<<............................ │
00:00:30 v #964 > > │ ........                                                                     │
00:00:30 v #965 > > │ ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............... │
00:00:30 v #966 > > │ .....;;;;;;;;;;;;;;;;;\..................................................... │
00:00:30 v #967 > > │ ........                                                                     │
00:00:30 v #968 > > │ ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............... │
00:00:30 v #969 > > │ .....<<<<<<<<<<<<<<<<<\..................................................... │
00:00:30 v #970 > > │ ........                                                                     │
00:00:30 v #971 > > │ ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............... │
00:00:30 v #972 > > │ ............................................................................ │
00:00:30 v #973 > > │ ........                                                                     │
00:00:30 v #974 > > │ ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............... │
00:00:30 v #975 > > │ ............................................................................ │
00:00:30 v #976 > > │ ........                                                                     │
00:00:30 v #977 > > │ ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............... │
00:00:30 v #978 > > │ ............................................................................ │
00:00:30 v #979 > > │ ........                                                                     │
00:00:30 v #980 > > │ ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............... │
00:00:30 v #981 > > │ ............................................................................ │
00:00:30 v #982 > > │ ........                                                                     │
00:00:30 v #983 > > │ ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............... │
00:00:30 v #984 > > │ ............................................................................ │
00:00:30 v #985 > > │ ........                                                                     │
00:00:30 v #986 > > │ ....................<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<................ │
00:00:30 v #987 > > │ ............................................................................ │
00:00:30 v #988 > > │ ........                                                                     │
00:00:30 v #989 > > │ ............................................................................ │
00:00:30 v #990 > > │ ............................................................................ │
00:00:30 v #991 > > │ ........                                                                     │
00:00:30 v #992 > > │ ............................................................................ │
00:00:30 v #993 > > │ ............................................................................ │
00:00:30 v #994 > > │ ........                                                                     │
00:00:30 v #995 > > │ ............................................................................ │
00:00:30 v #996 > > │ ............................................................................ │
00:00:30 v #997 > > │ ........                                                                     │
00:00:30 v #998 > > │ ............................................................................ │
00:00:30 v #999 > > │ ............................................................................ │
00:00:30 v #1000 > > │ ........                                                                     │
00:00:30 v #1001 > > │ ............................................................................ │
00:00:30 v #1002 > > │ ............................................................................ │
00:00:30 v #1003 > > │ ........                                                                     │
00:00:30 v #1004 > > │ ............................................................................ │
00:00:30 v #1005 > > │ ............................................................................ │
00:00:30 v #1006 > > │ ........                                                                     │
00:00:30 v #1007 > > │ ............................................................................ │
00:00:30 v #1008 > > │ ............................................................................ │
00:00:30 v #1009 > > │ ........                                                                     │
00:00:30 v #1010 > > │ ............................................................................ │
00:00:30 v #1011 > > │ ............................................................................ │
00:00:30 v #1012 > > │ ........                                                                     │
00:00:30 v #1013 > > │ ............................................................................ │
00:00:30 v #1014 > > │ ............................................................................ │
00:00:30 v #1015 > > │ ........                                                                     │
00:00:30 v #1016 > > │ ............................................................................ │
00:00:30 v #1017 > > │ ............................................................................ │
00:00:30 v #1018 > > │ ........                                                                     │
00:00:30 v #1019 > > │ ............................................................................ │
00:00:30 v #1020 > > │ ............................................................................ │
00:00:30 v #1021 > > │ ........                                                                     │
00:00:30 v #1022 > > │                                                                              │
00:00:30 v #1023 > > │ ............................................................................ │
00:00:30 v #1024 > > │ ............................................................................ │
00:00:30 v #1025 > > │ ........                                                                     │
00:00:30 v #1026 > > │ ............................................................................ │
00:00:30 v #1027 > > │ ............................................................................ │
00:00:30 v #1028 > > │ ........                                                                     │
00:00:30 v #1029 > > │ ............................................................................ │
00:00:30 v #1030 > > │ ............................................................................ │
00:00:30 v #1031 > > │ ........                                                                     │
00:00:30 v #1032 > > │ ............................................................................ │
00:00:30 v #1033 > > │ ............................................................................ │
00:00:30 v #1034 > > │ ........                                                                     │
00:00:30 v #1035 > > │ ............................................................................ │
00:00:30 v #1036 > > │ ............................................................................ │
00:00:30 v #1037 > > │ ........                                                                     │
00:00:30 v #1038 > > │ ............................................................................ │
00:00:30 v #1039 > > │ ............................................................................ │
00:00:30 v #1040 > > │ ........                                                                     │
00:00:30 v #1041 > > │ ............................................................................ │
00:00:30 v #1042 > > │ ............................................................................ │
00:00:30 v #1043 > > │ ........                                                                     │
00:00:30 v #1044 > > │ ............................................................................ │
00:00:30 v #1045 > > │ ............................................................................ │
00:00:30 v #1046 > > │ ........                                                                     │
00:00:30 v #1047 > > │ ............................................................................ │
00:00:30 v #1048 > > │ ............................................................................ │
00:00:30 v #1049 > > │ ........                                                                     │
00:00:30 v #1050 > > │ ............................................................................ │
00:00:30 v #1051 > > │ ............................................................................ │
00:00:30 v #1052 > > │ ........                                                                     │
00:00:30 v #1053 > > │ ............................................................................ │
00:00:30 v #1054 > > │ ............................................................................ │
00:00:30 v #1055 > > │ ........                                                                     │
00:00:30 v #1056 > > │ ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............... │
00:00:30 v #1057 > > │ ............................................................................ │
00:00:30 v #1058 > > │ ........                                                                     │
00:00:30 v #1059 > > │ ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............... │
00:00:30 v #1060 > > │ ............................................................................ │
00:00:30 v #1061 > > │ ........                                                                     │
00:00:30 v #1062 > > │ ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............... │
00:00:30 v #1063 > > │ ............................................................................ │
00:00:30 v #1064 > > │ ........                                                                     │
00:00:30 v #1065 > > │ ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............... │
00:00:30 v #1066 > > │ ............................................................................ │
00:00:30 v #1067 > > │ ........                                                                     │
00:00:30 v #1068 > > │ ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............... │
00:00:30 v #1069 > > │ ............................................................................ │
00:00:30 v #1070 > > │ ........                                                                     │
00:00:30 v #1071 > > │ ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............... │
00:00:30 v #1072 > > │ ............................................................................ │
00:00:30 v #1073 > > │ ........                                                                     │
00:00:30 v #1074 > > │ ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............... │
00:00:30 v #1075 > > │ .....;;;;;;;;;;;;;;;;;;\.................................................... │
00:00:30 v #1076 > > │ ........                                                                     │
00:00:30 v #1077 > > │ ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............... │
00:00:30 v #1078 > > │ .....;;;;;;;;;;;;;;;;;;\.................................................... │
00:00:30 v #1079 > > │ ........                                                                     │
00:00:30 v #1080 > > │ ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............... │
00:00:30 v #1081 > > │ .....;;;;;;;;;;;;;;;;;;;...............;;;;;;;;;;........................... │
00:00:30 v #1082 > > │ ........                                                                     │
00:00:30 v #1083 > > │ ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............... │
00:00:30 v #1084 > > │ .....;;;;;;;;;;;;;;;;;;;...............;;;;;;;;;;........................... │
00:00:30 v #1085 > > │ ........                                                                     │
00:00:30 v #1086 > > │ ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............... │
00:00:30 v #1087 > > │ .....;;;;;;;;;;;;;;;;;;;...............;;;;;;;;;;........................... │
00:00:30 v #1088 > > │ ........                                                                     │
00:00:30 v #1089 > > │ ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............... │
00:00:30 v #1090 > > │ .....;;;;;;;;;;;;;;;;;;;...............;;;;;;;;;;........................... │
00:00:30 v #1091 > > │ ........                                                                     │
00:00:30 v #1092 > > │ ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............... │
00:00:30 v #1093 > > │ .....;;;;;;;;;;;;;;;;;;;................;;;;;<<<<........................... │
00:00:30 v #1094 > > │ ........                                                                     │
00:00:30 v #1095 > > │ ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............... │
00:00:30 v #1096 > > │ .....;;;;;;;;;;;;;;;;;;;................<<<<<............................... │
00:00:30 v #1097 > > │ ........                                                                     │
00:00:30 v #1098 > > │ ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............... │
00:00:30 v #1099 > > │ .....;;;;;;;;;;;;;;;;;;;.................................................... │
00:00:30 v #1100 > > │ ........                                                                     │
00:00:30 v #1101 > > │ ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............... │
00:00:30 v #1102 > > │ .....<<<<<<<<<<<<<<<<<<<.................................................... │
00:00:30 v #1103 > > │ ........                                                                     │
00:00:30 v #1104 > > │ ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.............. │
00:00:30 v #1105 > > │ ............................................................................ │
00:00:30 v #1106 > > │ ........                                                                     │
00:00:30 v #1107 > > │ ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.............. │
00:00:30 v #1108 > > │ ............................................................................ │
00:00:30 v #1109 > > │ ........                                                                     │
00:00:30 v #1110 > > │ ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.............. │
00:00:30 v #1111 > > │ ............................................................................ │
00:00:30 v #1112 > > │ ........                                                                     │
00:00:30 v #1113 > > │ ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.............. │
00:00:30 v #1114 > > │ ............................................................................ │
00:00:30 v #1115 > > │ ........                                                                     │
00:00:30 v #1116 > > │ ....................<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\.............. │
00:00:30 v #1117 > > │ ............................................................................ │
00:00:30 v #1118 > > │ ........                                                                     │
00:00:30 v #1119 > > │ ............................................................................ │
00:00:30 v #1120 > > │ ............................................................................ │
00:00:30 v #1121 > > │ ........                                                                     │
00:00:30 v #1122 > > │ ............................................................................ │
00:00:30 v #1123 > > │ ............................................................................ │
00:00:30 v #1124 > > │ ........                                                                     │
00:00:30 v #1125 > > │ ............................................................................ │
00:00:30 v #1126 > > │ ............................................................................ │
00:00:30 v #1127 > > │ ........                                                                     │
00:00:30 v #1128 > > │ ............................................................................ │
00:00:30 v #1129 > > │ ............................................................................ │
00:00:30 v #1130 > > │ ........                                                                     │
00:00:30 v #1131 > > │ ............................................................................ │
00:00:30 v #1132 > > │ ............................................................................ │
00:00:30 v #1133 > > │ ........                                                                     │
00:00:30 v #1134 > > │ ............................................................................ │
00:00:30 v #1135 > > │ ............................................................................ │
00:00:30 v #1136 > > │ ........                                                                     │
00:00:30 v #1137 > > │ ............................................................................ │
00:00:30 v #1138 > > │ ............................................................................ │
00:00:30 v #1139 > > │ ........                                                                     │
00:00:30 v #1140 > > │ ............................................................................ │
00:00:30 v #1141 > > │ ............................................................................ │
00:00:30 v #1142 > > │ ........                                                                     │
00:00:30 v #1143 > > │ ............................................................................ │
00:00:30 v #1144 > > │ ............................................................................ │
00:00:30 v #1145 > > │ ........                                                                     │
00:00:30 v #1146 > > │ ............................................................................ │
00:00:30 v #1147 > > │ ............................................................................ │
00:00:30 v #1148 > > │ ........                                                                     │
00:00:30 v #1149 > > │ ............................................................................ │
00:00:30 v #1150 > > │ ............................................................................ │
00:00:30 v #1151 > > │ ........                                                                     │
00:00:30 v #1152 > > │ ............................................................................ │
00:00:30 v #1153 > > │ ............................................................................ │
00:00:30 v #1154 > > │ ........                                                                     │
00:00:30 v #1155 > > │                                                                              │
00:00:30 v #1156 > > │ ............................................................................ │
00:00:30 v #1157 > > │ ............................................................................ │
00:00:30 v #1158 > > │ ........                                                                     │
00:00:30 v #1159 > > │ ............................................................................ │
00:00:30 v #1160 > > │ ............................................................................ │
00:00:30 v #1161 > > │ ........                                                                     │
00:00:30 v #1162 > > │ ............................................................................ │
00:00:30 v #1163 > > │ ............................................................................ │
00:00:30 v #1164 > > │ ........                                                                     │
00:00:30 v #1165 > > │ ............................................................................ │
00:00:30 v #1166 > > │ ............................................................................ │
00:00:30 v #1167 > > │ ........                                                                     │
00:00:30 v #1168 > > │ ............................................................................ │
00:00:30 v #1169 > > │ ............................................................................ │
00:00:30 v #1170 > > │ ........                                                                     │
00:00:30 v #1171 > > │ ............................................................................ │
00:00:30 v #1172 > > │ ............................................................................ │
00:00:30 v #1173 > > │ ........                                                                     │
00:00:30 v #1174 > > │ ............................................................................ │
00:00:30 v #1175 > > │ ............................................................................ │
00:00:30 v #1176 > > │ ........                                                                     │
00:00:30 v #1177 > > │ ............................................................................ │
00:00:30 v #1178 > > │ ............................................................................ │
00:00:30 v #1179 > > │ ........                                                                     │
00:00:30 v #1180 > > │ ............................................................................ │
00:00:30 v #1181 > > │ ............................................................................ │
00:00:30 v #1182 > > │ ........                                                                     │
00:00:30 v #1183 > > │ ............................................................................ │
00:00:30 v #1184 > > │ ............................................................................ │
00:00:30 v #1185 > > │ ........                                                                     │
00:00:30 v #1186 > > │ ............................................................................ │
00:00:30 v #1187 > > │ ............................................................................ │
00:00:30 v #1188 > > │ ........                                                                     │
00:00:30 v #1189 > > │ .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............... │
00:00:30 v #1190 > > │ ............................................................................ │
00:00:30 v #1191 > > │ ........                                                                     │
00:00:30 v #1192 > > │ .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............... │
00:00:30 v #1193 > > │ ............................................................................ │
00:00:30 v #1194 > > │ ........                                                                     │
00:00:30 v #1195 > > │ .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............... │
00:00:30 v #1196 > > │ ............................................................................ │
00:00:30 v #1197 > > │ ........                                                                     │
00:00:30 v #1198 > > │ .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............... │
00:00:30 v #1199 > > │ ............................................................................ │
00:00:30 v #1200 > > │ ........                                                                     │
00:00:30 v #1201 > > │ .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............... │
00:00:30 v #1202 > > │ ............................................................................ │
00:00:30 v #1203 > > │ ........                                                                     │
00:00:30 v #1204 > > │ .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............... │
00:00:30 v #1205 > > │ ............................................................................ │
00:00:30 v #1206 > > │ ........                                                                     │
00:00:30 v #1207 > > │ .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............... │
00:00:30 v #1208 > > │ .....;;;;;;;;;;;;;;;;;;;.................................................... │
00:00:30 v #1209 > > │ ........                                                                     │
00:00:30 v #1210 > > │ .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.............. │
00:00:30 v #1211 > > │ .....;;;;;;;;;;;;;;;;;;;.................................................... │
00:00:30 v #1212 > > │ ........                                                                     │
00:00:30 v #1213 > > │ .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.............. │
00:00:30 v #1214 > > │ .....;;;;;;;;;;;;;;;;;;;...............>;;;;;;;;;........................... │
00:00:30 v #1215 > > │ ........                                                                     │
00:00:30 v #1216 > > │ .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.............. │
00:00:30 v #1217 > > │ .....;;;;;;;;;;;;;;;;;;;.............../;;;;;;;;;........................... │
00:00:30 v #1218 > > │ ........                                                                     │
00:00:30 v #1219 > > │ .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.............. │
00:00:30 v #1220 > > │ .....;;;;;;;;;;;;;;;;;;;.............../;;;;;;;;;........................... │
00:00:30 v #1221 > > │ ........                                                                     │
00:00:30 v #1222 > > │ .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.............. │
00:00:30 v #1223 > > │ .....;;;;;;;;;;;;;;;;;;;.............../;;;;;;;;;........................... │
00:00:30 v #1224 > > │ ........                                                                     │
00:00:30 v #1225 > > │ .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.............. │
00:00:30 v #1226 > > │ .....;;;;;;;;;;;;;;;;;;;.............../<<<<<<<<<........................... │
00:00:30 v #1227 > > │ ........                                                                     │
00:00:30 v #1228 > > │ .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.............. │
00:00:30 v #1229 > > │ ......;;;;;;;;;;;;;;;;;;...............<<<<<<<<<............................ │
00:00:30 v #1230 > > │ ........                                                                     │
00:00:30 v #1231 > > │ .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.............. │
00:00:30 v #1232 > > │ ......;;;;;;;;;;<<<<<<<<.................................................... │
00:00:30 v #1233 > > │ ........                                                                     │
00:00:30 v #1234 > > │ .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.............. │
00:00:30 v #1235 > > │ ......<<<<<<<<<<............................................................ │
00:00:30 v #1236 > > │ ........                                                                     │
00:00:30 v #1237 > > │ .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............. │
00:00:30 v #1238 > > │ ............................................................................ │
00:00:30 v #1239 > > │ ........                                                                     │
00:00:30 v #1240 > > │ .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............. │
00:00:30 v #1241 > > │ ............................................................................ │
00:00:30 v #1242 > > │ ........                                                                     │
00:00:30 v #1243 > > │ .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............. │
00:00:30 v #1244 > > │ ............................................................................ │
00:00:30 v #1245 > > │ ........                                                                     │
00:00:30 v #1246 > > │ .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<\............. │
00:00:30 v #1247 > > │ ............................................................................ │
00:00:30 v #1248 > > │ ........                                                                     │
00:00:30 v #1249 > > │ .....................<<<<<<<<<<<<<<<<<<<<<<<<<<<<........................... │
00:00:30 v #1250 > > │ ............................................................................ │
00:00:30 v #1251 > > │ ........                                                                     │
00:00:30 v #1252 > > │ ............................................................................ │
00:00:30 v #1253 > > │ ............................................................................ │
00:00:30 v #1254 > > │ ........                                                                     │
00:00:30 v #1255 > > │ ............................................................................ │
00:00:30 v #1256 > > │ ............................................................................ │
00:00:30 v #1257 > > │ ........                                                                     │
00:00:30 v #1258 > > │ ............................................................................ │
00:00:30 v #1259 > > │ ............................................................................ │
00:00:30 v #1260 > > │ ........                                                                     │
00:00:30 v #1261 > > │ ............................................................................ │
00:00:30 v #1262 > > │ ............................................................................ │
00:00:30 v #1263 > > │ ........                                                                     │
00:00:30 v #1264 > > │ ............................................................................ │
00:00:30 v #1265 > > │ ............................................................................ │
00:00:30 v #1266 > > │ ........                                                                     │
00:00:30 v #1267 > > │ ............................................................................ │
00:00:30 v #1268 > > │ ............................................................................ │
00:00:30 v #1269 > > │ ........                                                                     │
00:00:30 v #1270 > > │ ............................................................................ │
00:00:30 v #1271 > > │ ............................................................................ │
00:00:30 v #1272 > > │ ........                                                                     │
00:00:30 v #1273 > > │ ............................................................................ │
00:00:30 v #1274 > > │ ............................................................................ │
00:00:30 v #1275 > > │ ........                                                                     │
00:00:30 v #1276 > > │ ............................................................................ │
00:00:30 v #1277 > > │ ............................................................................ │
00:00:30 v #1278 > > │ ........                                                                     │
00:00:30 v #1279 > > │ ............................................................................ │
00:00:30 v #1280 > > │ ............................................................................ │
00:00:30 v #1281 > > │ ........                                                                     │
00:00:30 v #1282 > > │ ............................................................................ │
00:00:30 v #1283 > > │ ............................................................................ │
00:00:30 v #1284 > > │ ........                                                                     │
00:00:30 v #1285 > > │ ............................................................................ │
00:00:30 v #1286 > > │ ............................................................................ │
00:00:30 v #1287 > > │ ........                                                                     │
00:00:30 v #1288 > > │                                                                              │
00:00:30 v #1289 > > │ ............................................................................ │
00:00:30 v #1290 > > │ ............................................................................ │
00:00:30 v #1291 > > │ ........                                                                     │
00:00:30 v #1292 > > │ ............................................................................ │
00:00:30 v #1293 > > │ ............................................................................ │
00:00:30 v #1294 > > │ ........                                                                     │
00:00:30 v #1295 > > │ ............................................................................ │
00:00:30 v #1296 > > │ ............................................................................ │
00:00:30 v #1297 > > │ ........                                                                     │
00:00:30 v #1298 > > │ ............................................................................ │
00:00:30 v #1299 > > │ ............................................................................ │
00:00:30 v #1300 > > │ ........                                                                     │
00:00:30 v #1301 > > │ ............................................................................ │
00:00:30 v #1302 > > │ ............................................................................ │
00:00:30 v #1303 > > │ ........                                                                     │
00:00:30 v #1304 > > │ ............................................................................ │
00:00:30 v #1305 > > │ ............................................................................ │
00:00:30 v #1306 > > │ ........                                                                     │
00:00:30 v #1307 > > │ ............................................................................ │
00:00:30 v #1308 > > │ ............................................................................ │
00:00:30 v #1309 > > │ ........                                                                     │
00:00:30 v #1310 > > │ ............................................................................ │
00:00:30 v #1311 > > │ ............................................................................ │
00:00:30 v #1312 > > │ ........                                                                     │
00:00:30 v #1313 > > │ ............................................................................ │
00:00:30 v #1314 > > │ ............................................................................ │
00:00:30 v #1315 > > │ ........                                                                     │
00:00:30 v #1316 > > │ ............................................................................ │
00:00:30 v #1317 > > │ ............................................................................ │
00:00:30 v #1318 > > │ ........                                                                     │
00:00:30 v #1319 > > │ ......................;;;;;;;;;;;........................................... │
00:00:30 v #1320 > > │ ............................................................................ │
00:00:30 v #1321 > > │ ........                                                                     │
00:00:30 v #1322 > > │ ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............... │
00:00:30 v #1323 > > │ ............................................................................ │
00:00:30 v #1324 > > │ ........                                                                     │
00:00:30 v #1325 > > │ ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............... │
00:00:30 v #1326 > > │ ............................................................................ │
00:00:30 v #1327 > > │ ........                                                                     │
00:00:30 v #1328 > > │ ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............... │
00:00:30 v #1329 > > │ ............................................................................ │
00:00:30 v #1330 > > │ ........                                                                     │
00:00:30 v #1331 > > │ ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............... │
00:00:30 v #1332 > > │ ............................................................................ │
00:00:30 v #1333 > > │ ........                                                                     │
00:00:30 v #1334 > > │ ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............... │
00:00:30 v #1335 > > │ ............................................................................ │
00:00:30 v #1336 > > │ ........                                                                     │
00:00:30 v #1337 > > │ ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.............. │
00:00:30 v #1338 > > │ ..................;;;;;;.................................................... │
00:00:30 v #1339 > > │ ........                                                                     │
00:00:30 v #1340 > > │ ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.............. │
00:00:30 v #1341 > > │ .....>;;;;;;;;;;;;;;;;;;.................................................... │
00:00:30 v #1342 > > │ ........                                                                     │
00:00:30 v #1343 > > │ ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.............. │
00:00:30 v #1344 > > │ ...../;;;;;;;;;;;;;;;;;;.................................................... │
00:00:30 v #1345 > > │ ........                                                                     │
00:00:30 v #1346 > > │ ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.............. │
00:00:30 v #1347 > > │ ...../;;;;;;;;;;;;;;;;;;...............>;;;;;;;;;........................... │
00:00:30 v #1348 > > │ ........                                                                     │
00:00:30 v #1349 > > │ ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.............. │
00:00:30 v #1350 > > │ ...../;;;;;;;;;;;;;;;;;;.............../;;;;;;;;;........................... │
00:00:30 v #1351 > > │ ........                                                                     │
00:00:30 v #1352 > > │ ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............. │
00:00:30 v #1353 > > │ ...../;;;;;;;;;;;;;;;;;;.............../;;;;;;;;;........................... │
00:00:30 v #1354 > > │ ........                                                                     │
00:00:30 v #1355 > > │ ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............. │
00:00:30 v #1356 > > │ ...../;;;;;;;;;;;;;;;;;;\............../;;;;;;;;;........................... │
00:00:30 v #1357 > > │ ........                                                                     │
00:00:30 v #1358 > > │ ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............. │
00:00:30 v #1359 > > │ ...../;;;;;;;;;;;;;;;;;;;............../<<<<<<<<<........................... │
00:00:30 v #1360 > > │ ........                                                                     │
00:00:30 v #1361 > > │ ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............. │
00:00:30 v #1362 > > │ ...../;;;;;;;;;;;;;;;;;;;............../<<<<<<<<............................ │
00:00:30 v #1363 > > │ ........                                                                     │
00:00:30 v #1364 > > │ ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............. │
00:00:30 v #1365 > > │ ...../<<<<<<<<<<<<<<<<<<<................................................... │
00:00:30 v #1366 > > │ ........                                                                     │
00:00:30 v #1367 > > │ ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............. │
00:00:30 v #1368 > > │ ...../<<<<<<<<<<<<<<<....................................................... │
00:00:30 v #1369 > > │ ........                                                                     │
00:00:30 v #1370 > > │ ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............ │
00:00:30 v #1371 > > │ ............................................................................ │
00:00:30 v #1372 > > │ ........                                                                     │
00:00:30 v #1373 > > │ ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............ │
00:00:30 v #1374 > > │ ............................................................................ │
00:00:30 v #1375 > > │ ........                                                                     │
00:00:30 v #1376 > > │ ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............ │
00:00:30 v #1377 > > │ ............................................................................ │
00:00:30 v #1378 > > │ ........                                                                     │
00:00:30 v #1379 > > │ ......................;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<............ │
00:00:30 v #1380 > > │ ............................................................................ │
00:00:30 v #1381 > > │ ........                                                                     │
00:00:30 v #1382 > > │ ......................<<<<<<<<<<............................................ │
00:00:30 v #1383 > > │ ............................................................................ │
00:00:30 v #1384 > > │ ........                                                                     │
00:00:30 v #1385 > > │ ............................................................................ │
00:00:30 v #1386 > > │ ............................................................................ │
00:00:30 v #1387 > > │ ........                                                                     │
00:00:30 v #1388 > > │ ............................................................................ │
00:00:30 v #1389 > > │ ............................................................................ │
00:00:30 v #1390 > > │ ........                                                                     │
00:00:30 v #1391 > > │ ............................................................................ │
00:00:30 v #1392 > > │ ............................................................................ │
00:00:30 v #1393 > > │ ........                                                                     │
00:00:30 v #1394 > > │ ............................................................................ │
00:00:30 v #1395 > > │ ............................................................................ │
00:00:30 v #1396 > > │ ........                                                                     │
00:00:30 v #1397 > > │ ............................................................................ │
00:00:30 v #1398 > > │ ............................................................................ │
00:00:30 v #1399 > > │ ........                                                                     │
00:00:30 v #1400 > > │ ............................................................................ │
00:00:30 v #1401 > > │ ............................................................................ │
00:00:30 v #1402 > > │ ........                                                                     │
00:00:30 v #1403 > > │ ............................................................................ │
00:00:30 v #1404 > > │ ............................................................................ │
00:00:30 v #1405 > > │ ........                                                                     │
00:00:30 v #1406 > > │ ............................................................................ │
00:00:30 v #1407 > > │ ............................................................................ │
00:00:30 v #1408 > > │ ........                                                                     │
00:00:30 v #1409 > > │ ............................................................................ │
00:00:30 v #1410 > > │ ............................................................................ │
00:00:30 v #1411 > > │ ........                                                                     │
00:00:30 v #1412 > > │ ............................................................................ │
00:00:30 v #1413 > > │ ............................................................................ │
00:00:30 v #1414 > > │ ........                                                                     │
00:00:30 v #1415 > > │ ............................................................................ │
00:00:30 v #1416 > > │ ............................................................................ │
00:00:30 v #1417 > > │ ........                                                                     │
00:00:30 v #1418 > > │ ............................................................................ │
00:00:30 v #1419 > > │ ............................................................................ │
00:00:30 v #1420 > > │ ........                                                                     │
00:00:30 v #1421 > > │                                                                              │
00:00:30 v #1422 > > │ ............................................................................ │
00:00:30 v #1423 > > │ ............................................................................ │
00:00:30 v #1424 > > │ ........                                                                     │
00:00:30 v #1425 > > │ ............................................................................ │
00:00:30 v #1426 > > │ ............................................................................ │
00:00:30 v #1427 > > │ ........                                                                     │
00:00:30 v #1428 > > │ ............................................................................ │
00:00:30 v #1429 > > │ ............................................................................ │
00:00:30 v #1430 > > │ ........                                                                     │
00:00:30 v #1431 > > │ ............................................................................ │
00:00:30 v #1432 > > │ ............................................................................ │
00:00:30 v #1433 > > │ ........                                                                     │
00:00:30 v #1434 > > │ ............................................................................ │
00:00:30 v #1435 > > │ ............................................................................ │
00:00:30 v #1436 > > │ ........                                                                     │
00:00:30 v #1437 > > │ ............................................................................ │
00:00:30 v #1438 > > │ ............................................................................ │
00:00:30 v #1439 > > │ ........                                                                     │
00:00:30 v #1440 > > │ ............................................................................ │
00:00:30 v #1441 > > │ ............................................................................ │
00:00:30 v #1442 > > │ ........                                                                     │
00:00:30 v #1443 > > │ ............................................................................ │
00:00:30 v #1444 > > │ ............................................................................ │
00:00:30 v #1445 > > │ ........                                                                     │
00:00:30 v #1446 > > │ ............................................................................ │
00:00:30 v #1447 > > │ ............................................................................ │
00:00:30 v #1448 > > │ ........                                                                     │
00:00:30 v #1449 > > │ ............................................................................ │
00:00:30 v #1450 > > │ ............................................................................ │
00:00:30 v #1451 > > │ ........                                                                     │
00:00:30 v #1452 > > │ ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................ │
00:00:30 v #1453 > > │ ............................................................................ │
00:00:30 v #1454 > > │ ........                                                                     │
00:00:30 v #1455 > > │ ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................ │
00:00:30 v #1456 > > │ ............................................................................ │
00:00:30 v #1457 > > │ ........                                                                     │
00:00:30 v #1458 > > │ ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............... │
00:00:30 v #1459 > > │ ............................................................................ │
00:00:30 v #1460 > > │ ........                                                                     │
00:00:30 v #1461 > > │ ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............... │
00:00:30 v #1462 > > │ ............................................................................ │
00:00:30 v #1463 > > │ ........                                                                     │
00:00:30 v #1464 > > │ ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............... │
00:00:30 v #1465 > > │ ............................................................................ │
00:00:30 v #1466 > > │ ........                                                                     │
00:00:30 v #1467 > > │ .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............... │
00:00:30 v #1468 > > │ ............................................................................ │
00:00:30 v #1469 > > │ ........                                                                     │
00:00:30 v #1470 > > │ .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.............. │
00:00:30 v #1471 > > │ ......;;;;;;;;;;;;;;;;;;.................................................... │
00:00:30 v #1472 > > │ ........                                                                     │
00:00:30 v #1473 > > │ .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.............. │
00:00:30 v #1474 > > │ .....>;;;;;;;;;;;;;;;;;;.................................................... │
00:00:30 v #1475 > > │ ........                                                                     │
00:00:30 v #1476 > > │ .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.............. │
00:00:30 v #1477 > > │ ...../;;;;;;;;;;;;;;;;;;.................................................... │
00:00:30 v #1478 > > │ ........                                                                     │
00:00:30 v #1479 > > │ .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............. │
00:00:30 v #1480 > > │ ....>/;;;;;;;;;;;;;;;;;;...............>;;;;;;;;;........................... │
00:00:30 v #1481 > > │ ........                                                                     │
00:00:30 v #1482 > > │ .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............. │
00:00:30 v #1483 > > │ ...../;;;;;;;;;;;;;;;;;;\............../;;;;;;;;;........................... │
00:00:30 v #1484 > > │ ........                                                                     │
00:00:30 v #1485 > > │ .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............. │
00:00:30 v #1486 > > │ ...../;;;;;;;;;;;;;;;;;;;............../;;;;;;;;;........................... │
00:00:30 v #1487 > > │ ........                                                                     │
00:00:30 v #1488 > > │ .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............. │
00:00:30 v #1489 > > │ ...../;;;;;;;;;;;;;;;;;;;............../;;;;;;;;;\.......................... │
00:00:30 v #1490 > > │ ........                                                                     │
00:00:30 v #1491 > > │ .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............ │
00:00:30 v #1492 > > │ .....//;;;;;;;;;;;;;;;;;;............../<<<<<<<<<\.......................... │
00:00:30 v #1493 > > │ ........                                                                     │
00:00:30 v #1494 > > │ .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............ │
00:00:30 v #1495 > > │ .....//;;;;;;;;;;;;;;;;;;............../<<<<<<<<............................ │
00:00:30 v #1496 > > │ ........                                                                     │
00:00:30 v #1497 > > │ .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............ │
00:00:30 v #1498 > > │ .....//<<<<<<<<<<<<<<<<<<................................................... │
00:00:30 v #1499 > > │ ........                                                                     │
00:00:30 v #1500 > > │ .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............ │
00:00:30 v #1501 > > │ ...../<<<<<<<<<<<<<<<<...................................................... │
00:00:30 v #1502 > > │ ........                                                                     │
00:00:30 v #1503 > > │ ........................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\........... │
00:00:30 v #1504 > > │ ............................................................................ │
00:00:30 v #1505 > > │ ........                                                                     │
00:00:30 v #1506 > > │ ........................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;........... │
00:00:30 v #1507 > > │ ............................................................................ │
00:00:30 v #1508 > > │ ........                                                                     │
00:00:30 v #1509 > > │ ........................;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<........... │
00:00:30 v #1510 > > │ ............................................................................ │
00:00:30 v #1511 > > │ ........                                                                     │
00:00:30 v #1512 > > │ ........................<<<<<<<<<<<<<<<<<<<<<<.............................. │
00:00:30 v #1513 > > │ ............................................................................ │
00:00:30 v #1514 > > │ ........                                                                     │
00:00:30 v #1515 > > │ ............................................................................ │
00:00:30 v #1516 > > │ ............................................................................ │
00:00:30 v #1517 > > │ ........                                                                     │
00:00:30 v #1518 > > │ ............................................................................ │
00:00:30 v #1519 > > │ ............................................................................ │
00:00:30 v #1520 > > │ ........                                                                     │
00:00:30 v #1521 > > │ ............................................................................ │
00:00:30 v #1522 > > │ ............................................................................ │
00:00:30 v #1523 > > │ ........                                                                     │
00:00:30 v #1524 > > │ ............................................................................ │
00:00:30 v #1525 > > │ ............................................................................ │
00:00:30 v #1526 > > │ ........                                                                     │
00:00:30 v #1527 > > │ ............................................................................ │
00:00:30 v #1528 > > │ ............................................................................ │
00:00:30 v #1529 > > │ ........                                                                     │
00:00:30 v #1530 > > │ ............................................................................ │
00:00:30 v #1531 > > │ ............................................................................ │
00:00:30 v #1532 > > │ ........                                                                     │
00:00:30 v #1533 > > │ ............................................................................ │
00:00:30 v #1534 > > │ ............................................................................ │
00:00:30 v #1535 > > │ ........                                                                     │
00:00:30 v #1536 > > │ ............................................................................ │
00:00:30 v #1537 > > │ ............................................................................ │
00:00:30 v #1538 > > │ ........                                                                     │
00:00:30 v #1539 > > │ ............................................................................ │
00:00:30 v #1540 > > │ ............................................................................ │
00:00:30 v #1541 > > │ ........                                                                     │
00:00:30 v #1542 > > │ ............................................................................ │
00:00:30 v #1543 > > │ ............................................................................ │
00:00:30 v #1544 > > │ ........                                                                     │
00:00:30 v #1545 > > │ ............................................................................ │
00:00:30 v #1546 > > │ ............................................................................ │
00:00:30 v #1547 > > │ ........                                                                     │
00:00:30 v #1548 > > │ ............................................................................ │
00:00:30 v #1549 > > │ ............................................................................ │
00:00:30 v #1550 > > │ ........                                                                     │
00:00:30 v #1551 > > │ ............................................................................ │
00:00:30 v #1552 > > │ ............................................................................ │
00:00:30 v #1553 > > │ ........                                                                     │
00:00:30 v #1554 > > │                                                                              │
00:00:30 v #1555 > > │ ............................................................................ │
00:00:30 v #1556 > > │ ............................................................................ │
00:00:30 v #1557 > > │ ........                                                                     │
00:00:30 v #1558 > > │ ............................................................................ │
00:00:30 v #1559 > > │ ............................................................................ │
00:00:30 v #1560 > > │ ........                                                                     │
00:00:30 v #1561 > > │ ............................................................................ │
00:00:30 v #1562 > > │ ............................................................................ │
00:00:30 v #1563 > > │ ........                                                                     │
00:00:30 v #1564 > > │ ............................................................................ │
00:00:30 v #1565 > > │ ............................................................................ │
00:00:30 v #1566 > > │ ........                                                                     │
00:00:30 v #1567 > > │ ............................................................................ │
00:00:30 v #1568 > > │ ............................................................................ │
00:00:30 v #1569 > > │ ........                                                                     │
00:00:30 v #1570 > > │ ............................................................................ │
00:00:30 v #1571 > > │ ............................................................................ │
00:00:30 v #1572 > > │ ........                                                                     │
00:00:30 v #1573 > > │ ............................................................................ │
00:00:30 v #1574 > > │ ............................................................................ │
00:00:30 v #1575 > > │ ........                                                                     │
00:00:30 v #1576 > > │ ............................................................................ │
00:00:30 v #1577 > > │ ............................................................................ │
00:00:30 v #1578 > > │ ........                                                                     │
00:00:30 v #1579 > > │ ............................................................................ │
00:00:30 v #1580 > > │ ............................................................................ │
00:00:30 v #1581 > > │ ........                                                                     │
00:00:30 v #1582 > > │ ............................................................................ │
00:00:30 v #1583 > > │ ............................................................................ │
00:00:30 v #1584 > > │ ........                                                                     │
00:00:30 v #1585 > > │ .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................ │
00:00:30 v #1586 > > │ ............................................................................ │
00:00:30 v #1587 > > │ ........                                                                     │
00:00:30 v #1588 > > │ .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................ │
00:00:30 v #1589 > > │ ............................................................................ │
00:00:30 v #1590 > > │ ........                                                                     │
00:00:30 v #1591 > > │ ......................>;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................ │
00:00:30 v #1592 > > │ ............................................................................ │
00:00:30 v #1593 > > │ ........                                                                     │
00:00:30 v #1594 > > │ ....................../;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............... │
00:00:30 v #1595 > > │ ............................................................................ │
00:00:30 v #1596 > > │ ........                                                                     │
00:00:30 v #1597 > > │ ....................../;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............... │
00:00:30 v #1598 > > │ ............................................................................ │
00:00:30 v #1599 > > │ ........                                                                     │
00:00:30 v #1600 > > │ ....................../;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............... │
00:00:30 v #1601 > > │ ............................................................................ │
00:00:30 v #1602 > > │ ........                                                                     │
00:00:30 v #1603 > > │ ....................../;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.............. │
00:00:30 v #1604 > > │ ......;;;;;;;;;;;;;;;;;;.................................................... │
00:00:30 v #1605 > > │ ........                                                                     │
00:00:30 v #1606 > > │ ......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.............. │
00:00:30 v #1607 > > │ .....>;;;;;;;;;;;;;;;;;;.................................................... │
00:00:30 v #1608 > > │ ........                                                                     │
00:00:30 v #1609 > > │ ......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............. │
00:00:30 v #1610 > > │ ....>/;;;;;;;;;;;;;;;;;;.................................................... │
00:00:30 v #1611 > > │ ........                                                                     │
00:00:30 v #1612 > > │ ......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............. │
00:00:30 v #1613 > > │ ....//;;;;;;;;;;;;;;;;;;\..............>;;;;;;;;;........................... │
00:00:30 v #1614 > > │ ........                                                                     │
00:00:30 v #1615 > > │ ......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............. │
00:00:30 v #1616 > > │ ....///;;;;;;;;;;;;;;;;;;............../;;;;;;;;;........................... │
00:00:30 v #1617 > > │ ........                                                                     │
00:00:30 v #1618 > > │ ......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............ │
00:00:30 v #1619 > > │ ....///;;;;;;;;;;;;;;;;;;............../;;;;;;;;;\.......................... │
00:00:30 v #1620 > > │ ........                                                                     │
00:00:30 v #1621 > > │ ......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............ │
00:00:30 v #1622 > > │ ....///;;;;;;;;;;;;;;;;;;............../;;;;;;;;;;.......................... │
00:00:30 v #1623 > > │ ........                                                                     │
00:00:30 v #1624 > > │ ......................./;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............ │
00:00:30 v #1625 > > │ .....//;;;;;;;;;;;;;;;;;;;.............//<<<<<<<<<.......................... │
00:00:30 v #1626 > > │ ........                                                                     │
00:00:30 v #1627 > > │ .......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\........... │
00:00:30 v #1628 > > │ .....//;;;;;;;;;;;;;;;;<<<............./<<<<<<<<............................ │
00:00:30 v #1629 > > │ ........                                                                     │
00:00:30 v #1630 > > │ .......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;........... │
00:00:30 v #1631 > > │ .....///<<<<<<<<<<<<<<<<<................................................... │
00:00:30 v #1632 > > │ ........                                                                     │
00:00:30 v #1633 > > │ .......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.......... │
00:00:30 v #1634 > > │ ...../<<<<<<<<<<<<<<<<...................................................... │
00:00:30 v #1635 > > │ ........                                                                     │
00:00:30 v #1636 > > │ .......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.......... │
00:00:30 v #1637 > > │ ............................................................................ │
00:00:30 v #1638 > > │ ........                                                                     │
00:00:30 v #1639 > > │ .......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<.......... │
00:00:30 v #1640 > > │ ............................................................................ │
00:00:30 v #1641 > > │ ........                                                                     │
00:00:30 v #1642 > > │ .......................//;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<............... │
00:00:30 v #1643 > > │ ............................................................................ │
00:00:30 v #1644 > > │ ........                                                                     │
00:00:30 v #1645 > > │ .......................//<<<<<<<<<<<<<<<<<<<<<<<<<.......................... │
00:00:30 v #1646 > > │ ............................................................................ │
00:00:30 v #1647 > > │ ........                                                                     │
00:00:30 v #1648 > > │ ........................<<<<<<<............................................. │
00:00:30 v #1649 > > │ ............................................................................ │
00:00:30 v #1650 > > │ ........                                                                     │
00:00:30 v #1651 > > │ ............................................................................ │
00:00:30 v #1652 > > │ ............................................................................ │
00:00:30 v #1653 > > │ ........                                                                     │
00:00:30 v #1654 > > │ ............................................................................ │
00:00:30 v #1655 > > │ ............................................................................ │
00:00:30 v #1656 > > │ ........                                                                     │
00:00:30 v #1657 > > │ ............................................................................ │
00:00:30 v #1658 > > │ ............................................................................ │
00:00:30 v #1659 > > │ ........                                                                     │
00:00:30 v #1660 > > │ ............................................................................ │
00:00:30 v #1661 > > │ ............................................................................ │
00:00:30 v #1662 > > │ ........                                                                     │
00:00:30 v #1663 > > │ ............................................................................ │
00:00:30 v #1664 > > │ ............................................................................ │
00:00:30 v #1665 > > │ ........                                                                     │
00:00:30 v #1666 > > │ ............................................................................ │
00:00:30 v #1667 > > │ ............................................................................ │
00:00:30 v #1668 > > │ ........                                                                     │
00:00:30 v #1669 > > │ ............................................................................ │
00:00:30 v #1670 > > │ ............................................................................ │
00:00:30 v #1671 > > │ ........                                                                     │
00:00:30 v #1672 > > │ ............................................................................ │
00:00:30 v #1673 > > │ ............................................................................ │
00:00:30 v #1674 > > │ ........                                                                     │
00:00:30 v #1675 > > │ ............................................................................ │
00:00:30 v #1676 > > │ ............................................................................ │
00:00:30 v #1677 > > │ ........                                                                     │
00:00:30 v #1678 > > │ ............................................................................ │
00:00:30 v #1679 > > │ ............................................................................ │
00:00:30 v #1680 > > │ ........                                                                     │
00:00:30 v #1681 > > │ ............................................................................ │
00:00:30 v #1682 > > │ ............................................................................ │
00:00:30 v #1683 > > │ ........                                                                     │
00:00:30 v #1684 > > │ ............................................................................ │
00:00:30 v #1685 > > │ ............................................................................ │
00:00:30 v #1686 > > │ ........                                                                     │
00:00:30 v #1687 > > │                                                                              │
00:00:30 v #1688 > > │ ............................................................................ │
00:00:30 v #1689 > > │ ............................................................................ │
00:00:30 v #1690 > > │ ........                                                                     │
00:00:30 v #1691 > > │ ............................................................................ │
00:00:30 v #1692 > > │ ............................................................................ │
00:00:30 v #1693 > > │ ........                                                                     │
00:00:30 v #1694 > > │ ............................................................................ │
00:00:30 v #1695 > > │ ............................................................................ │
00:00:30 v #1696 > > │ ........                                                                     │
00:00:30 v #1697 > > │ ............................................................................ │
00:00:30 v #1698 > > │ ............................................................................ │
00:00:30 v #1699 > > │ ........                                                                     │
00:00:30 v #1700 > > │ ............................................................................ │
00:00:30 v #1701 > > │ ............................................................................ │
00:00:30 v #1702 > > │ ........                                                                     │
00:00:30 v #1703 > > │ ............................................................................ │
00:00:30 v #1704 > > │ ............................................................................ │
00:00:30 v #1705 > > │ ........                                                                     │
00:00:30 v #1706 > > │ ............................................................................ │
00:00:30 v #1707 > > │ ............................................................................ │
00:00:30 v #1708 > > │ ........                                                                     │
00:00:30 v #1709 > > │ ............................................................................ │
00:00:30 v #1710 > > │ ............................................................................ │
00:00:30 v #1711 > > │ ........                                                                     │
00:00:30 v #1712 > > │ ............................................................................ │
00:00:30 v #1713 > > │ ............................................................................ │
00:00:30 v #1714 > > │ ........                                                                     │
00:00:30 v #1715 > > │ ............................................................................ │
00:00:30 v #1716 > > │ ............................................................................ │
00:00:30 v #1717 > > │ ........                                                                     │
00:00:30 v #1718 > > │ .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................. │
00:00:30 v #1719 > > │ ............................................................................ │
00:00:30 v #1720 > > │ ........                                                                     │
00:00:30 v #1721 > > │ .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................. │
00:00:30 v #1722 > > │ ............................................................................ │
00:00:30 v #1723 > > │ ........                                                                     │
00:00:30 v #1724 > > │ ......................>/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................ │
00:00:30 v #1725 > > │ ............................................................................ │
00:00:30 v #1726 > > │ ........                                                                     │
00:00:30 v #1727 > > │ ......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................ │
00:00:30 v #1728 > > │ ............................................................................ │
00:00:30 v #1729 > > │ ........                                                                     │
00:00:30 v #1730 > > │ ......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............... │
00:00:30 v #1731 > > │ ............................................................................ │
00:00:30 v #1732 > > │ ........                                                                     │
00:00:30 v #1733 > > │ ......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............... │
00:00:30 v #1734 > > │ ............................................................................ │
00:00:30 v #1735 > > │ ........                                                                     │
00:00:30 v #1736 > > │ .....................>//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.............. │
00:00:30 v #1737 > > │ ......;;;;;;;;;;;;;;;;;..................................................... │
00:00:30 v #1738 > > │ ........                                                                     │
00:00:30 v #1739 > > │ .....................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.............. │
00:00:30 v #1740 > > │ .....>;;;;;;;;;;;;;;;;;;.................................................... │
00:00:30 v #1741 > > │ ........                                                                     │
00:00:30 v #1742 > > │ .....................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............. │
00:00:30 v #1743 > > │ ....>//;;;;;;;;;;;;;;;;;.................................................... │
00:00:30 v #1744 > > │ ........                                                                     │
00:00:30 v #1745 > > │ .....................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............. │
00:00:30 v #1746 > > │ ....///;;;;;;;;;;;;;;;;;\..............>;;;;;;;;;........................... │
00:00:30 v #1747 > > │ ........                                                                     │
00:00:30 v #1748 > > │ .....................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............ │
00:00:30 v #1749 > > │ ....///;;;;;;;;;;;;;;;;;;.............>/;;;;;;;;;........................... │
00:00:30 v #1750 > > │ ........                                                                     │
00:00:30 v #1751 > > │ ......................///;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............ │
00:00:30 v #1752 > > │ ....///;;;;;;;;;;;;;;;;;;.............//;;;;;;;;;\.......................... │
00:00:30 v #1753 > > │ ........                                                                     │
00:00:30 v #1754 > > │ ......................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\........... │
00:00:30 v #1755 > > │ ....////;;;;;;;;;;;;;;;;;;.............//;;;;;;;;;.......................... │
00:00:30 v #1756 > > │ ........                                                                     │
00:00:30 v #1757 > > │ ......................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;........... │
00:00:30 v #1758 > > │ ....////;;;;;;;;;;;;;;;;;;.............//<<<<<<<<<.......................... │
00:00:30 v #1759 > > │ ........                                                                     │
00:00:30 v #1760 > > │ ......................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.......... │
00:00:30 v #1761 > > │ ....////;;;;;;;<<<<<<<<<<<............./<<<<<<<<............................ │
00:00:30 v #1762 > > │ ........                                                                     │
00:00:30 v #1763 > > │ ......................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.......... │
00:00:30 v #1764 > > │ .....///<<<<<<<<<<<<<<<<<................................................... │
00:00:30 v #1765 > > │ ........                                                                     │
00:00:30 v #1766 > > │ ......................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\......... │
00:00:30 v #1767 > > │ .....//<<<<<<<<<<<<<<<...................................................... │
00:00:30 v #1768 > > │ ........                                                                     │
00:00:30 v #1769 > > │ .......................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<......... │
00:00:30 v #1770 > > │ .....<<<.................................................................... │
00:00:30 v #1771 > > │ ........                                                                     │
00:00:30 v #1772 > > │ .......................////;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<........... │
00:00:30 v #1773 > > │ ............................................................................ │
00:00:30 v #1774 > > │ ........                                                                     │
00:00:30 v #1775 > > │ .......................////<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<.................. │
00:00:30 v #1776 > > │ ............................................................................ │
00:00:30 v #1777 > > │ ........                                                                     │
00:00:30 v #1778 > > │ .......................////<<<<<<<<<<<<<<<<<<<<<<<<<........................ │
00:00:30 v #1779 > > │ ............................................................................ │
00:00:30 v #1780 > > │ ........                                                                     │
00:00:30 v #1781 > > │ .......................//<<<<<<<<<<<<<...................................... │
00:00:30 v #1782 > > │ ............................................................................ │
00:00:30 v #1783 > > │ ........                                                                     │
00:00:30 v #1784 > > │ ............................................................................ │
00:00:30 v #1785 > > │ ............................................................................ │
00:00:30 v #1786 > > │ ........                                                                     │
00:00:30 v #1787 > > │ ............................................................................ │
00:00:30 v #1788 > > │ ............................................................................ │
00:00:30 v #1789 > > │ ........                                                                     │
00:00:30 v #1790 > > │ ............................................................................ │
00:00:30 v #1791 > > │ ............................................................................ │
00:00:30 v #1792 > > │ ........                                                                     │
00:00:30 v #1793 > > │ ............................................................................ │
00:00:30 v #1794 > > │ ............................................................................ │
00:00:30 v #1795 > > │ ........                                                                     │
00:00:30 v #1796 > > │ ............................................................................ │
00:00:30 v #1797 > > │ ............................................................................ │
00:00:30 v #1798 > > │ ........                                                                     │
00:00:30 v #1799 > > │ ............................................................................ │
00:00:30 v #1800 > > │ ............................................................................ │
00:00:30 v #1801 > > │ ........                                                                     │
00:00:30 v #1802 > > │ ............................................................................ │
00:00:30 v #1803 > > │ ............................................................................ │
00:00:30 v #1804 > > │ ........                                                                     │
00:00:30 v #1805 > > │ ............................................................................ │
00:00:30 v #1806 > > │ ............................................................................ │
00:00:30 v #1807 > > │ ........                                                                     │
00:00:30 v #1808 > > │ ............................................................................ │
00:00:30 v #1809 > > │ ............................................................................ │
00:00:30 v #1810 > > │ ........                                                                     │
00:00:30 v #1811 > > │ ............................................................................ │
00:00:30 v #1812 > > │ ............................................................................ │
00:00:30 v #1813 > > │ ........                                                                     │
00:00:30 v #1814 > > │ ............................................................................ │
00:00:30 v #1815 > > │ ............................................................................ │
00:00:30 v #1816 > > │ ........                                                                     │
00:00:30 v #1817 > > │ ............................................................................ │
00:00:30 v #1818 > > │ ............................................................................ │
00:00:30 v #1819 > > │ ........                                                                     │
00:00:30 v #1820 > > │                                                                              │
00:00:30 v #1821 > > │ ............................................................................ │
00:00:30 v #1822 > > │ ............................................................................ │
00:00:30 v #1823 > > │ ........                                                                     │
00:00:30 v #1824 > > │ ............................................................................ │
00:00:30 v #1825 > > │ ............................................................................ │
00:00:30 v #1826 > > │ ........                                                                     │
00:00:30 v #1827 > > │ ............................................................................ │
00:00:30 v #1828 > > │ ............................................................................ │
00:00:30 v #1829 > > │ ........                                                                     │
00:00:30 v #1830 > > │ ............................................................................ │
00:00:30 v #1831 > > │ ............................................................................ │
00:00:30 v #1832 > > │ ........                                                                     │
00:00:30 v #1833 > > │ ............................................................................ │
00:00:30 v #1834 > > │ ............................................................................ │
00:00:30 v #1835 > > │ ........                                                                     │
00:00:30 v #1836 > > │ ............................................................................ │
00:00:30 v #1837 > > │ ............................................................................ │
00:00:30 v #1838 > > │ ........                                                                     │
00:00:30 v #1839 > > │ ............................................................................ │
00:00:30 v #1840 > > │ ............................................................................ │
00:00:30 v #1841 > > │ ........                                                                     │
00:00:30 v #1842 > > │ ............................................................................ │
00:00:30 v #1843 > > │ ............................................................................ │
00:00:30 v #1844 > > │ ........                                                                     │
00:00:30 v #1845 > > │ ............................................................................ │
00:00:30 v #1846 > > │ ............................................................................ │
00:00:30 v #1847 > > │ ........                                                                     │
00:00:30 v #1848 > > │ ............................................................................ │
00:00:30 v #1849 > > │ ............................................................................ │
00:00:30 v #1850 > > │ ........                                                                     │
00:00:30 v #1851 > > │ .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................. │
00:00:30 v #1852 > > │ ............................................................................ │
00:00:30 v #1853 > > │ ........                                                                     │
00:00:30 v #1854 > > │ ......................./;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................. │
00:00:30 v #1855 > > │ ............................................................................ │
00:00:30 v #1856 > > │ ........                                                                     │
00:00:30 v #1857 > > │ ......................>/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................ │
00:00:30 v #1858 > > │ ............................................................................ │
00:00:30 v #1859 > > │ ........                                                                     │
00:00:30 v #1860 > > │ ......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................ │
00:00:30 v #1861 > > │ ............................................................................ │
00:00:30 v #1862 > > │ ........                                                                     │
00:00:30 v #1863 > > │ ......................///;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............... │
00:00:30 v #1864 > > │ ............................................................................ │
00:00:30 v #1865 > > │ ........                                                                     │
00:00:30 v #1866 > > │ .....................>///;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............... │
00:00:30 v #1867 > > │ ............................................................................ │
00:00:30 v #1868 > > │ ........                                                                     │
00:00:30 v #1869 > > │ .....................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.............. │
00:00:30 v #1870 > > │ ......;;;;;;;;;;;;;;;;;..................................................... │
00:00:30 v #1871 > > │ ........                                                                     │
00:00:30 v #1872 > > │ ....................>////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.............. │
00:00:30 v #1873 > > │ .....>/;;;;;;;;;;;;;;;;;.................................................... │
00:00:30 v #1874 > > │ ........                                                                     │
00:00:30 v #1875 > > │ ....................//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............. │
00:00:30 v #1876 > > │ ....>//;;;;;;;;;;;;;;;;;.................................................... │
00:00:30 v #1877 > > │ ........                                                                     │
00:00:30 v #1878 > > │ ....................//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............ │
00:00:30 v #1879 > > │ ...>///;;;;;;;;;;;;;;;;;;..............>;;;;;;;;;........................... │
00:00:30 v #1880 > > │ ........                                                                     │
00:00:30 v #1881 > > │ ...................../////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............ │
00:00:30 v #1882 > > │ .../////;;;;;;;;;;;;;;;;;.............//;;;;;;;;;........................... │
00:00:30 v #1883 > > │ ........                                                                     │
00:00:30 v #1884 > > │ .....................//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;........... │
00:00:30 v #1885 > > │ .../////;;;;;;;;;;;;;;;;;;............///;;;;;;;;;.......................... │
00:00:30 v #1886 > > │ ........                                                                     │
00:00:30 v #1887 > > │ .....................//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;........... │
00:00:30 v #1888 > > │ ....////;;;;;;;;;;;;;;;;;;............///;;;;;;;;;.......................... │
00:00:30 v #1889 > > │ ........                                                                     │
00:00:30 v #1890 > > │ .....................//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.......... │
00:00:30 v #1891 > > │ ....////;;;;;;;;;;;;;;;;;;;............//;<<<<<<<<.......................... │
00:00:30 v #1892 > > │ ........                                                                     │
00:00:30 v #1893 > > │ .....................//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\......... │
00:00:30 v #1894 > > │ ..../////<<<<<<<<<<<<<<<<<<............/<<<<<<<<............................ │
00:00:30 v #1895 > > │ ........                                                                     │
00:00:30 v #1896 > > │ ......................//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;......... │
00:00:30 v #1897 > > │ .....///<<<<<<<<<<<<<<<<.................................................... │
00:00:30 v #1898 > > │ ........                                                                     │
00:00:30 v #1899 > > │ ......................//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<........ │
00:00:30 v #1900 > > │ .....//<<<<<<<<<<<<<<<...................................................... │
00:00:30 v #1901 > > │ ........                                                                     │
00:00:30 v #1902 > > │ ......................//////;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<......... │
00:00:30 v #1903 > > │ .....<<<<<<................................................................. │
00:00:30 v #1904 > > │ ........                                                                     │
00:00:30 v #1905 > > │ ......................///////;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<.............. │
00:00:30 v #1906 > > │ ............................................................................ │
00:00:30 v #1907 > > │ ........                                                                     │
00:00:30 v #1908 > > │ .......................//////<<<<<<<<<<<<<<<<<<<<<<<<<<<<................... │
00:00:30 v #1909 > > │ ............................................................................ │
00:00:30 v #1910 > > │ ........                                                                     │
00:00:30 v #1911 > > │ .......................////<<<<<<<<<<<<<<<<<<<<<<<<<<....................... │
00:00:30 v #1912 > > │ ............................................................................ │
00:00:30 v #1913 > > │ ........                                                                     │
00:00:30 v #1914 > > │ .......................///<<<<<<<<<<<<<<<<.................................. │
00:00:30 v #1915 > > │ ............................................................................ │
00:00:30 v #1916 > > │ ........                                                                     │
00:00:30 v #1917 > > │ ......................./<<<<<............................................... │
00:00:30 v #1918 > > │ ............................................................................ │
00:00:30 v #1919 > > │ ........                                                                     │
00:00:30 v #1920 > > │ ............................................................................ │
00:00:30 v #1921 > > │ ............................................................................ │
00:00:30 v #1922 > > │ ........                                                                     │
00:00:30 v #1923 > > │ ............................................................................ │
00:00:30 v #1924 > > │ ............................................................................ │
00:00:30 v #1925 > > │ ........                                                                     │
00:00:30 v #1926 > > │ ............................................................................ │
00:00:30 v #1927 > > │ ............................................................................ │
00:00:30 v #1928 > > │ ........                                                                     │
00:00:30 v #1929 > > │ ............................................................................ │
00:00:30 v #1930 > > │ ............................................................................ │
00:00:30 v #1931 > > │ ........                                                                     │
00:00:30 v #1932 > > │ ............................................................................ │
00:00:30 v #1933 > > │ ............................................................................ │
00:00:30 v #1934 > > │ ........                                                                     │
00:00:30 v #1935 > > │ ............................................................................ │
00:00:30 v #1936 > > │ ............................................................................ │
00:00:30 v #1937 > > │ ........                                                                     │
00:00:30 v #1938 > > │ ............................................................................ │
00:00:30 v #1939 > > │ ............................................................................ │
00:00:30 v #1940 > > │ ........                                                                     │
00:00:30 v #1941 > > │ ............................................................................ │
00:00:30 v #1942 > > │ ............................................................................ │
00:00:30 v #1943 > > │ ........                                                                     │
00:00:30 v #1944 > > │ ............................................................................ │
00:00:30 v #1945 > > │ ............................................................................ │
00:00:30 v #1946 > > │ ........                                                                     │
00:00:30 v #1947 > > │ ............................................................................ │
00:00:30 v #1948 > > │ ............................................................................ │
00:00:30 v #1949 > > │ ........                                                                     │
00:00:30 v #1950 > > │ ............................................................................ │
00:00:30 v #1951 > > │ ............................................................................ │
00:00:30 v #1952 > > │ ........                                                                     │
00:00:30 v #1953 > > │                                                                              │
00:00:30 v #1954 > > │ ............................................................................ │
00:00:30 v #1955 > > │ ............................................................................ │
00:00:30 v #1956 > > │ ........                                                                     │
00:00:30 v #1957 > > │ ............................................................................ │
00:00:30 v #1958 > > │ ............................................................................ │
00:00:30 v #1959 > > │ ........                                                                     │
00:00:30 v #1960 > > │ ............................................................................ │
00:00:30 v #1961 > > │ ............................................................................ │
00:00:30 v #1962 > > │ ........                                                                     │
00:00:30 v #1963 > > │ ............................................................................ │
00:00:30 v #1964 > > │ ............................................................................ │
00:00:30 v #1965 > > │ ........                                                                     │
00:00:30 v #1966 > > │ ............................................................................ │
00:00:30 v #1967 > > │ ............................................................................ │
00:00:30 v #1968 > > │ ........                                                                     │
00:00:30 v #1969 > > │ ............................................................................ │
00:00:30 v #1970 > > │ ............................................................................ │
00:00:30 v #1971 > > │ ........                                                                     │
00:00:30 v #1972 > > │ ............................................................................ │
00:00:30 v #1973 > > │ ............................................................................ │
00:00:30 v #1974 > > │ ........                                                                     │
00:00:30 v #1975 > > │ ............................................................................ │
00:00:30 v #1976 > > │ ............................................................................ │
00:00:30 v #1977 > > │ ........                                                                     │
00:00:30 v #1978 > > │ ............................................................................ │
00:00:30 v #1979 > > │ ............................................................................ │
00:00:30 v #1980 > > │ ........                                                                     │
00:00:30 v #1981 > > │ ........................;;;;;;.............................................. │
00:00:30 v #1982 > > │ ............................................................................ │
00:00:30 v #1983 > > │ ........                                                                     │
00:00:30 v #1984 > > │ .......................>;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... │
00:00:30 v #1985 > > │ ............................................................................ │
00:00:30 v #1986 > > │ ........                                                                     │
00:00:30 v #1987 > > │ ......................./;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................. │
00:00:30 v #1988 > > │ ............................................................................ │
00:00:30 v #1989 > > │ ........                                                                     │
00:00:30 v #1990 > > │ ......................>/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................. │
00:00:30 v #1991 > > │ ............................................................................ │
00:00:30 v #1992 > > │ ........                                                                     │
00:00:30 v #1993 > > │ ......................///;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................ │
00:00:30 v #1994 > > │ ............................................................................ │
00:00:30 v #1995 > > │ ........                                                                     │
00:00:30 v #1996 > > │ .....................>///;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................ │
00:00:30 v #1997 > > │ ............................................................................ │
00:00:30 v #1998 > > │ ........                                                                     │
00:00:30 v #1999 > > │ ...................../////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............... │
00:00:30 v #2000 > > │ ............................................................................ │
00:00:30 v #2001 > > │ ........                                                                     │
00:00:30 v #2002 > > │ ....................>/////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.............. │
00:00:30 v #2003 > > │ ......;;;;;;;;;;;;;;;;;..................................................... │
00:00:30 v #2004 > > │ ........                                                                     │
00:00:30 v #2005 > > │ ....................//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............. │
00:00:30 v #2006 > > │ .....>/;;;;;;;;;;;;;;;;\.................................................... │
00:00:30 v #2007 > > │ ........                                                                     │
00:00:30 v #2008 > > │ ...................>///////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............. │
00:00:30 v #2009 > > │ ....>//;;;;;;;;;;;;;;;;;.................................................... │
00:00:30 v #2010 > > │ ........                                                                     │
00:00:30 v #2011 > > │ ...................////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............ │
00:00:30 v #2012 > > │ ...////;;;;;;;;;;;;;;;;;;..............>;;;;;;;;;........................... │
00:00:30 v #2013 > > │ ........                                                                     │
00:00:30 v #2014 > > │ ....................////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;........... │
00:00:30 v #2015 > > │ .../////;;;;;;;;;;;;;;;;;\............>/;;;;;;;;;\.......................... │
00:00:30 v #2016 > > │ ........                                                                     │
00:00:30 v #2017 > > │ ....................////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.......... │
00:00:30 v #2018 > > │ .../////;;;;;;;;;;;;;;;;;;............///;;;;;;;;;.......................... │
00:00:30 v #2019 > > │ ........                                                                     │
00:00:30 v #2020 > > │ ....................////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.......... │
00:00:30 v #2021 > > │ ...//////;;;;;;;;;;;;;;;;;;...........///;;;;;;;<<\......................... │
00:00:30 v #2022 > > │ ........                                                                     │
00:00:30 v #2023 > > │ .....................////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;......... │
00:00:30 v #2024 > > │ ..../////;;;;;;;;;;;;;;<<<<............///<<<<<<<<.......................... │
00:00:30 v #2025 > > │ ........                                                                     │
00:00:30 v #2026 > > │ .....................////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\........ │
00:00:30 v #2027 > > │ ....//////<<<<<<<<<<<<<<<<<............//<<<<<<<............................ │
00:00:30 v #2028 > > │ ........                                                                     │
00:00:30 v #2029 > > │ ...................../////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;........ │
00:00:30 v #2030 > > │ ..../////<<<<<<<<<<<<<<<.................................................... │
00:00:30 v #2031 > > │ ........                                                                     │
00:00:30 v #2032 > > │ ...................../////////;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<........ │
00:00:30 v #2033 > > │ .....//<<<<<<<<<<<<<<<...................................................... │
00:00:30 v #2034 > > │ ........                                                                     │
00:00:30 v #2035 > > │ ......................////////;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<............ │
00:00:30 v #2036 > > │ ...../<<<<<<<<.............................................................. │
00:00:30 v #2037 > > │ ........                                                                     │
00:00:30 v #2038 > > │ ....................../////////<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<............... │
00:00:30 v #2039 > > │ ............................................................................ │
00:00:30 v #2040 > > │ ........                                                                     │
00:00:30 v #2041 > > │ ......................////////<<<<<<<<<<<<<<<<<<<<<<<<<<<................... │
00:00:30 v #2042 > > │ ............................................................................ │
00:00:30 v #2043 > > │ ........                                                                     │
00:00:30 v #2044 > > │ ......................./////<<<<<<<<<<<<<<<<<<<<<<<<<....................... │
00:00:30 v #2045 > > │ ............................................................................ │
00:00:30 v #2046 > > │ ........                                                                     │
00:00:30 v #2047 > > │ .......................///<<<<<<<<<<<<<<<<<<<<.............................. │
00:00:30 v #2048 > > │ ............................................................................ │
00:00:30 v #2049 > > │ ........                                                                     │
00:00:30 v #2050 > > │ .......................//<<<<<<<<<.......................................... │
00:00:30 v #2051 > > │ ............................................................................ │
00:00:30 v #2052 > > │ ........                                                                     │
00:00:30 v #2053 > > │ ............................................................................ │
00:00:30 v #2054 > > │ ............................................................................ │
00:00:30 v #2055 > > │ ........                                                                     │
00:00:30 v #2056 > > │ ............................................................................ │
00:00:30 v #2057 > > │ ............................................................................ │
00:00:30 v #2058 > > │ ........                                                                     │
00:00:30 v #2059 > > │ ............................................................................ │
00:00:30 v #2060 > > │ ............................................................................ │
00:00:30 v #2061 > > │ ........                                                                     │
00:00:30 v #2062 > > │ ............................................................................ │
00:00:30 v #2063 > > │ ............................................................................ │
00:00:30 v #2064 > > │ ........                                                                     │
00:00:30 v #2065 > > │ ............................................................................ │
00:00:30 v #2066 > > │ ............................................................................ │
00:00:30 v #2067 > > │ ........                                                                     │
00:00:30 v #2068 > > │ ............................................................................ │
00:00:30 v #2069 > > │ ............................................................................ │
00:00:30 v #2070 > > │ ........                                                                     │
00:00:30 v #2071 > > │ ............................................................................ │
00:00:30 v #2072 > > │ ............................................................................ │
00:00:30 v #2073 > > │ ........                                                                     │
00:00:30 v #2074 > > │ ............................................................................ │
00:00:30 v #2075 > > │ ............................................................................ │
00:00:30 v #2076 > > │ ........                                                                     │
00:00:30 v #2077 > > │ ............................................................................ │
00:00:30 v #2078 > > │ ............................................................................ │
00:00:30 v #2079 > > │ ........                                                                     │
00:00:30 v #2080 > > │ ............................................................................ │
00:00:30 v #2081 > > │ ............................................................................ │
00:00:30 v #2082 > > │ ........                                                                     │
00:00:30 v #2083 > > │ ............................................................................ │
00:00:30 v #2084 > > │ ............................................................................ │
00:00:30 v #2085 > > │ ........                                                                     │
00:00:30 v #2086 > > │                                                                              │
00:00:30 v #2087 > > │ ............................................................................ │
00:00:30 v #2088 > > │ ............................................................................ │
00:00:30 v #2089 > > │ ........                                                                     │
00:00:30 v #2090 > > │ ............................................................................ │
00:00:30 v #2091 > > │ ............................................................................ │
00:00:30 v #2092 > > │ ........                                                                     │
00:00:30 v #2093 > > │ ............................................................................ │
00:00:30 v #2094 > > │ ............................................................................ │
00:00:30 v #2095 > > │ ........                                                                     │
00:00:30 v #2096 > > │ ............................................................................ │
00:00:30 v #2097 > > │ ............................................................................ │
00:00:30 v #2098 > > │ ........                                                                     │
00:00:30 v #2099 > > │ ............................................................................ │
00:00:30 v #2100 > > │ ............................................................................ │
00:00:30 v #2101 > > │ ........                                                                     │
00:00:30 v #2102 > > │ ............................................................................ │
00:00:30 v #2103 > > │ ............................................................................ │
00:00:30 v #2104 > > │ ........                                                                     │
00:00:30 v #2105 > > │ ............................................................................ │
00:00:30 v #2106 > > │ ............................................................................ │
00:00:30 v #2107 > > │ ........                                                                     │
00:00:30 v #2108 > > │ ............................................................................ │
00:00:30 v #2109 > > │ ............................................................................ │
00:00:30 v #2110 > > │ ........                                                                     │
00:00:30 v #2111 > > │ ............................................................................ │
00:00:30 v #2112 > > │ ............................................................................ │
00:00:30 v #2113 > > │ ........                                                                     │
00:00:30 v #2114 > > │ ........................;;;;;;;;;........................................... │
00:00:30 v #2115 > > │ ............................................................................ │
00:00:30 v #2116 > > │ ........                                                                     │
00:00:30 v #2117 > > │ .......................>;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................... │
00:00:30 v #2118 > > │ ............................................................................ │
00:00:30 v #2119 > > │ ........                                                                     │
00:00:30 v #2120 > > │ ......................./;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... │
00:00:30 v #2121 > > │ ............................................................................ │
00:00:30 v #2122 > > │ ........                                                                     │
00:00:30 v #2123 > > │ ......................>//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................. │
00:00:30 v #2124 > > │ ............................................................................ │
00:00:30 v #2125 > > │ ........                                                                     │
00:00:30 v #2126 > > │ ......................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................. │
00:00:30 v #2127 > > │ ............................................................................ │
00:00:30 v #2128 > > │ ........                                                                     │
00:00:30 v #2129 > > │ .....................>////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................ │
00:00:30 v #2130 > > │ ............................................................................ │
00:00:30 v #2131 > > │ ........                                                                     │
00:00:30 v #2132 > > │ ....................>//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............... │
00:00:30 v #2133 > > │ ............................................................................ │
00:00:30 v #2134 > > │ ........                                                                     │
00:00:30 v #2135 > > │ ....................>//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.............. │
00:00:30 v #2136 > > │ ......;;;;;;;;;;;;;;;;;..................................................... │
00:00:30 v #2137 > > │ ........                                                                     │
00:00:30 v #2138 > > │ ...................>////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............. │
00:00:30 v #2139 > > │ .....>/;;;;;;;;;;;;;;;;\.................................................... │
00:00:30 v #2140 > > │ ........                                                                     │
00:00:30 v #2141 > > │ .................../////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............ │
00:00:30 v #2142 > > │ ....>///;;;;;;;;;;;;;;;;.................................................... │
00:00:30 v #2143 > > │ ........                                                                     │
00:00:30 v #2144 > > │ ..................///////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............ │
00:00:30 v #2145 > > │ ...>////;;;;;;;;;;;;;;;;;..............>;;;;;;;;;........................... │
00:00:30 v #2146 > > │ ........                                                                     │
00:00:30 v #2147 > > │ ...................//////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;........... │
00:00:30 v #2148 > > │ ..>/////;;;;;;;;;;;;;;;;;;............>//;;;;;;;;\.......................... │
00:00:30 v #2149 > > │ ........                                                                     │
00:00:30 v #2150 > > │ ...................///////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.......... │
00:00:30 v #2151 > > │ ..///////;;;;;;;;;;;;;;;;;\...........///;;;;;;;;;.......................... │
00:00:30 v #2152 > > │ ........                                                                     │
00:00:30 v #2153 > > │ ...................///////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;......... │
00:00:30 v #2154 > > │ ...///////;;;;;;;;;;;;;;;;;...........////;;;<<<<<<......................... │
00:00:30 v #2155 > > │ ........                                                                     │
00:00:30 v #2156 > > │ ....................///////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;........ │
00:00:30 v #2157 > > │ ...////////;;;;;;;<<<<<<<<<<...........///<<<<<<<<.......................... │
00:00:30 v #2158 > > │ ........                                                                     │
00:00:30 v #2159 > > │ ....................///////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;....... │
00:00:30 v #2160 > > │ ....///////<<<<<<<<<<<<<<<.............//<<<<<<<............................ │
00:00:30 v #2161 > > │ ........                                                                     │
00:00:30 v #2162 > > │ .....................//////////;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<....... │
00:00:30 v #2163 > > │ ..../////<<<<<<<<<<<<<<<.................................................... │
00:00:30 v #2164 > > │ ........                                                                     │
00:00:30 v #2165 > > │ .....................///////////;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<.......... │
00:00:30 v #2166 > > │ .....///<<<<<<<<<<<<<<...................................................... │
00:00:30 v #2167 > > │ ........                                                                     │
00:00:30 v #2168 > > │ .....................////////////<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<............. │
00:00:30 v #2169 > > │ .....//<<<<<<<<<............................................................ │
00:00:30 v #2170 > > │ ........                                                                     │
00:00:30 v #2171 > > │ ......................//////////<<<<<<<<<<<<<<<<<<<<<<<<<<<<................ │
00:00:30 v #2172 > > │ ............................................................................ │
00:00:30 v #2173 > > │ ........                                                                     │
00:00:30 v #2174 > > │ ....................../////////<<<<<<<<<<<<<<<<<<<<<<<<<<................... │
00:00:30 v #2175 > > │ ............................................................................ │
00:00:30 v #2176 > > │ ........                                                                     │
00:00:30 v #2177 > > │ ......................///////<<<<<<<<<<<<<<<<<<<<<<<<<...................... │
00:00:30 v #2178 > > │ ............................................................................ │
00:00:30 v #2179 > > │ ........                                                                     │
00:00:30 v #2180 > > │ ......................./////<<<<<<<<<<<<<<<<<<<<............................ │
00:00:30 v #2181 > > │ ............................................................................ │
00:00:30 v #2182 > > │ ........                                                                     │
00:00:30 v #2183 > > │ .......................///<<<<<<<<<<<<...................................... │
00:00:30 v #2184 > > │ ............................................................................ │
00:00:30 v #2185 > > │ ........                                                                     │
00:00:30 v #2186 > > │ ........................<<<<<............................................... │
00:00:30 v #2187 > > │ ............................................................................ │
00:00:30 v #2188 > > │ ........                                                                     │
00:00:30 v #2189 > > │ ............................................................................ │
00:00:30 v #2190 > > │ ............................................................................ │
00:00:30 v #2191 > > │ ........                                                                     │
00:00:30 v #2192 > > │ ............................................................................ │
00:00:30 v #2193 > > │ ............................................................................ │
00:00:30 v #2194 > > │ ........                                                                     │
00:00:30 v #2195 > > │ ............................................................................ │
00:00:30 v #2196 > > │ ............................................................................ │
00:00:30 v #2197 > > │ ........                                                                     │
00:00:30 v #2198 > > │ ............................................................................ │
00:00:30 v #2199 > > │ ............................................................................ │
00:00:30 v #2200 > > │ ........                                                                     │
00:00:30 v #2201 > > │ ............................................................................ │
00:00:30 v #2202 > > │ ............................................................................ │
00:00:30 v #2203 > > │ ........                                                                     │
00:00:30 v #2204 > > │ ............................................................................ │
00:00:30 v #2205 > > │ ............................................................................ │
00:00:30 v #2206 > > │ ........                                                                     │
00:00:30 v #2207 > > │ ............................................................................ │
00:00:30 v #2208 > > │ ............................................................................ │
00:00:30 v #2209 > > │ ........                                                                     │
00:00:30 v #2210 > > │ ............................................................................ │
00:00:30 v #2211 > > │ ............................................................................ │
00:00:30 v #2212 > > │ ........                                                                     │
00:00:30 v #2213 > > │ ............................................................................ │
00:00:30 v #2214 > > │ ............................................................................ │
00:00:30 v #2215 > > │ ........                                                                     │
00:00:30 v #2216 > > │ ............................................................................ │
00:00:30 v #2217 > > │ ............................................................................ │
00:00:30 v #2218 > > │ ........                                                                     │
00:00:30 v #2219 > > │                                                                              │
00:00:30 v #2220 > > │ ............................................................................ │
00:00:30 v #2221 > > │ ............................................................................ │
00:00:30 v #2222 > > │ ........                                                                     │
00:00:30 v #2223 > > │ ............................................................................ │
00:00:30 v #2224 > > │ ............................................................................ │
00:00:30 v #2225 > > │ ........                                                                     │
00:00:30 v #2226 > > │ ............................................................................ │
00:00:30 v #2227 > > │ ............................................................................ │
00:00:30 v #2228 > > │ ........                                                                     │
00:00:30 v #2229 > > │ ............................................................................ │
00:00:30 v #2230 > > │ ............................................................................ │
00:00:30 v #2231 > > │ ........                                                                     │
00:00:30 v #2232 > > │ ............................................................................ │
00:00:30 v #2233 > > │ ............................................................................ │
00:00:30 v #2234 > > │ ........                                                                     │
00:00:30 v #2235 > > │ ............................................................................ │
00:00:30 v #2236 > > │ ............................................................................ │
00:00:30 v #2237 > > │ ........                                                                     │
00:00:30 v #2238 > > │ ............................................................................ │
00:00:30 v #2239 > > │ ............................................................................ │
00:00:30 v #2240 > > │ ........                                                                     │
00:00:30 v #2241 > > │ ............................................................................ │
00:00:30 v #2242 > > │ ............................................................................ │
00:00:30 v #2243 > > │ ........                                                                     │
00:00:30 v #2244 > > │ ............................................................................ │
00:00:30 v #2245 > > │ ............................................................................ │
00:00:30 v #2246 > > │ ........                                                                     │
00:00:30 v #2247 > > │ ........................;;;;;;;;;;.......................................... │
00:00:30 v #2248 > > │ ............................................................................ │
00:00:30 v #2249 > > │ ........                                                                     │
00:00:30 v #2250 > > │ .......................>;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..................... │
00:00:30 v #2251 > > │ ............................................................................ │
00:00:30 v #2252 > > │ ........                                                                     │
00:00:30 v #2253 > > │ .......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................... │
00:00:30 v #2254 > > │ ............................................................................ │
00:00:30 v #2255 > > │ ........                                                                     │
00:00:30 v #2256 > > │ ......................>//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... │
00:00:30 v #2257 > > │ ............................................................................ │
00:00:30 v #2258 > > │ ........                                                                     │
00:00:30 v #2259 > > │ .....................>////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................. │
00:00:30 v #2260 > > │ ............................................................................ │
00:00:30 v #2261 > > │ ........                                                                     │
00:00:30 v #2262 > > │ .....................//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................. │
00:00:30 v #2263 > > │ ............................................................................ │
00:00:30 v #2264 > > │ ........                                                                     │
00:00:30 v #2265 > > │ ....................>//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............... │
00:00:30 v #2266 > > │ ............................................................................ │
00:00:30 v #2267 > > │ ........                                                                     │
00:00:30 v #2268 > > │ ....................////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.............. │
00:00:30 v #2269 > > │ ....../;;;;;;;;;;;;;;;...................................................... │
00:00:30 v #2270 > > │ ........                                                                     │
00:00:30 v #2271 > > │ ...................>/////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............. │
00:00:30 v #2272 > > │ .....>/;;;;;;;;;;;;;;;;..................................................... │
00:00:30 v #2273 > > │ ........                                                                     │
00:00:30 v #2274 > > │ ..................>//////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............ │
00:00:30 v #2275 > > │ ....>///;;;;;;;;;;;;;;;;.................................................... │
00:00:30 v #2276 > > │ ........                                                                     │
00:00:30 v #2277 > > │ ..................////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;........... │
00:00:30 v #2278 > > │ ...>////;;;;;;;;;;;;;;;;;..............>;;;;;;;;;........................... │
00:00:30 v #2279 > > │ ........                                                                     │
00:00:30 v #2280 > > │ ................../////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.......... │
00:00:30 v #2281 > > │ ..>//////;;;;;;;;;;;;;;;;;............>//;;;;;;;;\.......................... │
00:00:30 v #2282 > > │ ........                                                                     │
00:00:30 v #2283 > > │ ................../////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;......... │
00:00:30 v #2284 > > │ ..////////;;;;;;;;;;;;;;;;;..........////;;;;;;;;;\......................... │
00:00:30 v #2285 > > │ ........                                                                     │
00:00:30 v #2286 > > │ .................../////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;........ │
00:00:30 v #2287 > > │ ..////////;;;;;;;;;;;;;;;;;;..........////;<<<<<<<<......................... │
00:00:30 v #2288 > > │ ........                                                                     │
00:00:30 v #2289 > > │ .................../////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;....... │
00:00:30 v #2290 > > │ ...////////;;<<<<<<<<<<<<<<<...........///<<<<<<<<.......................... │
00:00:30 v #2291 > > │ ........                                                                     │
00:00:30 v #2292 > > │ ..................../////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<....... │
00:00:30 v #2293 > > │ ....////////<<<<<<<<<<<<<<.............//<<<<<<<............................ │
00:00:30 v #2294 > > │ ........                                                                     │
00:00:30 v #2295 > > │ ....................//////////////;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<......... │
00:00:30 v #2296 > > │ ....//////<<<<<<<<<<<<<<.................................................... │
00:00:30 v #2297 > > │ ........                                                                     │
00:00:30 v #2298 > > │ ....................//////////////;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<........... │
00:00:30 v #2299 > > │ .....////<<<<<<<<<<<<<...................................................... │
00:00:30 v #2300 > > │ ........                                                                     │
00:00:30 v #2301 > > │ ...................../////////////<<<<<<<<<<<<<<<<<<<<<<<<<<<<.............. │
00:00:30 v #2302 > > │ ......<<<<<<<<<<<........................................................... │
00:00:30 v #2303 > > │ ........                                                                     │
00:00:30 v #2304 > > │ .....................////////////<<<<<<<<<<<<<<<<<<<<<<<<<<................. │
00:00:30 v #2305 > > │ ............................................................................ │
00:00:30 v #2306 > > │ ........                                                                     │
00:00:30 v #2307 > > │ ....................../////////<<<<<<<<<<<<<<<<<<<<<<<<<.................... │
00:00:30 v #2308 > > │ ............................................................................ │
00:00:30 v #2309 > > │ ........                                                                     │
00:00:30 v #2310 > > │ ......................///////<<<<<<<<<<<<<<<<<<<<<<<<<...................... │
00:00:30 v #2311 > > │ ............................................................................ │
00:00:30 v #2312 > > │ ........                                                                     │
00:00:30 v #2313 > > │ ......................./////<<<<<<<<<<<<<<<<<<<<<<.......................... │
00:00:30 v #2314 > > │ ............................................................................ │
00:00:30 v #2315 > > │ ........                                                                     │
00:00:30 v #2316 > > │ .......................////<<<<<<<<<<<<<<................................... │
00:00:30 v #2317 > > │ ............................................................................ │
00:00:30 v #2318 > > │ ........                                                                     │
00:00:30 v #2319 > > │ ......................../<<<<<<<<........................................... │
00:00:30 v #2320 > > │ ............................................................................ │
00:00:30 v #2321 > > │ ........                                                                     │
00:00:30 v #2322 > > │ ............................................................................ │
00:00:30 v #2323 > > │ ............................................................................ │
00:00:30 v #2324 > > │ ........                                                                     │
00:00:30 v #2325 > > │ ............................................................................ │
00:00:30 v #2326 > > │ ............................................................................ │
00:00:30 v #2327 > > │ ........                                                                     │
00:00:30 v #2328 > > │ ............................................................................ │
00:00:30 v #2329 > > │ ............................................................................ │
00:00:30 v #2330 > > │ ........                                                                     │
00:00:30 v #2331 > > │ ............................................................................ │
00:00:30 v #2332 > > │ ............................................................................ │
00:00:30 v #2333 > > │ ........                                                                     │
00:00:30 v #2334 > > │ ............................................................................ │
00:00:30 v #2335 > > │ ............................................................................ │
00:00:30 v #2336 > > │ ........                                                                     │
00:00:30 v #2337 > > │ ............................................................................ │
00:00:30 v #2338 > > │ ............................................................................ │
00:00:30 v #2339 > > │ ........                                                                     │
00:00:30 v #2340 > > │ ............................................................................ │
00:00:30 v #2341 > > │ ............................................................................ │
00:00:30 v #2342 > > │ ........                                                                     │
00:00:30 v #2343 > > │ ............................................................................ │
00:00:30 v #2344 > > │ ............................................................................ │
00:00:30 v #2345 > > │ ........                                                                     │
00:00:30 v #2346 > > │ ............................................................................ │
00:00:30 v #2347 > > │ ............................................................................ │
00:00:30 v #2348 > > │ ........                                                                     │
00:00:30 v #2349 > > │ ............................................................................ │
00:00:30 v #2350 > > │ ............................................................................ │
00:00:30 v #2351 > > │ ........                                                                     │
00:00:30 v #2352 > > │                                                                              │
00:00:30 v #2353 > > │ ............................................................................ │
00:00:30 v #2354 > > │ ............................................................................ │
00:00:30 v #2355 > > │ ........                                                                     │
00:00:30 v #2356 > > │ ............................................................................ │
00:00:30 v #2357 > > │ ............................................................................ │
00:00:30 v #2358 > > │ ........                                                                     │
00:00:30 v #2359 > > │ ............................................................................ │
00:00:30 v #2360 > > │ ............................................................................ │
00:00:30 v #2361 > > │ ........                                                                     │
00:00:30 v #2362 > > │ ............................................................................ │
00:00:30 v #2363 > > │ ............................................................................ │
00:00:30 v #2364 > > │ ........                                                                     │
00:00:30 v #2365 > > │ ............................................................................ │
00:00:30 v #2366 > > │ ............................................................................ │
00:00:30 v #2367 > > │ ........                                                                     │
00:00:30 v #2368 > > │ ............................................................................ │
00:00:30 v #2369 > > │ ............................................................................ │
00:00:30 v #2370 > > │ ........                                                                     │
00:00:30 v #2371 > > │ ............................................................................ │
00:00:30 v #2372 > > │ ............................................................................ │
00:00:30 v #2373 > > │ ........                                                                     │
00:00:30 v #2374 > > │ ............................................................................ │
00:00:30 v #2375 > > │ ............................................................................ │
00:00:30 v #2376 > > │ ........                                                                     │
00:00:30 v #2377 > > │ ............................................................................ │
00:00:30 v #2378 > > │ ............................................................................ │
00:00:30 v #2379 > > │ ........                                                                     │
00:00:30 v #2380 > > │ ........................;;;;;;;;;........................................... │
00:00:30 v #2381 > > │ ............................................................................ │
00:00:30 v #2382 > > │ ........                                                                     │
00:00:30 v #2383 > > │ .......................>;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................... │
00:00:30 v #2384 > > │ ............................................................................ │
00:00:30 v #2385 > > │ ........                                                                     │
00:00:30 v #2386 > > │ ......................>//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..................... │
00:00:30 v #2387 > > │ ............................................................................ │
00:00:30 v #2388 > > │ ........                                                                     │
00:00:30 v #2389 > > │ ......................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................... │
00:00:30 v #2390 > > │ ............................................................................ │
00:00:30 v #2391 > > │ ........                                                                     │
00:00:30 v #2392 > > │ .....................>/////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................. │
00:00:30 v #2393 > > │ ............................................................................ │
00:00:30 v #2394 > > │ ........                                                                     │
00:00:30 v #2395 > > │ ....................>//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................. │
00:00:30 v #2396 > > │ ............................................................................ │
00:00:30 v #2397 > > │ ........                                                                     │
00:00:30 v #2398 > > │ ....................>///////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................ │
00:00:30 v #2399 > > │ ............................................................................ │
00:00:30 v #2400 > > │ ........                                                                     │
00:00:30 v #2401 > > │ ...................>/////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.............. │
00:00:30 v #2402 > > │ ......;;;;;;;;;;;;;;;;...................................................... │
00:00:30 v #2403 > > │ ........                                                                     │
00:00:30 v #2404 > > │ ...................///////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............. │
00:00:30 v #2405 > > │ .....>//;;;;;;;;;;;;;;;..................................................... │
00:00:30 v #2406 > > │ ........                                                                     │
00:00:30 v #2407 > > │ ..................>////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............ │
00:00:30 v #2408 > > │ ....>///;;;;;;;;;;;;;;;;.................................................... │
00:00:30 v #2409 > > │ ........                                                                     │
00:00:30 v #2410 > > │ ................../////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.......... │
00:00:30 v #2411 > > │ ...>/////;;;;;;;;;;;;;;;;..............>;;;;;;;;\........................... │
00:00:30 v #2412 > > │ ........                                                                     │
00:00:30 v #2413 > > │ .................>//////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\......... │
00:00:30 v #2414 > > │ ..>///////;;;;;;;;;;;;;;;;............>//;;;;;;;;\.......................... │
00:00:30 v #2415 > > │ ........                                                                     │
00:00:30 v #2416 > > │ .................////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;........ │
00:00:30 v #2417 > > │ ./////////;;;;;;;;;;;;;;;;;..........>////;;;;;;;;;......................... │
00:00:30 v #2418 > > │ ........                                                                     │
00:00:30 v #2419 > > │ ..................////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;....... │
00:00:30 v #2420 > > │ ../////////;;;;;;;;;;;;<<<<<........../////<<<<<<<<......................... │
00:00:30 v #2421 > > │ ........                                                                     │
00:00:30 v #2422 > > │ ................../////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<...... │
00:00:30 v #2423 > > │ .../////////;<<<<<<<<<<<<<<...........////<<<<<<<<.......................... │
00:00:30 v #2424 > > │ ........                                                                     │
00:00:30 v #2425 > > │ ...................////////////////;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<........ │
00:00:30 v #2426 > > │ .../////////<<<<<<<<<<<<<<.............//<<<<<<<............................ │
00:00:30 v #2427 > > │ ........                                                                     │
00:00:30 v #2428 > > │ .................../////////////////;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<.......... │
00:00:30 v #2429 > > │ ....//////<<<<<<<<<<<<<<.................................................... │
00:00:30 v #2430 > > │ ........                                                                     │
00:00:30 v #2431 > > │ ....................////////////////<<<<<<<<<<<<<<<<<<<<<<<<<<<............. │
00:00:30 v #2432 > > │ .....///<<<<<<<<<<<<<<...................................................... │
00:00:30 v #2433 > > │ ........                                                                     │
00:00:30 v #2434 > > │ .....................//////////////<<<<<<<<<<<<<<<<<<<<<<<<<<............... │
00:00:30 v #2435 > > │ ......//<<<<<<<<<<.......................................................... │
00:00:30 v #2436 > > │ ........                                                                     │
00:00:30 v #2437 > > │ ...................../////////////<<<<<<<<<<<<<<<<<<<<<<<<<................. │
00:00:30 v #2438 > > │ ......<..................................................................... │
00:00:30 v #2439 > > │ ........                                                                     │
00:00:30 v #2440 > > │ ......................//////////<<<<<<<<<<<<<<<<<<<<<<<<.................... │
00:00:30 v #2441 > > │ ............................................................................ │
00:00:30 v #2442 > > │ ........                                                                     │
00:00:30 v #2443 > > │ ....................../////////<<<<<<<<<<<<<<<<<<<<<<<...................... │
00:00:30 v #2444 > > │ ............................................................................ │
00:00:30 v #2445 > > │ ........                                                                     │
00:00:30 v #2446 > > │ .......................//////<<<<<<<<<<<<<<<<<<<<<<......................... │
00:00:30 v #2447 > > │ ............................................................................ │
00:00:30 v #2448 > > │ ........                                                                     │
00:00:30 v #2449 > > │ ........................////<<<<<<<<<<<<<<<................................. │
00:00:30 v #2450 > > │ ............................................................................ │
00:00:30 v #2451 > > │ ........                                                                     │
00:00:30 v #2452 > > │ ........................//<<<<<<<<<<........................................ │
00:00:30 v #2453 > > │ ............................................................................ │
00:00:30 v #2454 > > │ ........                                                                     │
00:00:30 v #2455 > > │ .........................<<<................................................ │
00:00:30 v #2456 > > │ ............................................................................ │
00:00:30 v #2457 > > │ ........                                                                     │
00:00:30 v #2458 > > │ ............................................................................ │
00:00:30 v #2459 > > │ ............................................................................ │
00:00:30 v #2460 > > │ ........                                                                     │
00:00:30 v #2461 > > │ ............................................................................ │
00:00:30 v #2462 > > │ ............................................................................ │
00:00:30 v #2463 > > │ ........                                                                     │
00:00:30 v #2464 > > │ ............................................................................ │
00:00:30 v #2465 > > │ ............................................................................ │
00:00:30 v #2466 > > │ ........                                                                     │
00:00:30 v #2467 > > │ ............................................................................ │
00:00:30 v #2468 > > │ ............................................................................ │
00:00:30 v #2469 > > │ ........                                                                     │
00:00:30 v #2470 > > │ ............................................................................ │
00:00:30 v #2471 > > │ ............................................................................ │
00:00:30 v #2472 > > │ ........                                                                     │
00:00:30 v #2473 > > │ ............................................................................ │
00:00:30 v #2474 > > │ ............................................................................ │
00:00:30 v #2475 > > │ ........                                                                     │
00:00:30 v #2476 > > │ ............................................................................ │
00:00:30 v #2477 > > │ ............................................................................ │
00:00:30 v #2478 > > │ ........                                                                     │
00:00:30 v #2479 > > │ ............................................................................ │
00:00:30 v #2480 > > │ ............................................................................ │
00:00:30 v #2481 > > │ ........                                                                     │
00:00:30 v #2482 > > │ ............................................................................ │
00:00:30 v #2483 > > │ ............................................................................ │
00:00:30 v #2484 > > │ ........                                                                     │
00:00:30 v #2485 > > │                                                                              │
00:00:30 v #2486 > > │ ............................................................................ │
00:00:30 v #2487 > > │ ............................................................................ │
00:00:30 v #2488 > > │ ........                                                                     │
00:00:30 v #2489 > > │ ............................................................................ │
00:00:30 v #2490 > > │ ............................................................................ │
00:00:30 v #2491 > > │ ........                                                                     │
00:00:30 v #2492 > > │ ............................................................................ │
00:00:30 v #2493 > > │ ............................................................................ │
00:00:30 v #2494 > > │ ........                                                                     │
00:00:30 v #2495 > > │ ............................................................................ │
00:00:30 v #2496 > > │ ............................................................................ │
00:00:30 v #2497 > > │ ........                                                                     │
00:00:30 v #2498 > > │ ............................................................................ │
00:00:30 v #2499 > > │ ............................................................................ │
00:00:30 v #2500 > > │ ........                                                                     │
00:00:30 v #2501 > > │ ............................................................................ │
00:00:30 v #2502 > > │ ............................................................................ │
00:00:30 v #2503 > > │ ........                                                                     │
00:00:30 v #2504 > > │ ............................................................................ │
00:00:30 v #2505 > > │ ............................................................................ │
00:00:30 v #2506 > > │ ........                                                                     │
00:00:30 v #2507 > > │ ............................................................................ │
00:00:30 v #2508 > > │ ............................................................................ │
00:00:30 v #2509 > > │ ........                                                                     │
00:00:30 v #2510 > > │ ............................................................................ │
00:00:30 v #2511 > > │ ............................................................................ │
00:00:30 v #2512 > > │ ........                                                                     │
00:00:30 v #2513 > > │ .......................>;;;;;;;;............................................ │
00:00:30 v #2514 > > │ ............................................................................ │
00:00:30 v #2515 > > │ ........                                                                     │
00:00:30 v #2516 > > │ .......................>/;;;;;;;;;;;;;;;;;;;;;;;;;;;\....................... │
00:00:30 v #2517 > > │ ............................................................................ │
00:00:30 v #2518 > > │ ........                                                                     │
00:00:30 v #2519 > > │ ......................>//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................... │
00:00:30 v #2520 > > │ ............................................................................ │
00:00:30 v #2521 > > │ ........                                                                     │
00:00:30 v #2522 > > │ ......................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................... │
00:00:30 v #2523 > > │ ............................................................................ │
00:00:30 v #2524 > > │ ........                                                                     │
00:00:30 v #2525 > > │ .....................>//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... │
00:00:30 v #2526 > > │ ............................................................................ │
00:00:30 v #2527 > > │ ........                                                                     │
00:00:30 v #2528 > > │ ....................>////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................. │
00:00:30 v #2529 > > │ ............................................................................ │
00:00:30 v #2530 > > │ ........                                                                     │
00:00:30 v #2531 > > │ ..................../////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................ │
00:00:30 v #2532 > > │ ............................................................................ │
00:00:30 v #2533 > > │ ........                                                                     │
00:00:30 v #2534 > > │ ...................>///////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.............. │
00:00:30 v #2535 > > │ ......;;;;;;;;;;;;;;;\...................................................... │
00:00:30 v #2536 > > │ ........                                                                     │
00:00:30 v #2537 > > │ ..................>/////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............. │
00:00:30 v #2538 > > │ .....>/;;;;;;;;;;;;;;;;..................................................... │
00:00:30 v #2539 > > │ ........                                                                     │
00:00:30 v #2540 > > │ ..................///////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............ │
00:00:30 v #2541 > > │ ....>///;;;;;;;;;;;;;;;;.................................................... │
00:00:30 v #2542 > > │ ........                                                                     │
00:00:30 v #2543 > > │ .................>////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.......... │
00:00:30 v #2544 > > │ ...>/////;;;;;;;;;;;;;;;;..............>/;;;;;;;\........................... │
00:00:30 v #2545 > > │ ........                                                                     │
00:00:30 v #2546 > > │ ................>//////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\........ │
00:00:30 v #2547 > > │ ..>///////;;;;;;;;;;;;;;;;\...........>///;;;;;;;\.......................... │
00:00:30 v #2548 > > │ ........                                                                     │
00:00:30 v #2549 > > │ ................>///////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;....... │
00:00:30 v #2550 > > │ .>/////////;;;;;;;;;;;;;;;;;.........>////;;;;;;;;;......................... │
00:00:30 v #2551 > > │ ........                                                                     │
00:00:30 v #2552 > > │ .................///////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<...... │
00:00:30 v #2553 > > │ .///////////;;;;;;<<<<<<<<<<.........//////<<<<<<<<......................... │
00:00:30 v #2554 > > │ ........                                                                     │
00:00:30 v #2555 > > │ ................./////////////////////;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<....... │
00:00:30 v #2556 > > │ ..///////////<<<<<<<<<<<<<<...........////<<<<<<<<.......................... │
00:00:30 v #2557 > > │ ........                                                                     │
00:00:30 v #2558 > > │ ..................////////////////////;;;;<<<<<<<<<<<<<<<<<<<<<<<<<......... │
00:00:30 v #2559 > > │ .../////////<<<<<<<<<<<<<..............//<<<<<<<............................ │
00:00:30 v #2560 > > │ ........                                                                     │
00:00:30 v #2561 > > │ ...................////////////////////<<<<<<<<<<<<<<<<<<<<<<<<<<........... │
00:00:30 v #2562 > > │ ....///////<<<<<<<<<<<<<.................................................... │
00:00:30 v #2563 > > │ ........                                                                     │
00:00:30 v #2564 > > │ ...................//////////////////<<<<<<<<<<<<<<<<<<<<<<<<<.............. │
00:00:30 v #2565 > > │ .....////<<<<<<<<<<<<<...................................................... │
00:00:30 v #2566 > > │ ........                                                                     │
00:00:30 v #2567 > > │ ....................////////////////<<<<<<<<<<<<<<<<<<<<<<<<................ │
00:00:30 v #2568 > > │ ......//<<<<<<<<<<<......................................................... │
00:00:30 v #2569 > > │ ........                                                                     │
00:00:30 v #2570 > > │ .....................//////////////<<<<<<<<<<<<<<<<<<<<<<<.................. │
00:00:30 v #2571 > > │ .......<<................................................................... │
00:00:30 v #2572 > > │ ........                                                                     │
00:00:30 v #2573 > > │ ......................////////////<<<<<<<<<<<<<<<<<<<<<<.................... │
00:00:30 v #2574 > > │ ............................................................................ │
00:00:30 v #2575 > > │ ........                                                                     │
00:00:30 v #2576 > > │ ......................//////////<<<<<<<<<<<<<<<<<<<<<<...................... │
00:00:30 v #2577 > > │ ............................................................................ │
00:00:30 v #2578 > > │ ........                                                                     │
00:00:30 v #2579 > > │ .......................///////<<<<<<<<<<<<<<<<<<<<<<........................ │
00:00:30 v #2580 > > │ ............................................................................ │
00:00:30 v #2581 > > │ ........                                                                     │
00:00:30 v #2582 > > │ ......................../////<<<<<<<<<<<<<<<<............................... │
00:00:30 v #2583 > > │ ............................................................................ │
00:00:30 v #2584 > > │ ........                                                                     │
00:00:30 v #2585 > > │ ........................////<<<<<<<<<<...................................... │
00:00:30 v #2586 > > │ ............................................................................ │
00:00:30 v #2587 > > │ ........                                                                     │
00:00:30 v #2588 > > │ ........................./<<<<<<............................................ │
00:00:30 v #2589 > > │ ............................................................................ │
00:00:30 v #2590 > > │ ........                                                                     │
00:00:30 v #2591 > > │ ............................................................................ │
00:00:30 v #2592 > > │ ............................................................................ │
00:00:30 v #2593 > > │ ........                                                                     │
00:00:30 v #2594 > > │ ............................................................................ │
00:00:30 v #2595 > > │ ............................................................................ │
00:00:30 v #2596 > > │ ........                                                                     │
00:00:30 v #2597 > > │ ............................................................................ │
00:00:30 v #2598 > > │ ............................................................................ │
00:00:30 v #2599 > > │ ........                                                                     │
00:00:30 v #2600 > > │ ............................................................................ │
00:00:30 v #2601 > > │ ............................................................................ │
00:00:30 v #2602 > > │ ........                                                                     │
00:00:30 v #2603 > > │ ............................................................................ │
00:00:30 v #2604 > > │ ............................................................................ │
00:00:30 v #2605 > > │ ........                                                                     │
00:00:30 v #2606 > > │ ............................................................................ │
00:00:30 v #2607 > > │ ............................................................................ │
00:00:30 v #2608 > > │ ........                                                                     │
00:00:30 v #2609 > > │ ............................................................................ │
00:00:30 v #2610 > > │ ............................................................................ │
00:00:30 v #2611 > > │ ........                                                                     │
00:00:30 v #2612 > > │ ............................................................................ │
00:00:30 v #2613 > > │ ............................................................................ │
00:00:30 v #2614 > > │ ........                                                                     │
00:00:30 v #2615 > > │ ............................................................................ │
00:00:30 v #2616 > > │ ............................................................................ │
00:00:30 v #2617 > > │ ........                                                                     │
00:00:30 v #2618 > > │                                                                              │
00:00:30 v #2619 > > │ ............................................................................ │
00:00:30 v #2620 > > │ ............................................................................ │
00:00:30 v #2621 > > │ ........                                                                     │
00:00:30 v #2622 > > │ ............................................................................ │
00:00:30 v #2623 > > │ ............................................................................ │
00:00:30 v #2624 > > │ ........                                                                     │
00:00:30 v #2625 > > │ ............................................................................ │
00:00:30 v #2626 > > │ ............................................................................ │
00:00:30 v #2627 > > │ ........                                                                     │
00:00:30 v #2628 > > │ ............................................................................ │
00:00:30 v #2629 > > │ ............................................................................ │
00:00:30 v #2630 > > │ ........                                                                     │
00:00:30 v #2631 > > │ ............................................................................ │
00:00:30 v #2632 > > │ ............................................................................ │
00:00:30 v #2633 > > │ ........                                                                     │
00:00:30 v #2634 > > │ ............................................................................ │
00:00:30 v #2635 > > │ ............................................................................ │
00:00:30 v #2636 > > │ ........                                                                     │
00:00:30 v #2637 > > │ ............................................................................ │
00:00:30 v #2638 > > │ ............................................................................ │
00:00:30 v #2639 > > │ ........                                                                     │
00:00:30 v #2640 > > │ ............................................................................ │
00:00:30 v #2641 > > │ ............................................................................ │
00:00:30 v #2642 > > │ ........                                                                     │
00:00:30 v #2643 > > │ ............................................................................ │
00:00:30 v #2644 > > │ ............................................................................ │
00:00:30 v #2645 > > │ ........                                                                     │
00:00:30 v #2646 > > │ .......................;;;;;;;.............................................. │
00:00:30 v #2647 > > │ ............................................................................ │
00:00:30 v #2648 > > │ ........                                                                     │
00:00:30 v #2649 > > │ ......................./;;;;;;;;;;;;;;;;;;;;;;;;;;;......................... │
00:00:30 v #2650 > > │ ............................................................................ │
00:00:30 v #2651 > > │ ........                                                                     │
00:00:30 v #2652 > > │ ......................>///;;;;;;;;;;;;;;;;;;;;;;;;;;;....................... │
00:00:30 v #2653 > > │ ............................................................................ │
00:00:30 v #2654 > > │ ........                                                                     │
00:00:30 v #2655 > > │ .....................>////;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................... │
00:00:30 v #2656 > > │ ............................................................................ │
00:00:30 v #2657 > > │ ........                                                                     │
00:00:30 v #2658 > > │ .....................///////;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................... │
00:00:30 v #2659 > > │ ............................................................................ │
00:00:30 v #2660 > > │ ........                                                                     │
00:00:30 v #2661 > > │ ....................>/////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................. │
00:00:30 v #2662 > > │ ............................................................................ │
00:00:30 v #2663 > > │ ........                                                                     │
00:00:30 v #2664 > > │ ...................>///////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................ │
00:00:30 v #2665 > > │ ............................................................................ │
00:00:30 v #2666 > > │ ........                                                                     │
00:00:30 v #2667 > > │ ...................>///////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.............. │
00:00:30 v #2668 > > │ ....../;;;;;;;;;;;;;;....................................................... │
00:00:30 v #2669 > > │ ........                                                                     │
00:00:30 v #2670 > > │ ..................>/////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............. │
00:00:30 v #2671 > > │ .....>/;;;;;;;;;;;;;;;;..................................................... │
00:00:30 v #2672 > > │ ........                                                                     │
00:00:30 v #2673 > > │ ..................////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;........... │
00:00:30 v #2674 > > │ ....>///;;;;;;;;;;;;;;;;.................................................... │
00:00:30 v #2675 > > │ ........                                                                     │
00:00:30 v #2676 > > │ .................>//////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;......... │
00:00:30 v #2677 > > │ ...>///////;;;;;;;;;;;;;;..............>/;;;;;;;............................ │
00:00:30 v #2678 > > │ ........                                                                     │
00:00:30 v #2679 > > │ ................>////////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;........ │
00:00:30 v #2680 > > │ ..>/////////;;;;;;;;;;;;;;;...........>///;;;;;;;;.......................... │
00:00:30 v #2681 > > │ ........                                                                     │
00:00:30 v #2682 > > │ ................/////////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<...... │
00:00:30 v #2683 > > │ .>///////////;;;;;;;;;;;;;;<.........>////;;;;;;;;<......................... │
00:00:30 v #2684 > > │ ........                                                                     │
00:00:30 v #2685 > > │ ...............////////////////////////;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<....... │
00:00:30 v #2686 > > │ .////////////;<<<<<<<<<<<<<<.........//////;<<<<<<<......................... │
00:00:30 v #2687 > > │ ........                                                                     │
00:00:30 v #2688 > > │ ................////////////////////////;;;;<<<<<<<<<<<<<<<<<<<<<<<......... │
00:00:30 v #2689 > > │ ..////////////<<<<<<<<<<<<<.........../////<<<<<<<.......................... │
00:00:30 v #2690 > > │ ........                                                                     │
00:00:30 v #2691 > > │ .................////////////////////////<<<<<<<<<<<<<<<<<<<<<<<<<.......... │
00:00:30 v #2692 > > │ ...//////////<<<<<<<<<<<<..............//<<<<<<<............................ │
00:00:30 v #2693 > > │ ........                                                                     │
00:00:30 v #2694 > > │ ..................//////////////////////<<<<<<<<<<<<<<<<<<<<<<<<............ │
00:00:30 v #2695 > > │ ....////////<<<<<<<<<<<<.................................................... │
00:00:30 v #2696 > > │ ........                                                                     │
00:00:30 v #2697 > > │ ...................///////////////////<<<<<<<<<<<<<<<<<<<<<<<<.............. │
00:00:30 v #2698 > > │ ...../////<<<<<<<<<<<<...................................................... │
00:00:30 v #2699 > > │ ........                                                                     │
00:00:30 v #2700 > > │ ..................../////////////////<<<<<<<<<<<<<<<<<<<<<<<................ │
00:00:30 v #2701 > > │ ......///<<<<<<<<<<......................................................... │
00:00:30 v #2702 > > │ ........                                                                     │
00:00:30 v #2703 > > │ .....................///////////////<<<<<<<<<<<<<<<<<<<<<<.................. │
00:00:30 v #2704 > > │ ......./<<<................................................................. │
00:00:30 v #2705 > > │ ........                                                                     │
00:00:30 v #2706 > > │ .....................//////////////<<<<<<<<<<<<<<<<<<<<<.................... │
00:00:30 v #2707 > > │ ............................................................................ │
00:00:30 v #2708 > > │ ........                                                                     │
00:00:30 v #2709 > > │ ......................///////////<<<<<<<<<<<<<<<<<<<<<...................... │
00:00:30 v #2710 > > │ ............................................................................ │
00:00:30 v #2711 > > │ ........                                                                     │
00:00:30 v #2712 > > │ ......................./////////<<<<<<<<<<<<<<<<<<<<........................ │
00:00:30 v #2713 > > │ ............................................................................ │
00:00:30 v #2714 > > │ ........                                                                     │
00:00:30 v #2715 > > │ ........................///////<<<<<<<<<<<<<<<.............................. │
00:00:30 v #2716 > > │ ............................................................................ │
00:00:30 v #2717 > > │ ........                                                                     │
00:00:30 v #2718 > > │ .........................////<<<<<<<<<<<.................................... │
00:00:30 v #2719 > > │ ............................................................................ │
00:00:30 v #2720 > > │ ........                                                                     │
00:00:30 v #2721 > > │ ..........................//<<<<<<<......................................... │
00:00:30 v #2722 > > │ ............................................................................ │
00:00:30 v #2723 > > │ ........                                                                     │
00:00:30 v #2724 > > │ ...........................<<............................................... │
00:00:30 v #2725 > > │ ............................................................................ │
00:00:30 v #2726 > > │ ........                                                                     │
00:00:30 v #2727 > > │ ............................................................................ │
00:00:30 v #2728 > > │ ............................................................................ │
00:00:30 v #2729 > > │ ........                                                                     │
00:00:30 v #2730 > > │ ............................................................................ │
00:00:30 v #2731 > > │ ............................................................................ │
00:00:30 v #2732 > > │ ........                                                                     │
00:00:30 v #2733 > > │ ............................................................................ │
00:00:30 v #2734 > > │ ............................................................................ │
00:00:30 v #2735 > > │ ........                                                                     │
00:00:30 v #2736 > > │ ............................................................................ │
00:00:30 v #2737 > > │ ............................................................................ │
00:00:30 v #2738 > > │ ........                                                                     │
00:00:30 v #2739 > > │ ............................................................................ │
00:00:30 v #2740 > > │ ............................................................................ │
00:00:30 v #2741 > > │ ........                                                                     │
00:00:30 v #2742 > > │ ............................................................................ │
00:00:30 v #2743 > > │ ............................................................................ │
00:00:30 v #2744 > > │ ........                                                                     │
00:00:30 v #2745 > > │ ............................................................................ │
00:00:30 v #2746 > > │ ............................................................................ │
00:00:30 v #2747 > > │ ........                                                                     │
00:00:30 v #2748 > > │ ............................................................................ │
00:00:30 v #2749 > > │ ............................................................................ │
00:00:30 v #2750 > > │ ........                                                                     │
00:00:30 v #2751 > > │                                                                              │
00:00:30 v #2752 > > │ ............................................................................ │
00:00:30 v #2753 > > │ ............................................................................ │
00:00:30 v #2754 > > │ ........                                                                     │
00:00:30 v #2755 > > │ ............................................................................ │
00:00:30 v #2756 > > │ ............................................................................ │
00:00:30 v #2757 > > │ ........                                                                     │
00:00:30 v #2758 > > │ ............................................................................ │
00:00:30 v #2759 > > │ ............................................................................ │
00:00:30 v #2760 > > │ ........                                                                     │
00:00:30 v #2761 > > │ ............................................................................ │
00:00:30 v #2762 > > │ ............................................................................ │
00:00:30 v #2763 > > │ ........                                                                     │
00:00:30 v #2764 > > │ ............................................................................ │
00:00:30 v #2765 > > │ ............................................................................ │
00:00:30 v #2766 > > │ ........                                                                     │
00:00:30 v #2767 > > │ ............................................................................ │
00:00:30 v #2768 > > │ ............................................................................ │
00:00:30 v #2769 > > │ ........                                                                     │
00:00:30 v #2770 > > │ ............................................................................ │
00:00:30 v #2771 > > │ ............................................................................ │
00:00:30 v #2772 > > │ ........                                                                     │
00:00:30 v #2773 > > │ ............................................................................ │
00:00:30 v #2774 > > │ ............................................................................ │
00:00:30 v #2775 > > │ ........                                                                     │
00:00:30 v #2776 > > │ ............................................................................ │
00:00:30 v #2777 > > │ ............................................................................ │
00:00:30 v #2778 > > │ ........                                                                     │
00:00:30 v #2779 > > │ .......................;;;;................................................. │
00:00:30 v #2780 > > │ ............................................................................ │
00:00:30 v #2781 > > │ ........                                                                     │
00:00:30 v #2782 > > │ ......................>/;;;;;;;;;;;;;;;;;;;;;;;;............................ │
00:00:30 v #2783 > > │ ............................................................................ │
00:00:30 v #2784 > > │ ........                                                                     │
00:00:30 v #2785 > > │ ......................///;;;;;;;;;;;;;;;;;;;;;;;;;;......................... │
00:00:30 v #2786 > > │ ............................................................................ │
00:00:30 v #2787 > > │ ........                                                                     │
00:00:30 v #2788 > > │ .....................>////;/;;;;;;;;;;;;;;;;;;;;;;;;;....................... │
00:00:30 v #2789 > > │ ............................................................................ │
00:00:30 v #2790 > > │ ........                                                                     │
00:00:30 v #2791 > > │ ....................>////////;;;;;;;;;;;;;;;;;;;;;;;;;;..................... │
00:00:30 v #2792 > > │ ............................................................................ │
00:00:30 v #2793 > > │ ........                                                                     │
00:00:30 v #2794 > > │ ....................>////////;/;;;;;;;;;;;;;;;;;;;;;;;;;;................... │
00:00:30 v #2795 > > │ ............................................................................ │
00:00:30 v #2796 > > │ ........                                                                     │
00:00:30 v #2797 > > │ ...................>///////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................ │
00:00:30 v #2798 > > │ ............................................................................ │
00:00:30 v #2799 > > │ ........                                                                     │
00:00:30 v #2800 > > │ ...................///////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;............... │
00:00:30 v #2801 > > │ ......;;;;;;;;;;;;;;\....................................................... │
00:00:30 v #2802 > > │ ........                                                                     │
00:00:30 v #2803 > > │ ..................>////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............ │
00:00:30 v #2804 > > │ .....>/;;;;;;;;;;;;;;;...................................................... │
00:00:30 v #2805 > > │ ........                                                                     │
00:00:30 v #2806 > > │ .................>///////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.......... │
00:00:30 v #2807 > > │ ....>///;/;;;;;;;;;;;;;;.................................................... │
00:00:30 v #2808 > > │ ........                                                                     │
00:00:30 v #2809 > > │ ................./////////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\........ │
00:00:30 v #2810 > > │ ...>//////;;;;;;;;;;;;;;;;.............>/;;;;;;;............................ │
00:00:30 v #2811 > > │ ........                                                                     │
00:00:30 v #2812 > > │ ................>//////////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...... │
00:00:30 v #2813 > > │ ..>////////;/;;;;;;;;;;;;;;...........>///;;;;;;;;.......................... │
00:00:30 v #2814 > > │ ........                                                                     │
00:00:30 v #2815 > > │ ...............>////////////////////////;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<...... │
00:00:30 v #2816 > > │ .>///////////;;;;;;;;;<<<<<<.........>////;;;;;;<<<......................... │
00:00:30 v #2817 > > │ ........                                                                     │
00:00:30 v #2818 > > │ ...............>//////////////////////////;;;;<<<<<<<<<<<<<<<<<<<<<<........ │
00:00:30 v #2819 > > │ ./////////////;<<<<<<<<<<<<<.........///////<<<<<<<......................... │
00:00:30 v #2820 > > │ ........                                                                     │
00:00:30 v #2821 > > │ ...............///////////////////////////<<<<<<<<<<<<<<<<<<<<<<<<.......... │
00:00:30 v #2822 > > │ ./////////////<<<<<<<<<<<<............/////<<<<<<........................... │
00:00:30 v #2823 > > │ ........                                                                     │
00:00:30 v #2824 > > │ ................//////////////////////////<<<<<<<<<<<<<<<<<<<<<<............ │
00:00:30 v #2825 > > │ ...//////////<<<<<<<<<<<<..............///<<<<<<............................ │
00:00:30 v #2826 > > │ ........                                                                     │
00:00:30 v #2827 > > │ .................///////////////////////<<<<<<<<<<<<<<<<<<<<<<<............. │
00:00:30 v #2828 > > │ ....///////<<<<<<<<<<<<..................<.................................. │
00:00:30 v #2829 > > │ ........                                                                     │
00:00:30 v #2830 > > │ ..................//////////////////////<<<<<<<<<<<<<<<<<<<<<............... │
00:00:30 v #2831 > > │ .....//////<<<<<<<<<<<...................................................... │
00:00:30 v #2832 > > │ ........                                                                     │
00:00:30 v #2833 > > │ ...................//////////////////<<<<<<<<<<<<<<<<<<<<<<................. │
00:00:30 v #2834 > > │ .......//<<<<<<<<<<......................................................... │
00:00:30 v #2835 > > │ ........                                                                     │
00:00:30 v #2836 > > │ ....................////////////////<<<<<<<<<<<<<<<<<<<<<<.................. │
00:00:30 v #2837 > > │ ......../<<<................................................................ │
00:00:30 v #2838 > > │ ........                                                                     │
00:00:30 v #2839 > > │ .....................///////////////<<<<<<<<<<<<<<<<<<<<.................... │
00:00:30 v #2840 > > │ ............................................................................ │
00:00:30 v #2841 > > │ ........                                                                     │
00:00:30 v #2842 > > │ ....................../////////////<<<<<<<<<<<<<<<<<<<...................... │
00:00:30 v #2843 > > │ ............................................................................ │
00:00:30 v #2844 > > │ ........                                                                     │
00:00:30 v #2845 > > │ .......................//////////<<<<<<<<<<<<<<<<<<<<....................... │
00:00:30 v #2846 > > │ ............................................................................ │
00:00:30 v #2847 > > │ ........                                                                     │
00:00:30 v #2848 > > │ ........................////////<<<<<<<<<<<<<<<............................. │
00:00:30 v #2849 > > │ ............................................................................ │
00:00:30 v #2850 > > │ ........                                                                     │
00:00:30 v #2851 > > │ ..........................////<<<<<<<<<<<<.................................. │
00:00:30 v #2852 > > │ ............................................................................ │
00:00:30 v #2853 > > │ ........                                                                     │
00:00:30 v #2854 > > │ ..........................////<<<<<<<....................................... │
00:00:30 v #2855 > > │ ............................................................................ │
00:00:30 v #2856 > > │ ........                                                                     │
00:00:30 v #2857 > > │ ............................<<<<............................................ │
00:00:30 v #2858 > > │ ............................................................................ │
00:00:30 v #2859 > > │ ........                                                                     │
00:00:30 v #2860 > > │ ............................................................................ │
00:00:30 v #2861 > > │ ............................................................................ │
00:00:30 v #2862 > > │ ........                                                                     │
00:00:30 v #2863 > > │ ............................................................................ │
00:00:30 v #2864 > > │ ............................................................................ │
00:00:30 v #2865 > > │ ........                                                                     │
00:00:30 v #2866 > > │ ............................................................................ │
00:00:30 v #2867 > > │ ............................................................................ │
00:00:30 v #2868 > > │ ........                                                                     │
00:00:30 v #2869 > > │ ............................................................................ │
00:00:30 v #2870 > > │ ............................................................................ │
00:00:30 v #2871 > > │ ........                                                                     │
00:00:30 v #2872 > > │ ............................................................................ │
00:00:30 v #2873 > > │ ............................................................................ │
00:00:30 v #2874 > > │ ........                                                                     │
00:00:30 v #2875 > > │ ............................................................................ │
00:00:30 v #2876 > > │ ............................................................................ │
00:00:30 v #2877 > > │ ........                                                                     │
00:00:30 v #2878 > > │ ............................................................................ │
00:00:30 v #2879 > > │ ............................................................................ │
00:00:30 v #2880 > > │ ........                                                                     │
00:00:30 v #2881 > > │ ............................................................................ │
00:00:30 v #2882 > > │ ............................................................................ │
00:00:30 v #2883 > > │ ........                                                                     │
00:00:30 v #2884 > > │                                                                              │
00:00:30 v #2885 > > │ ............................................................................ │
00:00:30 v #2886 > > │ ............................................................................ │
00:00:30 v #2887 > > │ ........                                                                     │
00:00:30 v #2888 > > │ ............................................................................ │
00:00:30 v #2889 > > │ ............................................................................ │
00:00:30 v #2890 > > │ ........                                                                     │
00:00:30 v #2891 > > │ ............................................................................ │
00:00:30 v #2892 > > │ ............................................................................ │
00:00:30 v #2893 > > │ ........                                                                     │
00:00:30 v #2894 > > │ ............................................................................ │
00:00:30 v #2895 > > │ ............................................................................ │
00:00:30 v #2896 > > │ ........                                                                     │
00:00:30 v #2897 > > │ ............................................................................ │
00:00:30 v #2898 > > │ ............................................................................ │
00:00:30 v #2899 > > │ ........                                                                     │
00:00:30 v #2900 > > │ ............................................................................ │
00:00:30 v #2901 > > │ ............................................................................ │
00:00:30 v #2902 > > │ ........                                                                     │
00:00:30 v #2903 > > │ ............................................................................ │
00:00:30 v #2904 > > │ ............................................................................ │
00:00:30 v #2905 > > │ ........                                                                     │
00:00:30 v #2906 > > │ ............................................................................ │
00:00:30 v #2907 > > │ ............................................................................ │
00:00:30 v #2908 > > │ ........                                                                     │
00:00:30 v #2909 > > │ ............................................................................ │
00:00:30 v #2910 > > │ ............................................................................ │
00:00:30 v #2911 > > │ ........                                                                     │
00:00:30 v #2912 > > │ .......................;;................................................... │
00:00:30 v #2913 > > │ ............................................................................ │
00:00:30 v #2914 > > │ ........                                                                     │
00:00:30 v #2915 > > │ ......................>;;;;;;;;;;;;;;;;;;;;................................. │
00:00:30 v #2916 > > │ ............................................................................ │
00:00:30 v #2917 > > │ ........                                                                     │
00:00:30 v #2918 > > │ ......................///;;;;;;;;;;;;;;;;;;;;;;;;;.......................... │
00:00:30 v #2919 > > │ ............................................................................ │
00:00:30 v #2920 > > │ ........                                                                     │
00:00:30 v #2921 > > │ .....................>/////;;;;;;;;;;;;;;;;;;;;;;;;;........................ │
00:00:30 v #2922 > > │ ............................................................................ │
00:00:30 v #2923 > > │ ........                                                                     │
00:00:30 v #2924 > > │ ....................>////////;;;;;;;;;;;;;;;;;;;;;;;;;\..................... │
00:00:30 v #2925 > > │ ............................................................................ │
00:00:30 v #2926 > > │ ........                                                                     │
00:00:30 v #2927 > > │ ....................//////////;;;;;;;;;;;;;;;;;;;;;;;;;;;................... │
00:00:30 v #2928 > > │ ............................................................................ │
00:00:30 v #2929 > > │ ........                                                                     │
00:00:30 v #2930 > > │ ...................>////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;................. │
00:00:30 v #2931 > > │ ............................................................................ │
00:00:30 v #2932 > > │ ........                                                                     │
00:00:30 v #2933 > > │ ..................>///////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;\.............. │
00:00:30 v #2934 > > │ .....>/;;;;;;;;;;;;;........................................................ │
00:00:30 v #2935 > > │ ........                                                                     │
00:00:30 v #2936 > > │ ..................///////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;............ │
00:00:30 v #2937 > > │ ....>//;;;;;;;;;;;;;;;...................................................... │
00:00:30 v #2938 > > │ ........                                                                     │
00:00:30 v #2939 > > │ .................>////////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;.......... │
00:00:30 v #2940 > > │ ....>////;;;;;;;;;;;;;;;.................................................... │
00:00:30 v #2941 > > │ ........                                                                     │
00:00:30 v #2942 > > │ .................///////////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;....... │
00:00:30 v #2943 > > │ ...>///////;;;;;;;;;;;;;;;.............>/;;;;;;;............................ │
00:00:30 v #2944 > > │ ........                                                                     │
00:00:30 v #2945 > > │ ................>/////////////////////////;;;;;;;;;;;;;;;;;;<<<<<<<<<....... │
00:00:30 v #2946 > > │ ..>/////////;;;;;;;;;;;;;;;;..........>//;;;;;;;;;.......................... │
00:00:30 v #2947 > > │ ........                                                                     │
00:00:30 v #2948 > > │ ...............>/////////////////////////////;;;<<<<<<<<<<<<<<<<<<<<........ │
00:00:30 v #2949 > > │ .>////////////;;;<<<<<<<<<<<.........>/////;;;<<<<<......................... │
00:00:30 v #2950 > > │ ........                                                                     │
00:00:30 v #2951 > > │ ...............//////////////////////////////<<<<<<<<<<<<<<<<<<<<<<......... │
00:00:30 v #2952 > > │ ////////////////<<<<<<<<<<<..........///////<<<<<<<......................... │
00:00:30 v #2953 > > │ ........                                                                     │
00:00:30 v #2954 > > │ ..............>////////////////////////////<<<<<<<<<<<<<<<<<<<<<<........... │
00:00:30 v #2955 > > │ .//////////////<<<<<<<<<<<............/////<<<<<<........................... │
00:00:30 v #2956 > > │ ........                                                                     │
00:00:30 v #2957 > > │ ...............////////////////////////////<<<<<<<<<<<<<<<<<<<<............. │
00:00:30 v #2958 > > │ ..////////////<<<<<<<<<<<..............///<<<<<<............................ │
00:00:30 v #2959 > > │ ........                                                                     │
00:00:30 v #2960 > > │ ................/////////////////////////<<<<<<<<<<<<<<<<<<<<<.............. │
00:00:30 v #2961 > > │ ....////////<<<<<<<<<<<..................<.................................. │
00:00:30 v #2962 > > │ ........                                                                     │
00:00:30 v #2963 > > │ .................///////////////////////<<<<<<<<<<<<<<<<<<<<<............... │
00:00:30 v #2964 > > │ .....//////<<<<<<<<<<<...................................................... │
00:00:30 v #2965 > > │ ........                                                                     │
00:00:30 v #2966 > > │ ...................////////////////////<<<<<<<<<<<<<<<<<<<<................. │
00:00:30 v #2967 > > │ .......///<<<<<<<<<<........................................................ │
00:00:30 v #2968 > > │ ........                                                                     │
00:00:30 v #2969 > > │ ....................//////////////////<<<<<<<<<<<<<<<<<<<<.................. │
00:00:30 v #2970 > > │ ......../<<<<............................................................... │
00:00:30 v #2971 > > │ ........                                                                     │
00:00:30 v #2972 > > │ .....................////////////////<<<<<<<<<<<<<<<<<<<.................... │
00:00:30 v #2973 > > │ ............................................................................ │
00:00:30 v #2974 > > │ ........                                                                     │
00:00:30 v #2975 > > │ ......................//////////////<<<<<<<<<<<<<<<<<<...................... │
00:00:30 v #2976 > > │ ............................................................................ │
00:00:30 v #2977 > > │ ........                                                                     │
00:00:30 v #2978 > > │ ........................///////////<<<<<<<<<<<<<<<<<<....................... │
00:00:30 v #2979 > > │ ............................................................................ │
00:00:30 v #2980 > > │ ........                                                                     │
00:00:30 v #2981 > > │ .........................////////<<<<<<<<<<<<<<<............................ │
00:00:30 v #2982 > > │ ............................................................................ │
00:00:30 v #2983 > > │ ........                                                                     │
00:00:30 v #2984 > > │ ..........................//////<<<<<<<<<<<................................. │
00:00:30 v #2985 > > │ ............................................................................ │
00:00:30 v #2986 > > │ ........                                                                     │
00:00:30 v #2987 > > │ ...........................////<<<<<<<<..................................... │
00:00:30 v #2988 > > │ ............................................................................ │
00:00:30 v #2989 > > │ ........                                                                     │
00:00:30 v #2990 > > │ ............................//<<<<.......................................... │
00:00:30 v #2991 > > │ ............................................................................ │
00:00:30 v #2992 > > │ ........                                                                     │
00:00:30 v #2993 > > │ ............................................................................ │
00:00:30 v #2994 > > │ ............................................................................ │
00:00:30 v #2995 > > │ ........                                                                     │
00:00:30 v #2996 > > │ ............................................................................ │
00:00:30 v #2997 > > │ ............................................................................ │
00:00:30 v #2998 > > │ ........                                                                     │
00:00:30 v #2999 > > │ ............................................................................ │
00:00:30 v #3000 > > │ ............................................................................ │
00:00:30 v #3001 > > │ ........                                                                     │
00:00:30 v #3002 > > │ ............................................................................ │
00:00:30 v #3003 > > │ ............................................................................ │
00:00:30 v #3004 > > │ ........                                                                     │
00:00:30 v #3005 > > │ ............................................................................ │
00:00:30 v #3006 > > │ ............................................................................ │
00:00:30 v #3007 > > │ ........                                                                     │
00:00:30 v #3008 > > │ ............................................................................ │
00:00:30 v #3009 > > │ ............................................................................ │
00:00:30 v #3010 > > │ ........                                                                     │
00:00:30 v #3011 > > │ ............................................................................ │
00:00:30 v #3012 > > │ ............................................................................ │
00:00:30 v #3013 > > │ ........                                                                     │
00:00:30 v #3014 > > │ ............................................................................ │
00:00:30 v #3015 > > │ ............................................................................ │
00:00:30 v #3016 > > │ ........                                                                     │
00:00:30 v #3017 > > │                                                                              │
00:00:30 v #3018 > > │ ............................................................................ │
00:00:30 v #3019 > > │ ............................................................................ │
00:00:30 v #3020 > > │ ........                                                                     │
00:00:30 v #3021 > > │ ............................................................................ │
00:00:30 v #3022 > > │ ............................................................................ │
00:00:30 v #3023 > > │ ........                                                                     │
00:00:30 v #3024 > > │ ............................................................................ │
00:00:30 v #3025 > > │ ............................................................................ │
00:00:30 v #3026 > > │ ........                                                                     │
00:00:30 v #3027 > > │ ............................................................................ │
00:00:30 v #3028 > > │ ............................................................................ │
00:00:30 v #3029 > > │ ........                                                                     │
00:00:30 v #3030 > > │ ............................................................................ │
00:00:30 v #3031 > > │ ............................................................................ │
00:00:30 v #3032 > > │ ........                                                                     │
00:00:30 v #3033 > > │ ............................................................................ │
00:00:30 v #3034 > > │ ............................................................................ │
00:00:30 v #3035 > > │ ........                                                                     │
00:00:30 v #3036 > > │ ............................................................................ │
00:00:30 v #3037 > > │ ............................................................................ │
00:00:30 v #3038 > > │ ........                                                                     │
00:00:30 v #3039 > > │ ............................................................................ │
00:00:30 v #3040 > > │ ............................................................................ │
00:00:30 v #3041 > > │ ........                                                                     │
00:00:30 v #3042 > > │ ............................................................................ │
00:00:30 v #3043 > > │ ............................................................................ │
00:00:30 v #3044 > > │ ........                                                                     │
00:00:30 v #3045 > > │ ............................................................................ │
00:00:30 v #3046 > > │ ............................................................................ │
00:00:30 v #3047 > > │ ........                                                                     │
00:00:30 v #3048 > > │ ....................../;;;;;;;;;;;;;;;;..................................... │
00:00:30 v #3049 > > │ ............................................................................ │
00:00:30 v #3050 > > │ ........                                                                     │
00:00:30 v #3051 > > │ .....................>///;;;;;;;;;;;;;;;;;;;;;;;............................ │
00:00:30 v #3052 > > │ ............................................................................ │
00:00:30 v #3053 > > │ ........                                                                     │
00:00:30 v #3054 > > │ .....................//////;;;;;;;;;;;;;;;;;;;;;;;;......................... │
00:00:30 v #3055 > > │ ............................................................................ │
00:00:30 v #3056 > > │ ........                                                                     │
00:00:30 v #3057 > > │ ..................../////////;;;;;;;;;;;;;;;;;;;;;;;;....................... │
00:00:30 v #3058 > > │ ............................................................................ │
00:00:30 v #3059 > > │ ........                                                                     │
00:00:30 v #3060 > > │ ...................>///////////;/;;;;;;;;;;;;;;;;;;;;;;;.................... │
00:00:30 v #3061 > > │ ............................................................................ │
00:00:30 v #3062 > > │ ........                                                                     │
00:00:30 v #3063 > > │ ...................///////////////;;;;;;;;;;;;;;;;;;;;;;;;;................. │
00:00:30 v #3064 > > │ ............................................................................ │
00:00:30 v #3065 > > │ ........                                                                     │
00:00:30 v #3066 > > │ ..................>/////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;.............. │
00:00:30 v #3067 > > │ .....>;;;;;;;;;;;;;......................................................... │
00:00:30 v #3068 > > │ ........                                                                     │
00:00:30 v #3069 > > │ ..................////////////////////;/;;;;;;;;;;;;;;;;;;;;;;;;............ │
00:00:30 v #3070 > > │ ....>//;/;;;;;;;;;;;;....................................................... │
00:00:30 v #3071 > > │ ........                                                                     │
00:00:30 v #3072 > > │ .................>//////////////////////;/;;;;;;;;;;;;;;;;;;;;;;;;;\........ │
00:00:30 v #3073 > > │ ....//////;;;;;;;;;;;;;;.................................................... │
00:00:30 v #3074 > > │ ........                                                                     │
00:00:30 v #3075 > > │ ................>//////////////////////////;;;;;;;;;;;;;;;;;;;<<<<<<<....... │
00:00:30 v #3076 > > │ ...>///////;;;;;;;;;;;;;;;.............>/;;;;;;;............................ │
00:00:30 v #3077 > > │ ........                                                                     │
00:00:30 v #3078 > > │ ................/////////////////////////////;;;;<<<<<<<<<<<<<<<<<<<........ │
00:00:30 v #3079 > > │ ..>////////////;;;;;;;;;;;<<..........>//;;;;;;;;;.......................... │
00:00:30 v #3080 > > │ ........                                                                     │
00:00:30 v #3081 > > │ ...............>//////////////////////////////<<<<<<<<<<<<<<<<<<<<<......... │
00:00:30 v #3082 > > │ .>/////////////;<<<<<<<<<<<<.........>/////;;<<<<<<......................... │
00:00:30 v #3083 > > │ ........                                                                     │
00:00:30 v #3084 > > │ ...............///////////////////////////////<<<<<<<<<<<<<<<<<<<........... │
00:00:30 v #3085 > > │ .///////////////<<<<<<<<<<<..........///////<<<<<<.......................... │
00:00:30 v #3086 > > │ ........                                                                     │
00:00:30 v #3087 > > │ ..............>//////////////////////////////<<<<<<<<<<<<<<<<<<<............ │
00:00:30 v #3088 > > │ ///////////////<<<<<<<<<<<............/////<<<<<<........................... │
00:00:30 v #3089 > > │ ........                                                                     │
00:00:30 v #3090 > > │ ..............//////////////////////////////<<<<<<<<<<<<<<<<<<<............. │
00:00:30 v #3091 > > │ ..////////////<<<<<<<<<<<...............///<<<<<............................ │
00:00:30 v #3092 > > │ ........                                                                     │
00:00:30 v #3093 > > │ ...............///////////////////////////<<<<<<<<<<<<<<<<<<<............... │
00:00:30 v #3094 > > │ ..../////////<<<<<<<<<<................../.................................. │
00:00:30 v #3095 > > │ ........                                                                     │
00:00:30 v #3096 > > │ ................//////////////////////////<<<<<<<<<<<<<<<<<<................ │
00:00:30 v #3097 > > │ .....///////<<<<<<<<<<...................................................... │
00:00:30 v #3098 > > │ ........                                                                     │
00:00:30 v #3099 > > │ ..................//////////////////////<<<<<<<<<<<<<<<<<<<................. │
00:00:30 v #3100 > > │ .......////<<<<<<<<<........................................................ │
00:00:30 v #3101 > > │ ........                                                                     │
00:00:30 v #3102 > > │ ....................///////////////////<<<<<<<<<<<<<<<<<<................... │
00:00:30 v #3103 > > │ ........./<<<............................................................... │
00:00:30 v #3104 > > │ ........                                                                     │
00:00:30 v #3105 > > │ ...................../////////////////<<<<<<<<<<<<<<<<<<.................... │
00:00:30 v #3106 > > │ ............................................................................ │
00:00:30 v #3107 > > │ ........                                                                     │
00:00:30 v #3108 > > │ ......................///////////////<<<<<<<<<<<<<<<<<<..................... │
00:00:30 v #3109 > > │ ............................................................................ │
00:00:30 v #3110 > > │ ........                                                                     │
00:00:30 v #3111 > > │ ........................////////////<<<<<<<<<<<<<<<<<....................... │
00:00:30 v #3112 > > │ ............................................................................ │
00:00:30 v #3113 > > │ ........                                                                     │
00:00:30 v #3114 > > │ .........................//////////<<<<<<<<<<<<<<........................... │
00:00:30 v #3115 > > │ ............................................................................ │
00:00:30 v #3116 > > │ ........                                                                     │
00:00:30 v #3117 > > │ ...........................///////<<<<<<<<<<<............................... │
00:00:30 v #3118 > > │ ............................................................................ │
00:00:30 v #3119 > > │ ........                                                                     │
00:00:30 v #3120 > > │ ............................/////<<<<<<<.................................... │
00:00:30 v #3121 > > │ ............................................................................ │
00:00:30 v #3122 > > │ ........                                                                     │
00:00:30 v #3123 > > │ ..............................//<<<<........................................ │
00:00:30 v #3124 > > │ ............................................................................ │
00:00:30 v #3125 > > │ ........                                                                     │
00:00:30 v #3126 > > │ ............................................................................ │
00:00:30 v #3127 > > │ ............................................................................ │
00:00:30 v #3128 > > │ ........                                                                     │
00:00:30 v #3129 > > │ ............................................................................ │
00:00:30 v #3130 > > │ ............................................................................ │
00:00:30 v #3131 > > │ ........                                                                     │
00:00:30 v #3132 > > │ ............................................................................ │
00:00:30 v #3133 > > │ ............................................................................ │
00:00:30 v #3134 > > │ ........                                                                     │
00:00:30 v #3135 > > │ ............................................................................ │
00:00:30 v #3136 > > │ ............................................................................ │
00:00:30 v #3137 > > │ ........                                                                     │
00:00:30 v #3138 > > │ ............................................................................ │
00:00:30 v #3139 > > │ ............................................................................ │
00:00:30 v #3140 > > │ ........                                                                     │
00:00:30 v #3141 > > │ ............................................................................ │
00:00:30 v #3142 > > │ ............................................................................ │
00:00:30 v #3143 > > │ ........                                                                     │
00:00:30 v #3144 > > │ ............................................................................ │
00:00:30 v #3145 > > │ ............................................................................ │
00:00:30 v #3146 > > │ ........                                                                     │
00:00:30 v #3147 > > │ ............................................................................ │
00:00:30 v #3148 > > │ ............................................................................ │
00:00:30 v #3149 > > │ ........                                                                     │
00:00:30 v #3150 > > │                                                                              │
00:00:30 v #3151 > > │ ............................................................................ │
00:00:30 v #3152 > > │ ............................................................................ │
00:00:30 v #3153 > > │ ........                                                                     │
00:00:30 v #3154 > > │ ............................................................................ │
00:00:30 v #3155 > > │ ............................................................................ │
00:00:30 v #3156 > > │ ........                                                                     │
00:00:30 v #3157 > > │ ............................................................................ │
00:00:30 v #3158 > > │ ............................................................................ │
00:00:30 v #3159 > > │ ........                                                                     │
00:00:30 v #3160 > > │ ............................................................................ │
00:00:30 v #3161 > > │ ............................................................................ │
00:00:30 v #3162 > > │ ........                                                                     │
00:00:30 v #3163 > > │ ............................................................................ │
00:00:30 v #3164 > > │ ............................................................................ │
00:00:30 v #3165 > > │ ........                                                                     │
00:00:30 v #3166 > > │ ............................................................................ │
00:00:30 v #3167 > > │ ............................................................................ │
00:00:30 v #3168 > > │ ........                                                                     │
00:00:30 v #3169 > > │ ............................................................................ │
00:00:30 v #3170 > > │ ............................................................................ │
00:00:30 v #3171 > > │ ........                                                                     │
00:00:30 v #3172 > > │ ............................................................................ │
00:00:30 v #3173 > > │ ............................................................................ │
00:00:30 v #3174 > > │ ........                                                                     │
00:00:30 v #3175 > > │ ............................................................................ │
00:00:30 v #3176 > > │ ............................................................................ │
00:00:30 v #3177 > > │ ........                                                                     │
00:00:30 v #3178 > > │ ............................................................................ │
00:00:30 v #3179 > > │ ............................................................................ │
00:00:30 v #3180 > > │ ........                                                                     │
00:00:30 v #3181 > > │ .....................>;;;;;;;;;;;;.......................................... │
00:00:30 v #3182 > > │ ............................................................................ │
00:00:30 v #3183 > > │ ........                                                                     │
00:00:30 v #3184 > > │ .....................///;;;;;;;;;;;;;;;;;;;;;;.............................. │
00:00:30 v #3185 > > │ ............................................................................ │
00:00:30 v #3186 > > │ ........                                                                     │
00:00:30 v #3187 > > │ ....................>//////;;;;;;;;;;;;;;;;;;;;;;........................... │
00:00:30 v #3188 > > │ ............................................................................ │
00:00:30 v #3189 > > │ ........                                                                     │
00:00:30 v #3190 > > │ ..................../////////;/;;;;;;;;;;;;;;;;;;;;;\....................... │
00:00:30 v #3191 > > │ ............................................................................ │
00:00:30 v #3192 > > │ ........                                                                     │
00:00:30 v #3193 > > │ ...................>/////////////;;;;;;;;;;;;;;;;;;;;;;\.................... │
00:00:30 v #3194 > > │ ............................................................................ │
00:00:30 v #3195 > > │ ........                                                                     │
00:00:30 v #3196 > > │ ...................////////////////;/;;;;;;;;;;;;;;;;;;;;;;................. │
00:00:30 v #3197 > > │ ............................................................................ │
00:00:30 v #3198 > > │ ........                                                                     │
00:00:30 v #3199 > > │ ..................>///////////////////;/;;;;;;;;;;;;;;;;;;;;;;.............. │
00:00:30 v #3200 > > │ .....;;;;;;;;;;;;;.......................................................... │
00:00:30 v #3201 > > │ ........                                                                     │
00:00:30 v #3202 > > │ .................>///////////////////////;;;;;;;;;;;;;;;;;;;;;;;;\.......... │
00:00:30 v #3203 > > │ ....>///;;;;;;;;;;;;;....................................................... │
00:00:30 v #3204 > > │ ........                                                                     │
00:00:30 v #3205 > > │ .................//////////////////////////;;;;;;;;;;;;;;;;;;;;;;<<<........ │
00:00:30 v #3206 > > │ ..../////;;;;;;;;;;;;;;;.................................................... │
00:00:30 v #3207 > > │ ........                                                                     │
00:00:30 v #3208 > > │ ................>/////////////////////////////;;;;<<<<<<<<<<<<<<<<<<........ │
00:00:30 v #3209 > > │ ...>////////;/;;;;;;;;;;;;;............>/;;;;;;;............................ │
00:00:30 v #3210 > > │ ........                                                                     │
00:00:30 v #3211 > > │ ................////////////////////////////////<<<<<<<<<<<<<<<<<<<......... │
00:00:30 v #3212 > > │ ..>///////////;;;;;;;<<<<<<<..........>//;;;;;;;;;.......................... │
00:00:30 v #3213 > > │ ........                                                                     │
00:00:30 v #3214 > > │ ...............>///////////////////////////////<<<<<<<<<<<<<<<<<<<.......... │
00:00:30 v #3215 > > │ .>///////////////<<<<<<<<<<..........>///////<<<<<<......................... │
00:00:30 v #3216 > > │ ........                                                                     │
00:00:30 v #3217 > > │ ...............///////////////////////////////<<<<<<<<<<<<<<<<<<............ │
00:00:30 v #3218 > > │ .///////////////<<<<<<<<<<...........////////<<<<<.......................... │
00:00:30 v #3219 > > │ ........                                                                     │
00:00:30 v #3220 > > │ ..............>///////////////////////////////<<<<<<<<<<<<<<<<<............. │
00:00:30 v #3221 > > │ >//////////////<<<<<<<<<<............///////<<<<<........................... │
00:00:30 v #3222 > > │ ........                                                                     │
00:00:30 v #3223 > > │ ..............//////////////////////////////<<<<<<<<<<<<<<<<<<.............. │
00:00:30 v #3224 > > │ .//////////////<<<<<<<<<................///<<<<<............................ │
00:00:30 v #3225 > > │ ........                                                                     │
00:00:30 v #3226 > > │ ..............//////////////////////////////<<<<<<<<<<<<<<<<<............... │
00:00:30 v #3227 > > │ ...///////////<<<<<<<<<.................../................................. │
00:00:30 v #3228 > > │ ........                                                                     │
00:00:30 v #3229 > > │ ...............////////////////////////////<<<<<<<<<<<<<<<<<................ │
00:00:30 v #3230 > > │ ......///////<<<<<<<<<...................................................... │
00:00:30 v #3231 > > │ ........                                                                     │
00:00:30 v #3232 > > │ ................./////////////////////////<<<<<<<<<<<<<<<<.................. │
00:00:30 v #3233 > > │ ........////<<<<<<<<........................................................ │
00:00:30 v #3234 > > │ ........                                                                     │
00:00:30 v #3235 > > │ ...................//////////////////////<<<<<<<<<<<<<<<<................... │
00:00:30 v #3236 > > │ ........../<<<.............................................................. │
00:00:30 v #3237 > > │ ........                                                                     │
00:00:30 v #3238 > > │ .....................//////////////////<<<<<<<<<<<<<<<<<.................... │
00:00:30 v #3239 > > │ ............................................................................ │
00:00:30 v #3240 > > │ ........                                                                     │
00:00:30 v #3241 > > │ ....................../////////////////<<<<<<<<<<<<<<<<..................... │
00:00:30 v #3242 > > │ ............................................................................ │
00:00:30 v #3243 > > │ ........                                                                     │
00:00:30 v #3244 > > │ ........................//////////////<<<<<<<<<<<<<<<....................... │
00:00:30 v #3245 > > │ ............................................................................ │
00:00:30 v #3246 > > │ ........                                                                     │
00:00:30 v #3247 > > │ ..........................///////////<<<<<<<<<<<<........................... │
00:00:30 v #3248 > > │ ............................................................................ │
00:00:30 v #3249 > > │ ........                                                                     │
00:00:30 v #3250 > > │ ............................////////<<<<<<<<<<.............................. │
00:00:30 v #3251 > > │ ............................................................................ │
00:00:30 v #3252 > > │ ........                                                                     │
00:00:30 v #3253 > > │ .............................//////<<<<<<<.................................. │
00:00:30 v #3254 > > │ ............................................................................ │
00:00:30 v #3255 > > │ ........                                                                     │
00:00:30 v #3256 > > │ ...............................///<<<<...................................... │
00:00:30 v #3257 > > │ ............................................................................ │
00:00:30 v #3258 > > │ ........                                                                     │
00:00:30 v #3259 > > │ .................................<.......................................... │
00:00:30 v #3260 > > │ ............................................................................ │
00:00:30 v #3261 > > │ ........                                                                     │
00:00:30 v #3262 > > │ ............................................................................ │
00:00:30 v #3263 > > │ ............................................................................ │
00:00:30 v #3264 > > │ ........                                                                     │
00:00:30 v #3265 > > │ ............................................................................ │
00:00:30 v #3266 > > │ ............................................................................ │
00:00:30 v #3267 > > │ ........                                                                     │
00:00:30 v #3268 > > │ ............................................................................ │
00:00:30 v #3269 > > │ ............................................................................ │
00:00:30 v #3270 > > │ ........                                                                     │
00:00:30 v #3271 > > │ ............................................................................ │
00:00:30 v #3272 > > │ ............................................................................ │
00:00:30 v #3273 > > │ ........                                                                     │
00:00:30 v #3274 > > │ ............................................................................ │
00:00:30 v #3275 > > │ ............................................................................ │
00:00:30 v #3276 > > │ ........                                                                     │
00:00:30 v #3277 > > │ ............................................................................ │
00:00:30 v #3278 > > │ ............................................................................ │
00:00:30 v #3279 > > │ ........                                                                     │
00:00:30 v #3280 > > │ ............................................................................ │
00:00:30 v #3281 > > │ ............................................................................ │
00:00:30 v #3282 > > │ ........                                                                     │
00:00:30 v #3283 > > │                                                                              │
00:00:30 v #3284 > > │ ............................................................................ │
00:00:30 v #3285 > > │ ............................................................................ │
00:00:30 v #3286 > > │ ........                                                                     │
00:00:30 v #3287 > > │ ............................................................................ │
00:00:30 v #3288 > > │ ............................................................................ │
00:00:30 v #3289 > > │ ........                                                                     │
00:00:30 v #3290 > > │ ............................................................................ │
00:00:30 v #3291 > > │ ............................................................................ │
00:00:30 v #3292 > > │ ........                                                                     │
00:00:30 v #3293 > > │ ............................................................................ │
00:00:30 v #3294 > > │ ............................................................................ │
00:00:30 v #3295 > > │ ........                                                                     │
00:00:30 v #3296 > > │ ............................................................................ │
00:00:30 v #3297 > > │ ............................................................................ │
00:00:30 v #3298 > > │ ........                                                                     │
00:00:30 v #3299 > > │ ............................................................................ │
00:00:30 v #3300 > > │ ............................................................................ │
00:00:30 v #3301 > > │ ........                                                                     │
00:00:30 v #3302 > > │ ............................................................................ │
00:00:30 v #3303 > > │ ............................................................................ │
00:00:30 v #3304 > > │ ........                                                                     │
00:00:30 v #3305 > > │ ............................................................................ │
00:00:30 v #3306 > > │ ............................................................................ │
00:00:30 v #3307 > > │ ........                                                                     │
00:00:30 v #3308 > > │ ............................................................................ │
00:00:30 v #3309 > > │ ............................................................................ │
00:00:30 v #3310 > > │ ........                                                                     │
00:00:30 v #3311 > > │ ............................................................................ │
00:00:30 v #3312 > > │ ............................................................................ │
00:00:30 v #3313 > > │ ........                                                                     │
00:00:30 v #3314 > > │ ...................../;;;;;;;;.............................................. │
00:00:30 v #3315 > > │ ............................................................................ │
00:00:30 v #3316 > > │ ........                                                                     │
00:00:30 v #3317 > > │ ....................>//;;;;;;;;;;;;;;;;;;;;;................................ │
00:00:30 v #3318 > > │ ............................................................................ │
00:00:30 v #3319 > > │ ........                                                                     │
00:00:30 v #3320 > > │ ....................//////;;;;;;;;;;;;;;;;;;;;;............................. │
00:00:30 v #3321 > > │ ............................................................................ │
00:00:30 v #3322 > > │ ........                                                                     │
00:00:30 v #3323 > > │ ...................>//////////;/;;;;;;;;;;;;;;;;;;;......................... │
00:00:30 v #3324 > > │ ............................................................................ │
00:00:30 v #3325 > > │ ........                                                                     │
00:00:30 v #3326 > > │ ...................//////////////;/;;;;;;;;;;;;;;;;;;;;..................... │
00:00:30 v #3327 > > │ ............................................................................ │
00:00:30 v #3328 > > │ ........                                                                     │
00:00:30 v #3329 > > │ ..................>////////////////////;;;;;;;;;;;;;;;;;;;;................. │
00:00:30 v #3330 > > │ ............................................................................ │
00:00:30 v #3331 > > │ ........                                                                     │
00:00:30 v #3332 > > │ ..................//////////////////////;;;;;;;;;;;;;;;;;;;;;;;............. │
00:00:30 v #3333 > > │ .....;;;;;;;;;;;;\.......................................................... │
00:00:30 v #3334 > > │ ........                                                                     │
00:00:30 v #3335 > > │ .................>/////////////////////////;;;;;;;;;;;;;;;;;;;;;;;.......... │
00:00:30 v #3336 > > │ ....>/;;/;;;;;;;;;;;;....................................................... │
00:00:30 v #3337 > > │ ........                                                                     │
00:00:30 v #3338 > > │ .................////////////////////////////////;;;<<<<<<<<<<<<<<<<........ │
00:00:30 v #3339 > > │ ..../////;;/;;;;;;;;;;;;.................................................... │
00:00:30 v #3340 > > │ ........                                                                     │
00:00:30 v #3341 > > │ ................>/////////////////////////////////<<<<<<<<<<<<<<<<<......... │
00:00:30 v #3342 > > │ ...>////////;;;;;;;;;;;;;;;............;;;;;;;;;............................ │
00:00:30 v #3343 > > │ ........                                                                     │
00:00:30 v #3344 > > │ ................/////////////////////////////////<<<<<<<<<<<<<<<<........... │
00:00:30 v #3345 > > │ ..>/////////////;;<<<<<<<<<<..........>////;;;;;;;;......................... │
00:00:30 v #3346 > > │ ........                                                                     │
00:00:30 v #3347 > > │ ...............>////////////////////////////////<<<<<<<<<<<<<<<<............ │
00:00:30 v #3348 > > │ ..////////////////<<<<<<<<<...........//////;<<<<<<......................... │
00:00:30 v #3349 > > │ ........                                                                     │
00:00:30 v #3350 > > │ ...............////////////////////////////////<<<<<<<<<<<<<<<<............. │
00:00:30 v #3351 > > │ .>///////////////<<<<<<<<<...........>///////<<<<<.......................... │
00:00:30 v #3352 > > │ ........                                                                     │
00:00:30 v #3353 > > │ ..............>///////////////////////////////<<<<<<<<<<<<<<<<.............. │
00:00:30 v #3354 > > │ >///////////////<<<<<<<<<............///////<<<<<........................... │
00:00:30 v #3355 > > │ ........                                                                     │
00:00:30 v #3356 > > │ ..............///////////////////////////////<<<<<<<<<<<<<<<<............... │
00:00:30 v #3357 > > │ .//////////////<<<<<<<<<................///<<<<<............................ │
00:00:30 v #3358 > > │ ........                                                                     │
00:00:30 v #3359 > > │ .............>///////////////////////////////<<<<<<<<<<<<<<<................ │
00:00:30 v #3360 > > │ ...///////////<<<<<<<<<..................................................... │
00:00:30 v #3361 > > │ ........                                                                     │
00:00:30 v #3362 > > │ ..............//////////////////////////////<<<<<<<<<<<<<<<................. │
00:00:30 v #3363 > > │ ......///////<<<<<<<<<...................................................... │
00:00:30 v #3364 > > │ ........                                                                     │
00:00:30 v #3365 > > │ ................///////////////////////////<<<<<<<<<<<<<<<.................. │
00:00:30 v #3366 > > │ ......../////<<<<<<<........................................................ │
00:00:30 v #3367 > > │ ........                                                                     │
00:00:30 v #3368 > > │ ..................////////////////////////<<<<<<<<<<<<<<<................... │
00:00:30 v #3369 > > │ .........../<<.............................................................. │
00:00:30 v #3370 > > │ ........                                                                     │
00:00:30 v #3371 > > │ ..................../////////////////////<<<<<<<<<<<<<<<.................... │
00:00:30 v #3372 > > │ ............................................................................ │
00:00:30 v #3373 > > │ ........                                                                     │
00:00:30 v #3374 > > │ ......................//////////////////<<<<<<<<<<<<<<<..................... │
00:00:30 v #3375 > > │ ............................................................................ │
00:00:30 v #3376 > > │ ........                                                                     │
00:00:30 v #3377 > > │ ........................///////////////<<<<<<<<<<<<<<....................... │
00:00:30 v #3378 > > │ ............................................................................ │
00:00:30 v #3379 > > │ ........                                                                     │
00:00:30 v #3380 > > │ ...........................///////////<<<<<<<<<<<<.......................... │
00:00:30 v #3381 > > │ ............................................................................ │
00:00:30 v #3382 > > │ ........                                                                     │
00:00:30 v #3383 > > │ ............................//////////<<<<<<<<<............................. │
00:00:30 v #3384 > > │ ............................................................................ │
00:00:30 v #3385 > > │ ........                                                                     │
00:00:30 v #3386 > > │ ..............................///////<<<<<<................................. │
00:00:30 v #3387 > > │ ............................................................................ │
00:00:30 v #3388 > > │ ........                                                                     │
00:00:30 v #3389 > > │ ................................////<<<<.................................... │
00:00:30 v #3390 > > │ ............................................................................ │
00:00:30 v #3391 > > │ ........                                                                     │
00:00:30 v #3392 > > │ ...................................<........................................ │
00:00:30 v #3393 > > │ ............................................................................ │
00:00:30 v #3394 > > │ ........                                                                     │
00:00:30 v #3395 > > │ ............................................................................ │
00:00:30 v #3396 > > │ ............................................................................ │
00:00:30 v #3397 > > │ ........                                                                     │
00:00:30 v #3398 > > │ ............................................................................ │
00:00:30 v #3399 > > │ ............................................................................ │
00:00:30 v #3400 > > │ ........                                                                     │
00:00:30 v #3401 > > │ ............................................................................ │
00:00:30 v #3402 > > │ ............................................................................ │
00:00:30 v #3403 > > │ ........                                                                     │
00:00:30 v #3404 > > │ ............................................................................ │
00:00:30 v #3405 > > │ ............................................................................ │
00:00:30 v #3406 > > │ ........                                                                     │
00:00:30 v #3407 > > │ ............................................................................ │
00:00:30 v #3408 > > │ ............................................................................ │
00:00:30 v #3409 > > │ ........                                                                     │
00:00:30 v #3410 > > │ ............................................................................ │
00:00:30 v #3411 > > │ ............................................................................ │
00:00:30 v #3412 > > │ ........                                                                     │
00:00:30 v #3413 > > │ ............................................................................ │
00:00:30 v #3414 > > │ ............................................................................ │
00:00:30 v #3415 > > │ ........                                                                     │
00:00:30 v #3416 > > │                                                                              │
00:00:30 v #3417 > > │ ............................................................................ │
00:00:30 v #3418 > > │ ............................................................................ │
00:00:30 v #3419 > > │ ........                                                                     │
00:00:30 v #3420 > > │ ............................................................................ │
00:00:30 v #3421 > > │ ............................................................................ │
00:00:30 v #3422 > > │ ........                                                                     │
00:00:30 v #3423 > > │ ............................................................................ │
00:00:30 v #3424 > > │ ............................................................................ │
00:00:30 v #3425 > > │ ........                                                                     │
00:00:30 v #3426 > > │ ............................................................................ │
00:00:30 v #3427 > > │ ............................................................................ │
00:00:30 v #3428 > > │ ........                                                                     │
00:00:30 v #3429 > > │ ............................................................................ │
00:00:30 v #3430 > > │ ............................................................................ │
00:00:30 v #3431 > > │ ........                                                                     │
00:00:30 v #3432 > > │ ............................................................................ │
00:00:30 v #3433 > > │ ............................................................................ │
00:00:30 v #3434 > > │ ........                                                                     │
00:00:30 v #3435 > > │ ............................................................................ │
00:00:30 v #3436 > > │ ............................................................................ │
00:00:30 v #3437 > > │ ........                                                                     │
00:00:30 v #3438 > > │ ............................................................................ │
00:00:30 v #3439 > > │ ............................................................................ │
00:00:30 v #3440 > > │ ........                                                                     │
00:00:30 v #3441 > > │ ............................................................................ │
00:00:30 v #3442 > > │ ............................................................................ │
00:00:30 v #3443 > > │ ........                                                                     │
00:00:30 v #3444 > > │ ............................................................................ │
00:00:30 v #3445 > > │ ............................................................................ │
00:00:30 v #3446 > > │ ........                                                                     │
00:00:30 v #3447 > > │ .....................;;;;;.................................................. │
00:00:30 v #3448 > > │ ............................................................................ │
00:00:30 v #3449 > > │ ........                                                                     │
00:00:30 v #3450 > > │ ....................>/;/;;;;;;;;;;;;;;...................................... │
00:00:30 v #3451 > > │ ............................................................................ │
00:00:30 v #3452 > > │ ........                                                                     │
00:00:30 v #3453 > > │ ....................//////;/;;;;;;;;;;;;;;;;;............................... │
00:00:30 v #3454 > > │ ............................................................................ │
00:00:30 v #3455 > > │ ........                                                                     │
00:00:30 v #3456 > > │ ...................>//////////;;/;;;;;;;;;;;;;;;;;.......................... │
00:00:30 v #3457 > > │ ............................................................................ │
00:00:30 v #3458 > > │ ........                                                                     │
00:00:30 v #3459 > > │ ...................////////////////;;;;;;;;;;;;;;;;;;;;..................... │
00:00:30 v #3460 > > │ ............................................................................ │
00:00:30 v #3461 > > │ ........                                                                     │
00:00:30 v #3462 > > │ ..................>///////////////////////;;;;;;;;;;;;;;;;;................. │
00:00:30 v #3463 > > │ ............................................................................ │
00:00:30 v #3464 > > │ ........                                                                     │
00:00:30 v #3465 > > │ ................../////////////////////////;;;;;;;;;;;;;;;;;;;;;............ │
00:00:30 v #3466 > > │ .....;;;;;;;;;;;............................................................ │
00:00:30 v #3467 > > │ ........                                                                     │
00:00:30 v #3468 > > │ .................>///////////////////////////////;;;;;<<<<<<<<<<<<<......... │
00:00:30 v #3469 > > │ ....>//;/;;;;;;;;;;;........................................................ │
00:00:30 v #3470 > > │ ........                                                                     │
00:00:30 v #3471 > > │ .................//////////////////////////////////<<<<<<<<<<<<<<<.......... │
00:00:30 v #3472 > > │ ...>//////;//;;;;;;;;;;;.................................................... │
00:00:30 v #3473 > > │ ........                                                                     │
00:00:30 v #3474 > > │ ................>/////////////////////////////////<<<<<<<<<<<<<<<........... │
00:00:30 v #3475 > > │ ...>/////////;/;;;;;;;;;<<<<...........;;;;;;;;............................. │
00:00:30 v #3476 > > │ ........                                                                     │
00:00:30 v #3477 > > │ ................//////////////////////////////////<<<<<<<<<<<<<<............ │
00:00:30 v #3478 > > │ ..>///////////////<<<<<<<<<...........>///;;;;;;;<<......................... │
00:00:30 v #3479 > > │ ........                                                                     │
00:00:30 v #3480 > > │ ...............>/////////////////////////////////<<<<<<<<<<<<<<<............ │
00:00:30 v #3481 > > │ ..////////////////<<<<<<<<<...........///////;<<<<<......................... │
00:00:30 v #3482 > > │ ........                                                                     │
00:00:30 v #3483 > > │ .............../////////////////////////////////<<<<<<<<<<<<<<<............. │
00:00:30 v #3484 > > │ .>///////////////<<<<<<<<<...........>///////<<<<<.......................... │
00:00:30 v #3485 > > │ ........                                                                     │
00:00:30 v #3486 > > │ ..............>////////////////////////////////<<<<<<<<<<<<<<<.............. │
00:00:30 v #3487 > > │ >///////////////<<<<<<<<<............///////<<<<<........................... │
00:00:30 v #3488 > > │ ........                                                                     │
00:00:30 v #3489 > > │ ..............>///////////////////////////////<<<<<<<<<<<<<<<............... │
00:00:30 v #3490 > > │ ////////////////<<<<<<<<................////<<<<<........................... │
00:00:30 v #3491 > > │ ........                                                                     │
00:00:30 v #3492 > > │ ..............////////////////////////////////<<<<<<<<<<<<<<................ │
00:00:30 v #3493 > > │ ...////////////<<<<<<<<..................................................... │
00:00:30 v #3494 > > │ ........                                                                     │
00:00:30 v #3495 > > │ .............>///////////////////////////////<<<<<<<<<<<<<<................. │
00:00:30 v #3496 > > │ ......////////<<<<<<<<...................................................... │
00:00:30 v #3497 > > │ ........                                                                     │
00:00:30 v #3498 > > │ .............../////////////////////////////<<<<<<<<<<<<<<.................. │
00:00:30 v #3499 > > │ .........////<<<<<<<........................................................ │
00:00:30 v #3500 > > │ ........                                                                     │
00:00:30 v #3501 > > │ .................//////////////////////////<<<<<<<<<<<<<<................... │
00:00:30 v #3502 > > │ ...........//<<............................................................. │
00:00:30 v #3503 > > │ ........                                                                     │
00:00:30 v #3504 > > │ ....................///////////////////////<<<<<<<<<<<<<.................... │
00:00:30 v #3505 > > │ ............................................................................ │
00:00:30 v #3506 > > │ ........                                                                     │
00:00:30 v #3507 > > │ ......................////////////////////<<<<<<<<<<<<<..................... │
00:00:30 v #3508 > > │ ............................................................................ │
00:00:30 v #3509 > > │ ........                                                                     │
00:00:30 v #3510 > > │ ......................../////////////////<<<<<<<<<<<<....................... │
00:00:30 v #3511 > > │ ............................................................................ │
00:00:30 v #3512 > > │ ........                                                                     │
00:00:30 v #3513 > > │ .........................../////////////<<<<<<<<<<.......................... │
00:00:30 v #3514 > > │ ............................................................................ │
00:00:30 v #3515 > > │ ........                                                                     │
00:00:30 v #3516 > > │ .............................//////////<<<<<<<<............................. │
00:00:30 v #3517 > > │ ............................................................................ │
00:00:30 v #3518 > > │ ........                                                                     │
00:00:30 v #3519 > > │ ................................///////<<<<<................................ │
00:00:30 v #3520 > > │ ............................................................................ │
00:00:30 v #3521 > > │ ........                                                                     │
00:00:30 v #3522 > > │ ..................................////<<<................................... │
00:00:30 v #3523 > > │ ............................................................................ │
00:00:30 v #3524 > > │ ........                                                                     │
00:00:30 v #3525 > > │ .....................................<...................................... │
00:00:30 v #3526 > > │ ............................................................................ │
00:00:30 v #3527 > > │ ........                                                                     │
00:00:30 v #3528 > > │ ............................................................................ │
00:00:30 v #3529 > > │ ............................................................................ │
00:00:30 v #3530 > > │ ........                                                                     │
00:00:30 v #3531 > > │ ............................................................................ │
00:00:30 v #3532 > > │ ............................................................................ │
00:00:30 v #3533 > > │ ........                                                                     │
00:00:30 v #3534 > > │ ............................................................................ │
00:00:30 v #3535 > > │ ............................................................................ │
00:00:30 v #3536 > > │ ........                                                                     │
00:00:30 v #3537 > > │ ............................................................................ │
00:00:30 v #3538 > > │ ............................................................................ │
00:00:30 v #3539 > > │ ........                                                                     │
00:00:30 v #3540 > > │ ............................................................................ │
00:00:30 v #3541 > > │ ............................................................................ │
00:00:30 v #3542 > > │ ........                                                                     │
00:00:30 v #3543 > > │ ............................................................................ │
00:00:30 v #3544 > > │ ............................................................................ │
00:00:30 v #3545 > > │ ........                                                                     │
00:00:30 v #3546 > > │ ............................................................................ │
00:00:30 v #3547 > > │ ............................................................................ │
00:00:30 v #3548 > > │ ........                                                                     │
00:00:30 v #3549 > > │                                                                              │
00:00:30 v #3550 > > │ ............................................................................ │
00:00:30 v #3551 > > │ ............................................................................ │
00:00:30 v #3552 > > │ ........                                                                     │
00:00:30 v #3553 > > │ ............................................................................ │
00:00:30 v #3554 > > │ ............................................................................ │
00:00:30 v #3555 > > │ ........                                                                     │
00:00:30 v #3556 > > │ ............................................................................ │
00:00:30 v #3557 > > │ ............................................................................ │
00:00:30 v #3558 > > │ ........                                                                     │
00:00:30 v #3559 > > │ ............................................................................ │
00:00:30 v #3560 > > │ ............................................................................ │
00:00:30 v #3561 > > │ ........                                                                     │
00:00:30 v #3562 > > │ ............................................................................ │
00:00:30 v #3563 > > │ ............................................................................ │
00:00:30 v #3564 > > │ ........                                                                     │
00:00:30 v #3565 > > │ ............................................................................ │
00:00:30 v #3566 > > │ ............................................................................ │
00:00:30 v #3567 > > │ ........                                                                     │
00:00:30 v #3568 > > │ ............................................................................ │
00:00:30 v #3569 > > │ ............................................................................ │
00:00:30 v #3570 > > │ ........                                                                     │
00:00:30 v #3571 > > │ ............................................................................ │
00:00:30 v #3572 > > │ ............................................................................ │
00:00:30 v #3573 > > │ ........                                                                     │
00:00:30 v #3574 > > │ ............................................................................ │
00:00:30 v #3575 > > │ ............................................................................ │
00:00:30 v #3576 > > │ ........                                                                     │
00:00:30 v #3577 > > │ ............................................................................ │
00:00:30 v #3578 > > │ ............................................................................ │
00:00:30 v #3579 > > │ ........                                                                     │
00:00:30 v #3580 > > │ ....................;;...................................................... │
00:00:30 v #3581 > > │ ............................................................................ │
00:00:30 v #3582 > > │ ........                                                                     │
00:00:30 v #3583 > > │ ....................//;/;;;;;;;;;........................................... │
00:00:30 v #3584 > > │ ............................................................................ │
00:00:30 v #3585 > > │ ........                                                                     │
00:00:30 v #3586 > > │ ...................>//////;;;/;;;;;;;;;;;;;................................. │
00:00:30 v #3587 > > │ ............................................................................ │
00:00:30 v #3588 > > │ ........                                                                     │
00:00:30 v #3589 > > │ ...................////////////;;;;;;;;;;;;;;;;;............................ │
00:00:30 v #3590 > > │ ............................................................................ │
00:00:30 v #3591 > > │ ........                                                                     │
00:00:30 v #3592 > > │ ..................>/////////////////////;;;;;;;;;;;;;;...................... │
00:00:30 v #3593 > > │ ............................................................................ │
00:00:30 v #3594 > > │ ........                                                                     │
00:00:30 v #3595 > > │ ..................>///////////////////////;;;/;;;;;;;;;;;;;;................ │
00:00:30 v #3596 > > │ ............................................................................ │
00:00:30 v #3597 > > │ ........                                                                     │
00:00:30 v #3598 > > │ ................../////////////////////////////;;/;;;;;;;;;;;;;;;........... │
00:00:30 v #3599 > > │ ....;;;;;;;;;;;............................................................. │
00:00:30 v #3600 > > │ ........                                                                     │
00:00:30 v #3601 > > │ .................>//////////////////////////////////<<<<<<<<<<<<<<.......... │
00:00:30 v #3602 > > │ ....>/;/;;;;;;;;;;;;........................................................ │
00:00:30 v #3603 > > │ ........                                                                     │
00:00:30 v #3604 > > │ .................//////////////////////////////////<<<<<<<<<<<<<<........... │
00:00:30 v #3605 > > │ ...>///////;;/;;;;;;;;;;;................................................... │
00:00:30 v #3606 > > │ ........                                                                     │
00:00:30 v #3607 > > │ ................>//////////////////////////////////<<<<<<<<<<<<<............ │
00:00:30 v #3608 > > │ ...>//////////;;/;;;<<<<<<<............/;;;;;;;\............................ │
00:00:30 v #3609 > > │ ........                                                                     │
00:00:30 v #3610 > > │ ................//////////////////////////////////<<<<<<<<<<<<<............. │
00:00:30 v #3611 > > │ ..>////////////////<<<<<<<<...........>//;;/;;;;<<<......................... │
00:00:30 v #3612 > > │ ........                                                                     │
00:00:30 v #3613 > > │ ...............>//////////////////////////////////<<<<<<<<<<<<.............. │
00:00:30 v #3614 > > │ ..////////////////<<<<<<<<............>///////<<<<.......................... │
00:00:30 v #3615 > > │ ........                                                                     │
00:00:30 v #3616 > > │ ...............>/////////////////////////////////<<<<<<<<<<<<<.............. │
00:00:30 v #3617 > > │ .>///////////////<<<<<<<<............>///////<<<<<.......................... │
00:00:30 v #3618 > > │ ........                                                                     │
00:00:30 v #3619 > > │ .............../////////////////////////////////<<<<<<<<<<<<<............... │
00:00:30 v #3620 > > │ .>///////////////<<<<<<<<............////////<<<<........................... │
00:00:30 v #3621 > > │ ........                                                                     │
00:00:30 v #3622 > > │ ..............>////////////////////////////////<<<<<<<<<<<<<................ │
00:00:30 v #3623 > > │ .///////////////<<<<<<<<................////<<<<<........................... │
00:00:30 v #3624 > > │ ........                                                                     │
00:00:30 v #3625 > > │ ............../////////////////////////////////<<<<<<<<<<<<................. │
00:00:30 v #3626 > > │ ../////////////<<<<<<<<..................................................... │
00:00:30 v #3627 > > │ ........                                                                     │
00:00:30 v #3628 > > │ .............>////////////////////////////////<<<<<<<<<<<<<................. │
00:00:30 v #3629 > > │ ....../////////<<<<<<<<..................................................... │
00:00:30 v #3630 > > │ ........                                                                     │
00:00:30 v #3631 > > │ .............////////////////////////////////<<<<<<<<<<<<<.................. │
00:00:30 v #3632 > > │ ........./////<<<<<<........................................................ │
00:00:30 v #3633 > > │ ........                                                                     │
00:00:30 v #3634 > > │ ................/////////////////////////////<<<<<<<<<<<<................... │
00:00:30 v #3635 > > │ ............./<............................................................. │
00:00:30 v #3636 > > │ ........                                                                     │
00:00:30 v #3637 > > │ .................../////////////////////////<<<<<<<<<<<<.................... │
00:00:30 v #3638 > > │ ............................................................................ │
00:00:30 v #3639 > > │ ........                                                                     │
00:00:30 v #3640 > > │ ....................../////////////////////<<<<<<<<<<<<..................... │
00:00:30 v #3641 > > │ ............................................................................ │
00:00:30 v #3642 > > │ ........                                                                     │
00:00:30 v #3643 > > │ ........................///////////////////<<<<<<<<<<....................... │
00:00:30 v #3644 > > │ ............................................................................ │
00:00:30 v #3645 > > │ ........                                                                     │
00:00:30 v #3646 > > │ ............................//////////////<<<<<<<<<......................... │
00:00:30 v #3647 > > │ ............................................................................ │
00:00:30 v #3648 > > │ ........                                                                     │
00:00:30 v #3649 > > │ ...............................//////////<<<<<<<............................ │
00:00:30 v #3650 > > │ ............................................................................ │
00:00:30 v #3651 > > │ ........                                                                     │
00:00:30 v #3652 > > │ ..................................///////<<<<<.............................. │
00:00:30 v #3653 > > │ ............................................................................ │
00:00:30 v #3654 > > │ ........                                                                     │
00:00:30 v #3655 > > │ ....................................////<<<................................. │
00:00:30 v #3656 > > │ ............................................................................ │
00:00:30 v #3657 > > │ ........                                                                     │
00:00:30 v #3658 > > │ ......................................./.................................... │
00:00:30 v #3659 > > │ ............................................................................ │
00:00:30 v #3660 > > │ ........                                                                     │
00:00:30 v #3661 > > │ ............................................................................ │
00:00:30 v #3662 > > │ ............................................................................ │
00:00:30 v #3663 > > │ ........                                                                     │
00:00:30 v #3664 > > │ ............................................................................ │
00:00:30 v #3665 > > │ ............................................................................ │
00:00:30 v #3666 > > │ ........                                                                     │
00:00:30 v #3667 > > │ ............................................................................ │
00:00:30 v #3668 > > │ ............................................................................ │
00:00:30 v #3669 > > │ ........                                                                     │
00:00:30 v #3670 > > │ ............................................................................ │
00:00:30 v #3671 > > │ ............................................................................ │
00:00:30 v #3672 > > │ ........                                                                     │
00:00:30 v #3673 > > │ ............................................................................ │
00:00:30 v #3674 > > │ ............................................................................ │
00:00:30 v #3675 > > │ ........                                                                     │
00:00:30 v #3676 > > │ ............................................................................ │
00:00:30 v #3677 > > │ ............................................................................ │
00:00:30 v #3678 > > │ ........                                                                     │
00:00:30 v #3679 > > │ ............................................................................ │
00:00:30 v #3680 > > │ ............................................................................ │
00:00:30 v #3681 > > │ ........                                                                     │
00:00:30 v #3682 > > │                                                                              │
00:00:30 v #3683 > > │ ............................................................................ │
00:00:30 v #3684 > > │ ............................................................................ │
00:00:30 v #3685 > > │ ........                                                                     │
00:00:30 v #3686 > > │ ............................................................................ │
00:00:30 v #3687 > > │ ............................................................................ │
00:00:30 v #3688 > > │ ........                                                                     │
00:00:30 v #3689 > > │ ............................................................................ │
00:00:30 v #3690 > > │ ............................................................................ │
00:00:30 v #3691 > > │ ........                                                                     │
00:00:30 v #3692 > > │ ............................................................................ │
00:00:30 v #3693 > > │ ............................................................................ │
00:00:30 v #3694 > > │ ........                                                                     │
00:00:30 v #3695 > > │ ............................................................................ │
00:00:30 v #3696 > > │ ............................................................................ │
00:00:30 v #3697 > > │ ........                                                                     │
00:00:30 v #3698 > > │ ............................................................................ │
00:00:30 v #3699 > > │ ............................................................................ │
00:00:30 v #3700 > > │ ........                                                                     │
00:00:30 v #3701 > > │ ............................................................................ │
00:00:30 v #3702 > > │ ............................................................................ │
00:00:30 v #3703 > > │ ........                                                                     │
00:00:30 v #3704 > > │ ............................................................................ │
00:00:30 v #3705 > > │ ............................................................................ │
00:00:30 v #3706 > > │ ........                                                                     │
00:00:30 v #3707 > > │ ............................................................................ │
00:00:30 v #3708 > > │ ............................................................................ │
00:00:30 v #3709 > > │ ........                                                                     │
00:00:30 v #3710 > > │ ............................................................................ │
00:00:30 v #3711 > > │ ............................................................................ │
00:00:30 v #3712 > > │ ........                                                                     │
00:00:30 v #3713 > > │ ............................................................................ │
00:00:30 v #3714 > > │ ............................................................................ │
00:00:30 v #3715 > > │ ........                                                                     │
00:00:30 v #3716 > > │ ...................;/;;;;;;;;............................................... │
00:00:30 v #3717 > > │ ............................................................................ │
00:00:30 v #3718 > > │ ........                                                                     │
00:00:30 v #3719 > > │ ...................//////;///;;;;;;;;;;..................................... │
00:00:30 v #3720 > > │ ............................................................................ │
00:00:30 v #3721 > > │ ........                                                                     │
00:00:30 v #3722 > > │ ..................>/////////////;;;;;;;;;;;;;;;............................. │
00:00:30 v #3723 > > │ ............................................................................ │
00:00:30 v #3724 > > │ ........                                                                     │
00:00:30 v #3725 > > │ ..................>////////////////////;//;;;;;;;;;;;;...................... │
00:00:30 v #3726 > > │ ............................................................................ │
00:00:30 v #3727 > > │ ........                                                                     │
00:00:30 v #3728 > > │ ................../////////////////////////////;/;;;;;;;;;;;;............... │
00:00:30 v #3729 > > │ ............................................................................ │
00:00:30 v #3730 > > │ ........                                                                     │
00:00:30 v #3731 > > │ .................>///////////////////////////////////<<<<<<<<<<<<........... │
00:00:30 v #3732 > > │ ............................................................................ │
00:00:30 v #3733 > > │ ........                                                                     │
00:00:30 v #3734 > > │ .................>//////////////////////////////////<<<<<<<<<<<<............ │
00:00:30 v #3735 > > │ ..../;;/;;;;;;;;;;;......................................................... │
00:00:30 v #3736 > > │ ........                                                                     │
00:00:30 v #3737 > > │ .................///////////////////////////////////<<<<<<<<<<<<............ │
00:00:30 v #3738 > > │ ...>///////;;;;;;;;;;;;;;................................................... │
00:00:30 v #3739 > > │ ........                                                                     │
00:00:30 v #3740 > > │ ................>//////////////////////////////////<<<<<<<<<<<<............. │
00:00:30 v #3741 > > │ ...>/////////////;;<<<<<<<<............;;;;;;;;............................. │
00:00:30 v #3742 > > │ ........                                                                     │
00:00:30 v #3743 > > │ ................>//////////////////////////////////<<<<<<<<<<<.............. │
00:00:30 v #3744 > > │ ..>////////////////<<<<<<<............>//;;/;;<<<<<......................... │
00:00:30 v #3745 > > │ ........                                                                     │
00:00:30 v #3746 > > │ ................//////////////////////////////////<<<<<<<<<<<<.............. │
00:00:30 v #3747 > > │ ..>////////////////<<<<<<<............>///////<<<<.......................... │
00:00:30 v #3748 > > │ ........                                                                     │
00:00:30 v #3749 > > │ ...............>//////////////////////////////////<<<<<<<<<<<............... │
00:00:30 v #3750 > > │ ..////////////////<<<<<<<............>///////<<<<<.......................... │
00:00:30 v #3751 > > │ ........                                                                     │
00:00:30 v #3752 > > │ ...............//////////////////////////////////<<<<<<<<<<<................ │
00:00:30 v #3753 > > │ .>///////////////<<<<<<<.............>///////<<<<........................... │
00:00:30 v #3754 > > │ ........                                                                     │
00:00:30 v #3755 > > │ ...............//////////////////////////////////<<<<<<<<<<<................ │
00:00:30 v #3756 > > │ .////////////////<<<<<<<................////<<<<<........................... │
00:00:30 v #3757 > > │ ........                                                                     │
00:00:30 v #3758 > > │ ..............>/////////////////////////////////<<<<<<<<<<<................. │
00:00:30 v #3759 > > │ .///////////////<<<<<<<..................................................... │
00:00:30 v #3760 > > │ ........                                                                     │
00:00:30 v #3761 > > │ ............../////////////////////////////////<<<<<<<<<<<.................. │
00:00:30 v #3762 > > │ ......//////////<<<<<<<..................................................... │
00:00:30 v #3763 > > │ ........                                                                     │
00:00:30 v #3764 > > │ .............//////////////////////////////////<<<<<<<<<<<.................. │
00:00:30 v #3765 > > │ ........../////<<<<<........................................................ │
00:00:30 v #3766 > > │ ........                                                                     │
00:00:30 v #3767 > > │ ..............////////////////////////////////<<<<<<<<<<<................... │
00:00:30 v #3768 > > │ ............../<............................................................ │
00:00:30 v #3769 > > │ ........                                                                     │
00:00:30 v #3770 > > │ ................./////////////////////////////<<<<<<<<<<.................... │
00:00:30 v #3771 > > │ ............................................................................ │
00:00:30 v #3772 > > │ ........                                                                     │
00:00:30 v #3773 > > │ .....................////////////////////////<<<<<<<<<<<.................... │
00:00:30 v #3774 > > │ ............................................................................ │
00:00:30 v #3775 > > │ ........                                                                     │
00:00:30 v #3776 > > │ ........................////////////////////<<<<<<<<<<...................... │
00:00:30 v #3777 > > │ ............................................................................ │
00:00:30 v #3778 > > │ ........                                                                     │
00:00:30 v #3779 > > │ ............................////////////////<<<<<<<......................... │
00:00:30 v #3780 > > │ ............................................................................ │
00:00:30 v #3781 > > │ ........                                                                     │
00:00:30 v #3782 > > │ ................................///////////<<<<<<........................... │
00:00:30 v #3783 > > │ ............................................................................ │
00:00:30 v #3784 > > │ ........                                                                     │
00:00:30 v #3785 > > │ ...................................////////<<<<............................. │
00:00:30 v #3786 > > │ ............................................................................ │
00:00:30 v #3787 > > │ ........                                                                     │
00:00:30 v #3788 > > │ .......................................///<<................................ │
00:00:30 v #3789 > > │ ............................................................................ │
00:00:30 v #3790 > > │ ........                                                                     │
00:00:30 v #3791 > > │ ............................................................................ │
00:00:30 v #3792 > > │ ............................................................................ │
00:00:30 v #3793 > > │ ........                                                                     │
00:00:30 v #3794 > > │ ............................................................................ │
00:00:30 v #3795 > > │ ............................................................................ │
00:00:30 v #3796 > > │ ........                                                                     │
00:00:30 v #3797 > > │ ............................................................................ │
00:00:30 v #3798 > > │ ............................................................................ │
00:00:30 v #3799 > > │ ........                                                                     │
00:00:30 v #3800 > > │ ............................................................................ │
00:00:30 v #3801 > > │ ............................................................................ │
00:00:30 v #3802 > > │ ........                                                                     │
00:00:30 v #3803 > > │ ............................................................................ │
00:00:30 v #3804 > > │ ............................................................................ │
00:00:30 v #3805 > > │ ........                                                                     │
00:00:30 v #3806 > > │ ............................................................................ │
00:00:30 v #3807 > > │ ............................................................................ │
00:00:30 v #3808 > > │ ........                                                                     │
00:00:30 v #3809 > > │ ............................................................................ │
00:00:30 v #3810 > > │ ............................................................................ │
00:00:30 v #3811 > > │ ........                                                                     │
00:00:30 v #3812 > > │ ............................................................................ │
00:00:30 v #3813 > > │ ............................................................................ │
00:00:30 v #3814 > > │ ........                                                                     │
00:00:30 v #3815 > > │                                                                              │
00:00:30 v #3816 > > │ ............................................................................ │
00:00:30 v #3817 > > │ ............................................................................ │
00:00:30 v #3818 > > │ ........                                                                     │
00:00:30 v #3819 > > │ ............................................................................ │
00:00:30 v #3820 > > │ ............................................................................ │
00:00:30 v #3821 > > │ ........                                                                     │
00:00:30 v #3822 > > │ ............................................................................ │
00:00:30 v #3823 > > │ ............................................................................ │
00:00:30 v #3824 > > │ ........                                                                     │
00:00:30 v #3825 > > │ ............................................................................ │
00:00:30 v #3826 > > │ ............................................................................ │
00:00:30 v #3827 > > │ ........                                                                     │
00:00:30 v #3828 > > │ ............................................................................ │
00:00:30 v #3829 > > │ ............................................................................ │
00:00:30 v #3830 > > │ ........                                                                     │
00:00:30 v #3831 > > │ ............................................................................ │
00:00:30 v #3832 > > │ ............................................................................ │
00:00:30 v #3833 > > │ ........                                                                     │
00:00:30 v #3834 > > │ ............................................................................ │
00:00:30 v #3835 > > │ ............................................................................ │
00:00:30 v #3836 > > │ ........                                                                     │
00:00:30 v #3837 > > │ ............................................................................ │
00:00:30 v #3838 > > │ ............................................................................ │
00:00:30 v #3839 > > │ ........                                                                     │
00:00:30 v #3840 > > │ ............................................................................ │
00:00:30 v #3841 > > │ ............................................................................ │
00:00:30 v #3842 > > │ ........                                                                     │
00:00:30 v #3843 > > │ ............................................................................ │
00:00:30 v #3844 > > │ ............................................................................ │
00:00:30 v #3845 > > │ ........                                                                     │
00:00:30 v #3846 > > │ ............................................................................ │
00:00:30 v #3847 > > │ ............................................................................ │
00:00:30 v #3848 > > │ ........                                                                     │
00:00:30 v #3849 > > │ ...................;;;;;.................................................... │
00:00:30 v #3850 > > │ ............................................................................ │
00:00:30 v #3851 > > │ ........                                                                     │
00:00:30 v #3852 > > │ ..................>//////;;;;;;;;;;......................................... │
00:00:30 v #3853 > > │ ............................................................................ │
00:00:30 v #3854 > > │ ........                                                                     │
00:00:30 v #3855 > > │ ..................>//////////////;;;;/;;;;;;................................ │
00:00:30 v #3856 > > │ ............................................................................ │
00:00:30 v #3857 > > │ ........                                                                     │
00:00:30 v #3858 > > │ ..................//////////////////////////;;;;;;;;;;...................... │
00:00:30 v #3859 > > │ ............................................................................ │
00:00:30 v #3860 > > │ ........                                                                     │
00:00:30 v #3861 > > │ ..................//////////////////////////////////;/<<<<<<<<<............. │
00:00:30 v #3862 > > │ ............................................................................ │
00:00:30 v #3863 > > │ ........                                                                     │
00:00:30 v #3864 > > │ .................>///////////////////////////////////<<<<<<<<<<............. │
00:00:30 v #3865 > > │ ............................................................................ │
00:00:30 v #3866 > > │ ........                                                                     │
00:00:30 v #3867 > > │ .................////////////////////////////////////<<<<<<<<<<............. │
00:00:30 v #3868 > > │ ....;/;;;;;;;;;;;;;......................................................... │
00:00:30 v #3869 > > │ ........                                                                     │
00:00:30 v #3870 > > │ .................///////////////////////////////////<<<<<<<<<<.............. │
00:00:30 v #3871 > > │ ...>///////;;;;;;;;;;;;;;<.................................................. │
00:00:30 v #3872 > > │ ........                                                                     │
00:00:30 v #3873 > > │ ................>///////////////////////////////////<<<<<<<<<<.............. │
00:00:30 v #3874 > > │ ...///////////////;<<<<<<<.............;;;;;;;;............................. │
00:00:30 v #3875 > > │ ........                                                                     │
00:00:30 v #3876 > > │ ................>///////////////////////////////////<<<<<<<<<............... │
00:00:30 v #3877 > > │ ...////////////////<<<<<<<............>//;;//;<<<<.......................... │
00:00:30 v #3878 > > │ ........                                                                     │
00:00:30 v #3879 > > │ ................///////////////////////////////////<<<<<<<<<<............... │
00:00:30 v #3880 > > │ ..>////////////////<<<<<<.............>///////<<<<.......................... │
00:00:30 v #3881 > > │ ........                                                                     │
00:00:30 v #3882 > > │ ...............>//////////////////////////////////<<<<<<<<<<................ │
00:00:30 v #3883 > > │ ..////////////////<<<<<<<.............////////<<<<.......................... │
00:00:30 v #3884 > > │ ........                                                                     │
00:00:30 v #3885 > > │ ...............>//////////////////////////////////<<<<<<<<<<................ │
00:00:30 v #3886 > > │ ../////////////////<<<<<.............>///////<<<<........................... │
00:00:30 v #3887 > > │ ........                                                                     │
00:00:30 v #3888 > > │ ...............///////////////////////////////////<<<<<<<<<................. │
00:00:30 v #3889 > > │ .>///////////////<<<<<<<................/////<<<<........................... │
00:00:30 v #3890 > > │ ........                                                                     │
00:00:30 v #3891 > > │ ...............//////////////////////////////////<<<<<<<<<<................. │
00:00:30 v #3892 > > │ .////////////////<<<<<<..................................................... │
00:00:30 v #3893 > > │ ........                                                                     │
00:00:30 v #3894 > > │ ..............>//////////////////////////////////<<<<<<<<<.................. │
00:00:30 v #3895 > > │ .....///////////<<<<<<<..................................................... │
00:00:30 v #3896 > > │ ........                                                                     │
00:00:30 v #3897 > > │ ..............>/////////////////////////////////<<<<<<<<<<.................. │
00:00:30 v #3898 > > │ .........../////<<<<........................................................ │
00:00:30 v #3899 > > │ ........                                                                     │
00:00:30 v #3900 > > │ ..............//////////////////////////////////<<<<<<<<<................... │
00:00:30 v #3901 > > │ ............................................................................ │
00:00:30 v #3902 > > │ ........                                                                     │
00:00:30 v #3903 > > │ ...............////////////////////////////////<<<<<<<<<<................... │
00:00:30 v #3904 > > │ ............................................................................ │
00:00:30 v #3905 > > │ ........                                                                     │
00:00:30 v #3906 > > │ ....................///////////////////////////<<<<<<<<<.................... │
00:00:30 v #3907 > > │ ............................................................................ │
00:00:30 v #3908 > > │ ........                                                                     │
00:00:30 v #3909 > > │ ........................//////////////////////<<<<<<<<...................... │
00:00:30 v #3910 > > │ ............................................................................ │
00:00:30 v #3911 > > │ ........                                                                     │
00:00:30 v #3912 > > │ ............................./////////////////<<<<<<........................ │
00:00:30 v #3913 > > │ ............................................................................ │
00:00:30 v #3914 > > │ ........                                                                     │
00:00:30 v #3915 > > │ .................................////////////<<<<<.......................... │
00:00:30 v #3916 > > │ ............................................................................ │
00:00:30 v #3917 > > │ ........                                                                     │
00:00:30 v #3918 > > │ ......................................///////<<<............................ │
00:00:30 v #3919 > > │ ............................................................................ │
00:00:30 v #3920 > > │ ........                                                                     │
00:00:30 v #3921 > > │ ..........................................//<<.............................. │
00:00:30 v #3922 > > │ ............................................................................ │
00:00:30 v #3923 > > │ ........                                                                     │
00:00:30 v #3924 > > │ ............................................................................ │
00:00:30 v #3925 > > │ ............................................................................ │
00:00:30 v #3926 > > │ ........                                                                     │
00:00:30 v #3927 > > │ ............................................................................ │
00:00:30 v #3928 > > │ ............................................................................ │
00:00:30 v #3929 > > │ ........                                                                     │
00:00:30 v #3930 > > │ ............................................................................ │
00:00:30 v #3931 > > │ ............................................................................ │
00:00:30 v #3932 > > │ ........                                                                     │
00:00:30 v #3933 > > │ ............................................................................ │
00:00:30 v #3934 > > │ ............................................................................ │
00:00:30 v #3935 > > │ ........                                                                     │
00:00:30 v #3936 > > │ ............................................................................ │
00:00:30 v #3937 > > │ ............................................................................ │
00:00:30 v #3938 > > │ ........                                                                     │
00:00:30 v #3939 > > │ ............................................................................ │
00:00:30 v #3940 > > │ ............................................................................ │
00:00:30 v #3941 > > │ ........                                                                     │
00:00:30 v #3942 > > │ ............................................................................ │
00:00:30 v #3943 > > │ ............................................................................ │
00:00:30 v #3944 > > │ ........                                                                     │
00:00:30 v #3945 > > │ ............................................................................ │
00:00:30 v #3946 > > │ ............................................................................ │
00:00:30 v #3947 > > │ ........                                                                     │
00:00:30 v #3948 > > │                                                                              │
00:00:30 v #3949 > > │ ............................................................................ │
00:00:30 v #3950 > > │ ............................................................................ │
00:00:30 v #3951 > > │ ........                                                                     │
00:00:30 v #3952 > > │ ............................................................................ │
00:00:30 v #3953 > > │ ............................................................................ │
00:00:30 v #3954 > > │ ........                                                                     │
00:00:30 v #3955 > > │ ............................................................................ │
00:00:30 v #3956 > > │ ............................................................................ │
00:00:30 v #3957 > > │ ........                                                                     │
00:00:30 v #3958 > > │ ............................................................................ │
00:00:30 v #3959 > > │ ............................................................................ │
00:00:30 v #3960 > > │ ........                                                                     │
00:00:30 v #3961 > > │ ............................................................................ │
00:00:30 v #3962 > > │ ............................................................................ │
00:00:30 v #3963 > > │ ........                                                                     │
00:00:30 v #3964 > > │ ............................................................................ │
00:00:30 v #3965 > > │ ............................................................................ │
00:00:30 v #3966 > > │ ........                                                                     │
00:00:30 v #3967 > > │ ............................................................................ │
00:00:30 v #3968 > > │ ............................................................................ │
00:00:30 v #3969 > > │ ........                                                                     │
00:00:30 v #3970 > > │ ............................................................................ │
00:00:30 v #3971 > > │ ............................................................................ │
00:00:30 v #3972 > > │ ........                                                                     │
00:00:30 v #3973 > > │ ............................................................................ │
00:00:30 v #3974 > > │ ............................................................................ │
00:00:30 v #3975 > > │ ........                                                                     │
00:00:30 v #3976 > > │ ............................................................................ │
00:00:30 v #3977 > > │ ............................................................................ │
00:00:30 v #3978 > > │ ........                                                                     │
00:00:30 v #3979 > > │ ............................................................................ │
00:00:30 v #3980 > > │ ............................................................................ │
00:00:30 v #3981 > > │ ........                                                                     │
00:00:30 v #3982 > > │ ..................;;;....................................................... │
00:00:30 v #3983 > > │ ............................................................................ │
00:00:30 v #3984 > > │ ........                                                                     │
00:00:30 v #3985 > > │ ..................//;;;;;;/;;;;;;;;......................................... │
00:00:30 v #3986 > > │ ............................................................................ │
00:00:30 v #3987 > > │ ........                                                                     │
00:00:30 v #3988 > > │ ..................////////////////;;//;;;;;;;;;;;........................... │
00:00:30 v #3989 > > │ ............................................................................ │
00:00:30 v #3990 > > │ ........                                                                     │
00:00:30 v #3991 > > │ .................>///////////////////////////////;;;/;<<<<<................. │
00:00:30 v #3992 > > │ ............................................................................ │
00:00:30 v #3993 > > │ ........                                                                     │
00:00:30 v #3994 > > │ .................>////////////////////////////////////<<<<<<<<.............. │
00:00:30 v #3995 > > │ ............................................................................ │
00:00:30 v #3996 > > │ ........                                                                     │
00:00:30 v #3997 > > │ ................./////////////////////////////////////<<<<<<<<.............. │
00:00:30 v #3998 > > │ ............................................................................ │
00:00:30 v #3999 > > │ ........                                                                     │
00:00:30 v #4000 > > │ .................////////////////////////////////////<<<<<<<<<.............. │
00:00:30 v #4001 > > │ ...>/;;;;;;;;;;;;;.......................................................... │
00:00:30 v #4002 > > │ ........                                                                     │
00:00:30 v #4003 > > │ .................////////////////////////////////////<<<<<<<<............... │
00:00:30 v #4004 > > │ ...>///////;;;;;;;;/<<<<<<.................................................. │
00:00:30 v #4005 > > │ ........                                                                     │
00:00:30 v #4006 > > │ ................>///////////////////////////////////<<<<<<<<<............... │
00:00:30 v #4007 > > │ .../////////////////<<<<<<.............;;;;;;;;............................. │
00:00:30 v #4008 > > │ ........                                                                     │
00:00:30 v #4009 > > │ ................>///////////////////////////////////<<<<<<<<................ │
00:00:30 v #4010 > > │ ...////////////////<<<<<<.............>//;;;//<<<<.......................... │
00:00:30 v #4011 > > │ ........                                                                     │
00:00:30 v #4012 > > │ ................////////////////////////////////////<<<<<<<<................ │
00:00:30 v #4013 > > │ ..>////////////////<<<<<<.............>///////<<<<.......................... │
00:00:30 v #4014 > > │ ........                                                                     │
00:00:30 v #4015 > > │ ................///////////////////////////////////<<<<<<<<<................ │
00:00:30 v #4016 > > │ ..>///////////////<<<<<<..............////////<<<........................... │
00:00:30 v #4017 > > │ ........                                                                     │
00:00:30 v #4018 > > │ ................///////////////////////////////////<<<<<<<<................. │
00:00:30 v #4019 > > │ ..////////////////<<<<<<..............///////<<<<........................... │
00:00:30 v #4020 > > │ ........                                                                     │
00:00:30 v #4021 > > │ ...............>///////////////////////////////////<<<<<<<<................. │
00:00:30 v #4022 > > │ ..////////////////<<<<<<................/////<<<<........................... │
00:00:30 v #4023 > > │ ........                                                                     │
00:00:30 v #4024 > > │ ...............>//////////////////////////////////<<<<<<<<.................. │
00:00:30 v #4025 > > │ .>///////////////<<<<<<..................................................... │
00:00:30 v #4026 > > │ ........                                                                     │
00:00:30 v #4027 > > │ ...............///////////////////////////////////<<<<<<<<.................. │
00:00:30 v #4028 > > │ .....////////////<<<<<<..................................................... │
00:00:30 v #4029 > > │ ........                                                                     │
00:00:30 v #4030 > > │ ...............///////////////////////////////////<<<<<<<<.................. │
00:00:30 v #4031 > > │ ............/////<<<........................................................ │
00:00:30 v #4032 > > │ ........                                                                     │
00:00:30 v #4033 > > │ ..............>//////////////////////////////////<<<<<<<<................... │
00:00:30 v #4034 > > │ ............................................................................ │
00:00:30 v #4035 > > │ ........                                                                     │
00:00:30 v #4036 > > │ ..............>//////////////////////////////////<<<<<<<<................... │
00:00:30 v #4037 > > │ ............................................................................ │
00:00:30 v #4038 > > │ ........                                                                     │
00:00:30 v #4039 > > │ ..................//////////////////////////////<<<<<<<<.................... │
00:00:30 v #4040 > > │ ............................................................................ │
00:00:30 v #4041 > > │ ........                                                                     │
00:00:30 v #4042 > > │ ......................./////////////////////////<<<<<<...................... │
00:00:30 v #4043 > > │ ............................................................................ │
00:00:30 v #4044 > > │ ........                                                                     │
00:00:30 v #4045 > > │ .............................///////////////////<<<<........................ │
00:00:30 v #4046 > > │ ............................................................................ │
00:00:30 v #4047 > > │ ........                                                                     │
00:00:30 v #4048 > > │ ...................................////////////<<<<......................... │
00:00:30 v #4049 > > │ ............................................................................ │
00:00:30 v #4050 > > │ ........                                                                     │
00:00:30 v #4051 > > │ .........................................//////<<........................... │
00:00:30 v #4052 > > │ ............................................................................ │
00:00:30 v #4053 > > │ ........                                                                     │
00:00:30 v #4054 > > │ ............................................../............................. │
00:00:30 v #4055 > > │ ............................................................................ │
00:00:30 v #4056 > > │ ........                                                                     │
00:00:30 v #4057 > > │ ............................................................................ │
00:00:30 v #4058 > > │ ............................................................................ │
00:00:30 v #4059 > > │ ........                                                                     │
00:00:30 v #4060 > > │ ............................................................................ │
00:00:30 v #4061 > > │ ............................................................................ │
00:00:30 v #4062 > > │ ........                                                                     │
00:00:30 v #4063 > > │ ............................................................................ │
00:00:30 v #4064 > > │ ............................................................................ │
00:00:30 v #4065 > > │ ........                                                                     │
00:00:30 v #4066 > > │ ............................................................................ │
00:00:30 v #4067 > > │ ............................................................................ │
00:00:30 v #4068 > > │ ........                                                                     │
00:00:30 v #4069 > > │ ............................................................................ │
00:00:30 v #4070 > > │ ............................................................................ │
00:00:30 v #4071 > > │ ........                                                                     │
00:00:30 v #4072 > > │ ............................................................................ │
00:00:30 v #4073 > > │ ............................................................................ │
00:00:30 v #4074 > > │ ........                                                                     │
00:00:30 v #4075 > > │ ............................................................................ │
00:00:30 v #4076 > > │ ............................................................................ │
00:00:30 v #4077 > > │ ........                                                                     │
00:00:30 v #4078 > > │ ............................................................................ │
00:00:30 v #4079 > > │ ............................................................................ │
00:00:30 v #4080 > > │ ........                                                                     │
00:00:30 v #4081 > > │                                                                              │
00:00:30 v #4082 > > │ ............................................................................ │
00:00:30 v #4083 > > │ ............................................................................ │
00:00:30 v #4084 > > │ ........                                                                     │
00:00:30 v #4085 > > │ ............................................................................ │
00:00:30 v #4086 > > │ ............................................................................ │
00:00:30 v #4087 > > │ ........                                                                     │
00:00:30 v #4088 > > │ ............................................................................ │
00:00:30 v #4089 > > │ ............................................................................ │
00:00:30 v #4090 > > │ ........                                                                     │
00:00:30 v #4091 > > │ ............................................................................ │
00:00:30 v #4092 > > │ ............................................................................ │
00:00:30 v #4093 > > │ ........                                                                     │
00:00:30 v #4094 > > │ ............................................................................ │
00:00:30 v #4095 > > │ ............................................................................ │
00:00:30 v #4096 > > │ ........                                                                     │
00:00:30 v #4097 > > │ ............................................................................ │
00:00:30 v #4098 > > │ ............................................................................ │
00:00:30 v #4099 > > │ ........                                                                     │
00:00:30 v #4100 > > │ ............................................................................ │
00:00:30 v #4101 > > │ ............................................................................ │
00:00:30 v #4102 > > │ ........                                                                     │
00:00:30 v #4103 > > │ ............................................................................ │
00:00:30 v #4104 > > │ ............................................................................ │
00:00:30 v #4105 > > │ ........                                                                     │
00:00:30 v #4106 > > │ ............................................................................ │
00:00:30 v #4107 > > │ ............................................................................ │
00:00:30 v #4108 > > │ ........                                                                     │
00:00:30 v #4109 > > │ ............................................................................ │
00:00:30 v #4110 > > │ ............................................................................ │
00:00:30 v #4111 > > │ ........                                                                     │
00:00:30 v #4112 > > │ ............................................................................ │
00:00:30 v #4113 > > │ ............................................................................ │
00:00:30 v #4114 > > │ ........                                                                     │
00:00:30 v #4115 > > │ ............................................................................ │
00:00:30 v #4116 > > │ ............................................................................ │
00:00:30 v #4117 > > │ ........                                                                     │
00:00:30 v #4118 > > │ .................>;;;;;;;;;;;;/;;;;;;;;..................................... │
00:00:30 v #4119 > > │ ............................................................................ │
00:00:30 v #4120 > > │ ........                                                                     │
00:00:30 v #4121 > > │ .................>////////////////////;;/;;/;;/;;;;;;;;<<................... │
00:00:30 v #4122 > > │ ............................................................................ │
00:00:30 v #4123 > > │ ........                                                                     │
00:00:30 v #4124 > > │ .................>////////////////////////////////////<<<<<<................ │
00:00:30 v #4125 > > │ ............................................................................ │
00:00:30 v #4126 > > │ ........                                                                     │
00:00:30 v #4127 > > │ ................./////////////////////////////////////<<<<<<<............... │
00:00:30 v #4128 > > │ ............................................................................ │
00:00:30 v #4129 > > │ ........                                                                     │
00:00:30 v #4130 > > │ ................./////////////////////////////////////<<<<<<<............... │
00:00:30 v #4131 > > │ ............................................................................ │
00:00:30 v #4132 > > │ ........                                                                     │
00:00:30 v #4133 > > │ ................./////////////////////////////////////<<<<<<................ │
00:00:30 v #4134 > > │ ...;;;;;;/;;;;;;;........................................................... │
00:00:30 v #4135 > > │ ........                                                                     │
00:00:30 v #4136 > > │ .................////////////////////////////////////<<<<<<<................ │
00:00:30 v #4137 > > │ ...>////////;;;///;;<<<<<................................................... │
00:00:30 v #4138 > > │ ........                                                                     │
00:00:30 v #4139 > > │ ................>////////////////////////////////////<<<<<<<................ │
00:00:30 v #4140 > > │ .../////////////////<<<<<..............;;;;;;;;............................. │
00:00:30 v #4141 > > │ ........                                                                     │
00:00:30 v #4142 > > │ ................>////////////////////////////////////<<<<<<................. │
00:00:30 v #4143 > > │ ...////////////////<<<<<<.............>//;;;;;<<<<.......................... │
00:00:30 v #4144 > > │ ........                                                                     │
00:00:30 v #4145 > > │ ................>////////////////////////////////////<<<<<<................. │
00:00:30 v #4146 > > │ ...////////////////<<<<<..............>///////<<<<.......................... │
00:00:30 v #4147 > > │ ........                                                                     │
00:00:30 v #4148 > > │ ................>///////////////////////////////////<<<<<<<................. │
00:00:30 v #4149 > > │ ..>////////////////<<<<<..............>///////<<<........................... │
00:00:30 v #4150 > > │ ........                                                                     │
00:00:30 v #4151 > > │ ................////////////////////////////////////<<<<<<<................. │
00:00:30 v #4152 > > │ ..>////////////////<<<<<..............////////<<<........................... │
00:00:30 v #4153 > > │ ........                                                                     │
00:00:30 v #4154 > > │ ................////////////////////////////////////<<<<<<.................. │
00:00:30 v #4155 > > │ ..>////////////////<<<<<...............///////<<=........................... │
00:00:30 v #4156 > > │ ........                                                                     │
00:00:30 v #4157 > > │ ................////////////////////////////////////<<<<<<.................. │
00:00:30 v #4158 > > │ ..////////////////<<<<<..................................................... │
00:00:30 v #4159 > > │ ........                                                                     │
00:00:30 v #4160 > > │ ...............>///////////////////////////////////<<<<<<<.................. │
00:00:30 v #4161 > > │ ...///////////////<<<<<..................................................... │
00:00:30 v #4162 > > │ ........                                                                     │
00:00:30 v #4163 > > │ ...............>///////////////////////////////////<<<<<<................... │
00:00:30 v #4164 > > │ ............./////<<........................................................ │
00:00:30 v #4165 > > │ ........                                                                     │
00:00:30 v #4166 > > │ ...............>///////////////////////////////////<<<<<<................... │
00:00:30 v #4167 > > │ ............................................................................ │
00:00:30 v #4168 > > │ ........                                                                     │
00:00:30 v #4169 > > │ ...............>///////////////////////////////////<<<<<<................... │
00:00:30 v #4170 > > │ ............................................................................ │
00:00:30 v #4171 > > │ ........                                                                     │
00:00:30 v #4172 > > │ ...............///////////////////////////////////<<<<<<.................... │
00:00:30 v #4173 > > │ ............................................................................ │
00:00:30 v #4174 > > │ ........                                                                     │
00:00:30 v #4175 > > │ ......................////////////////////////////<<<<<..................... │
00:00:30 v #4176 > > │ ............................................................................ │
00:00:30 v #4177 > > │ ........                                                                     │
00:00:30 v #4178 > > │ ..............................////////////////////<<<....................... │
00:00:30 v #4179 > > │ ............................................................................ │
00:00:30 v #4180 > > │ ........                                                                     │
00:00:30 v #4181 > > │ ...................................../////////////<<........................ │
00:00:30 v #4182 > > │ ............................................................................ │
00:00:30 v #4183 > > │ ........                                                                     │
00:00:30 v #4184 > > │ .............................................////<<......................... │
00:00:30 v #4185 > > │ ............................................................................ │
00:00:30 v #4186 > > │ ........                                                                     │
00:00:30 v #4187 > > │ ............................................................................ │
00:00:30 v #4188 > > │ ............................................................................ │
00:00:30 v #4189 > > │ ........                                                                     │
00:00:30 v #4190 > > │ ............................................................................ │
00:00:30 v #4191 > > │ ............................................................................ │
00:00:30 v #4192 > > │ ........                                                                     │
00:00:30 v #4193 > > │ ............................................................................ │
00:00:30 v #4194 > > │ ............................................................................ │
00:00:30 v #4195 > > │ ........                                                                     │
00:00:30 v #4196 > > │ ............................................................................ │
00:00:30 v #4197 > > │ ............................................................................ │
00:00:30 v #4198 > > │ ........                                                                     │
00:00:30 v #4199 > > │ ............................................................................ │
00:00:30 v #4200 > > │ ............................................................................ │
00:00:30 v #4201 > > │ ........                                                                     │
00:00:30 v #4202 > > │ ............................................................................ │
00:00:30 v #4203 > > │ ............................................................................ │
00:00:30 v #4204 > > │ ........                                                                     │
00:00:30 v #4205 > > │ ............................................................................ │
00:00:30 v #4206 > > │ ............................................................................ │
00:00:30 v #4207 > > │ ........                                                                     │
00:00:30 v #4208 > > │ ............................................................................ │
00:00:30 v #4209 > > │ ............................................................................ │
00:00:30 v #4210 > > │ ........                                                                     │
00:00:30 v #4211 > > │ ............................................................................ │
00:00:30 v #4212 > > │ ............................................................................ │
00:00:30 v #4213 > > │ ........                                                                     │
00:00:30 v #4214 > > │                                                                              │
00:00:30 v #4215 > > │ ............................................................................ │
00:00:30 v #4216 > > │ ............................................................................ │
00:00:30 v #4217 > > │ ........                                                                     │
00:00:30 v #4218 > > │ ............................................................................ │
00:00:30 v #4219 > > │ ............................................................................ │
00:00:30 v #4220 > > │ ........                                                                     │
00:00:30 v #4221 > > │ ............................................................................ │
00:00:30 v #4222 > > │ ............................................................................ │
00:00:30 v #4223 > > │ ........                                                                     │
00:00:30 v #4224 > > │ ............................................................................ │
00:00:30 v #4225 > > │ ............................................................................ │
00:00:30 v #4226 > > │ ........                                                                     │
00:00:30 v #4227 > > │ ............................................................................ │
00:00:30 v #4228 > > │ ............................................................................ │
00:00:30 v #4229 > > │ ........                                                                     │
00:00:30 v #4230 > > │ ............................................................................ │
00:00:30 v #4231 > > │ ............................................................................ │
00:00:30 v #4232 > > │ ........                                                                     │
00:00:30 v #4233 > > │ ............................................................................ │
00:00:30 v #4234 > > │ ............................................................................ │
00:00:30 v #4235 > > │ ........                                                                     │
00:00:30 v #4236 > > │ ............................................................................ │
00:00:30 v #4237 > > │ ............................................................................ │
00:00:30 v #4238 > > │ ........                                                                     │
00:00:30 v #4239 > > │ ............................................................................ │
00:00:30 v #4240 > > │ ............................................................................ │
00:00:30 v #4241 > > │ ........                                                                     │
00:00:30 v #4242 > > │ ............................................................................ │
00:00:30 v #4243 > > │ ............................................................................ │
00:00:30 v #4244 > > │ ........                                                                     │
00:00:30 v #4245 > > │ ............................................................................ │
00:00:30 v #4246 > > │ ............................................................................ │
00:00:30 v #4247 > > │ ........                                                                     │
00:00:30 v #4248 > > │ ............................................................................ │
00:00:30 v #4249 > > │ ............................................................................ │
00:00:30 v #4250 > > │ ........                                                                     │
00:00:30 v #4251 > > │ .................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<.................... │
00:00:30 v #4252 > > │ ............................................................................ │
00:00:30 v #4253 > > │ ........                                                                     │
00:00:30 v #4254 > > │ .................//////////////////////////////////////<<<.................. │
00:00:30 v #4255 > > │ ............................................................................ │
00:00:30 v #4256 > > │ ........                                                                     │
00:00:30 v #4257 > > │ .................//////////////////////////////////////<<<<................. │
00:00:30 v #4258 > > │ ............................................................................ │
00:00:30 v #4259 > > │ ........                                                                     │
00:00:30 v #4260 > > │ ................./////////////////////////////////////<<<<<................. │
00:00:30 v #4261 > > │ ............................................................................ │
00:00:30 v #4262 > > │ ........                                                                     │
00:00:30 v #4263 > > │ ................./////////////////////////////////////<<<<<................. │
00:00:30 v #4264 > > │ ............................................................................ │
00:00:30 v #4265 > > │ ........                                                                     │
00:00:30 v #4266 > > │ ................./////////////////////////////////////<<<<<................. │
00:00:30 v #4267 > > │ ...;;/;;;;;;;;;;............................................................ │
00:00:30 v #4268 > > │ ........                                                                     │
00:00:30 v #4269 > > │ ................./////////////////////////////////////<<<<<................. │
00:00:30 v #4270 > > │ .../////////////;;;;<<<<.................................................... │
00:00:30 v #4271 > > │ ........                                                                     │
00:00:30 v #4272 > > │ ................./////////////////////////////////////<<<<<................. │
00:00:30 v #4273 > > │ .../////////////////<<<<...............;;;;;;;;............................. │
00:00:30 v #4274 > > │ ........                                                                     │
00:00:30 v #4275 > > │ ................>/////////////////////////////////////<<<<<................. │
00:00:30 v #4276 > > │ .../////////////////<<<<..............>//;;;;;<<<<.......................... │
00:00:30 v #4277 > > │ ........                                                                     │
00:00:30 v #4278 > > │ ................>/////////////////////////////////////<<<<.................. │
00:00:30 v #4279 > > │ .../////////////////<<<<..............>///////<<<........................... │
00:00:30 v #4280 > > │ ........                                                                     │
00:00:30 v #4281 > > │ ................>////////////////////////////////////<<<<<.................. │
00:00:30 v #4282 > > │ ...////////////////<<<<<..............>///////<<<........................... │
00:00:30 v #4283 > > │ ........                                                                     │
00:00:30 v #4284 > > │ ................>////////////////////////////////////<<<<<.................. │
00:00:30 v #4285 > > │ ...////////////////<<<<<..............>///////<<<........................... │
00:00:30 v #4286 > > │ ........                                                                     │
00:00:30 v #4287 > > │ ................>////////////////////////////////////<<<<<.................. │
00:00:30 v #4288 > > │ ...////////////////<<<<<..............////////<<............................ │
00:00:30 v #4289 > > │ ........                                                                     │
00:00:30 v #4290 > > │ ................>////////////////////////////////////<<<<<.................. │
00:00:30 v #4291 > > │ ..>////////////////<<<<..................................................... │
00:00:30 v #4292 > > │ ........                                                                     │
00:00:30 v #4293 > > │ ................>////////////////////////////////////<<<<<.................. │
00:00:30 v #4294 > > │ ../////////////////<<<<..................................................... │
00:00:30 v #4295 > > │ ........                                                                     │
00:00:30 v #4296 > > │ ................>////////////////////////////////////<<<<................... │
00:00:30 v #4297 > > │ ................///<........................................................ │
00:00:30 v #4298 > > │ ........                                                                     │
00:00:30 v #4299 > > │ ................>////////////////////////////////////<<<<................... │
00:00:30 v #4300 > > │ ............................................................................ │
00:00:30 v #4301 > > │ ........                                                                     │
00:00:30 v #4302 > > │ ................////////////////////////////////////<<<<<................... │
00:00:30 v #4303 > > │ ............................................................................ │
00:00:30 v #4304 > > │ ........                                                                     │
00:00:30 v #4305 > > │ ................////////////////////////////////////<<<<.................... │
00:00:30 v #4306 > > │ ............................................................................ │
00:00:30 v #4307 > > │ ........                                                                     │
00:00:30 v #4308 > > │ .................///////////////////////////////////<<<..................... │
00:00:30 v #4309 > > │ ............................................................................ │
00:00:30 v #4310 > > │ ........                                                                     │
00:00:30 v #4311 > > │ .............................///////////////////////<<...................... │
00:00:30 v #4312 > > │ ............................................................................ │
00:00:30 v #4313 > > │ ........                                                                     │
00:00:30 v #4314 > > │ .........................................///////////<....................... │
00:00:30 v #4315 > > │ ............................................................................ │
00:00:30 v #4316 > > │ ........                                                                     │
00:00:30 v #4317 > > │ ............................................................................ │
00:00:30 v #4318 > > │ ............................................................................ │
00:00:30 v #4319 > > │ ........                                                                     │
00:00:30 v #4320 > > │ ............................................................................ │
00:00:30 v #4321 > > │ ............................................................................ │
00:00:30 v #4322 > > │ ........                                                                     │
00:00:30 v #4323 > > │ ............................................................................ │
00:00:30 v #4324 > > │ ............................................................................ │
00:00:30 v #4325 > > │ ........                                                                     │
00:00:30 v #4326 > > │ ............................................................................ │
00:00:30 v #4327 > > │ ............................................................................ │
00:00:30 v #4328 > > │ ........                                                                     │
00:00:30 v #4329 > > │ ............................................................................ │
00:00:30 v #4330 > > │ ............................................................................ │
00:00:30 v #4331 > > │ ........                                                                     │
00:00:30 v #4332 > > │ ............................................................................ │
00:00:30 v #4333 > > │ ............................................................................ │
00:00:30 v #4334 > > │ ........                                                                     │
00:00:30 v #4335 > > │ ............................................................................ │
00:00:30 v #4336 > > │ ............................................................................ │
00:00:30 v #4337 > > │ ........                                                                     │
00:00:30 v #4338 > > │ ............................................................................ │
00:00:30 v #4339 > > │ ............................................................................ │
00:00:30 v #4340 > > │ ........                                                                     │
00:00:30 v #4341 > > │ ............................................................................ │
00:00:30 v #4342 > > │ ............................................................................ │
00:00:30 v #4343 > > │ ........                                                                     │
00:00:30 v #4344 > > │ ............................................................................ │
00:00:30 v #4345 > > │ ............................................................................ │
00:00:30 v #4346 > > │ ........                                                                     │
00:00:30 v #4347 > > │                                                                              │
00:00:30 v #4348 > > │ ............................................................................ │
00:00:30 v #4349 > > │ ............................................................................ │
00:00:30 v #4350 > > │ ........                                                                     │
00:00:30 v #4351 > > │ ............................................................................ │
00:00:30 v #4352 > > │ ............................................................................ │
00:00:30 v #4353 > > │ ........                                                                     │
00:00:30 v #4354 > > │ ............................................................................ │
00:00:30 v #4355 > > │ ............................................................................ │
00:00:30 v #4356 > > │ ........                                                                     │
00:00:30 v #4357 > > │ ............................................................................ │
00:00:30 v #4358 > > │ ............................................................................ │
00:00:30 v #4359 > > │ ........                                                                     │
00:00:30 v #4360 > > │ ............................................................................ │
00:00:30 v #4361 > > │ ............................................................................ │
00:00:30 v #4362 > > │ ........                                                                     │
00:00:30 v #4363 > > │ ............................................................................ │
00:00:30 v #4364 > > │ ............................................................................ │
00:00:30 v #4365 > > │ ........                                                                     │
00:00:30 v #4366 > > │ ............................................................................ │
00:00:30 v #4367 > > │ ............................................................................ │
00:00:30 v #4368 > > │ ........                                                                     │
00:00:30 v #4369 > > │ ............................................................................ │
00:00:30 v #4370 > > │ ............................................................................ │
00:00:30 v #4371 > > │ ........                                                                     │
00:00:30 v #4372 > > │ ............................................................................ │
00:00:30 v #4373 > > │ ............................................................................ │
00:00:30 v #4374 > > │ ........                                                                     │
00:00:30 v #4375 > > │ ............................................................................ │
00:00:30 v #4376 > > │ ............................................................................ │
00:00:30 v #4377 > > │ ........                                                                     │
00:00:30 v #4378 > > │ ............................................................................ │
00:00:30 v #4379 > > │ ............................................................................ │
00:00:30 v #4380 > > │ ........                                                                     │
00:00:30 v #4381 > > │ ............................................................................ │
00:00:30 v #4382 > > │ ............................................................................ │
00:00:30 v #4383 > > │ ........                                                                     │
00:00:30 v #4384 > > │ .................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<.................... │
00:00:30 v #4385 > > │ ............................................................................ │
00:00:30 v #4386 > > │ ........                                                                     │
00:00:30 v #4387 > > │ ................;//////////////////////////////////////<<................... │
00:00:30 v #4388 > > │ ............................................................................ │
00:00:30 v #4389 > > │ ........                                                                     │
00:00:30 v #4390 > > │ ................>//////////////////////////////////////<<<.................. │
00:00:30 v #4391 > > │ ............................................................................ │
00:00:30 v #4392 > > │ ........                                                                     │
00:00:30 v #4393 > > │ ................>//////////////////////////////////////<<<.................. │
00:00:30 v #4394 > > │ ............................................................................ │
00:00:30 v #4395 > > │ ........                                                                     │
00:00:30 v #4396 > > │ ................>//////////////////////////////////////<<<.................. │
00:00:30 v #4397 > > │ ............................................................................ │
00:00:30 v #4398 > > │ ........                                                                     │
00:00:30 v #4399 > > │ ................>//////////////////////////////////////<<<.................. │
00:00:30 v #4400 > > │ ...;;;;;;;;;;;;;;;;;<<<..................................................... │
00:00:30 v #4401 > > │ ........                                                                     │
00:00:30 v #4402 > > │ .................//////////////////////////////////////<<<.................. │
00:00:30 v #4403 > > │ .../////////////////<<<<.................................................... │
00:00:30 v #4404 > > │ ........                                                                     │
00:00:30 v #4405 > > │ .................//////////////////////////////////////<<<.................. │
00:00:30 v #4406 > > │ .../////////////////<<<<...............;;;;;;;;;<........................... │
00:00:30 v #4407 > > │ ........                                                                     │
00:00:30 v #4408 > > │ .................//////////////////////////////////////<<<.................. │
00:00:30 v #4409 > > │ .../////////////////<<<<..............;;;;;;;;;<<........................... │
00:00:30 v #4410 > > │ ........                                                                     │
00:00:30 v #4411 > > │ .................//////////////////////////////////////<<<.................. │
00:00:30 v #4412 > > │ .../////////////////<<<<..............>////////<<........................... │
00:00:30 v #4413 > > │ ........                                                                     │
00:00:30 v #4414 > > │ ................./////////////////////////////////////<<<<.................. │
00:00:30 v #4415 > > │ .../////////////////<<<<..............>////////<<........................... │
00:00:30 v #4416 > > │ ........                                                                     │
00:00:30 v #4417 > > │ ................./////////////////////////////////////<<<<.................. │
00:00:30 v #4418 > > │ .../////////////////<<<<..............>////////<<........................... │
00:00:30 v #4419 > > │ ........                                                                     │
00:00:30 v #4420 > > │ ................./////////////////////////////////////<<<<.................. │
00:00:30 v #4421 > > │ .../////////////////<<<<..............////////<<............................ │
00:00:30 v #4422 > > │ ........                                                                     │
00:00:30 v #4423 > > │ ................./////////////////////////////////////<<<<.................. │
00:00:30 v #4424 > > │ .../////////////////<<<<.................................................... │
00:00:30 v #4425 > > │ ........                                                                     │
00:00:30 v #4426 > > │ ................./////////////////////////////////////<<<<.................. │
00:00:30 v #4427 > > │ ...>////////////////<<...................................................... │
00:00:30 v #4428 > > │ ........                                                                     │
00:00:30 v #4429 > > │ ................./////////////////////////////////////<<<................... │
00:00:30 v #4430 > > │ ............................................................................ │
00:00:30 v #4431 > > │ ........                                                                     │
00:00:30 v #4432 > > │ ................./////////////////////////////////////<<<................... │
00:00:30 v #4433 > > │ ............................................................................ │
00:00:30 v #4434 > > │ ........                                                                     │
00:00:30 v #4435 > > │ ................./////////////////////////////////////<<<................... │
00:00:30 v #4436 > > │ ............................................................................ │
00:00:30 v #4437 > > │ ........                                                                     │
00:00:30 v #4438 > > │ ................./////////////////////////////////////<<<................... │
00:00:30 v #4439 > > │ ............................................................................ │
00:00:30 v #4440 > > │ ........                                                                     │
00:00:30 v #4441 > > │ .................>////////////////////////////////////<<.................... │
00:00:30 v #4442 > > │ ............................................................................ │
00:00:30 v #4443 > > │ ........                                                                     │
00:00:30 v #4444 > > │ ..........................////////////////////////////<<.................... │
00:00:30 v #4445 > > │ ............................................................................ │
00:00:30 v #4446 > > │ ........                                                                     │
00:00:30 v #4447 > > │ ................................................//////<..................... │
00:00:30 v #4448 > > │ ............................................................................ │
00:00:30 v #4449 > > │ ........                                                                     │
00:00:30 v #4450 > > │ ............................................................................ │
00:00:30 v #4451 > > │ ............................................................................ │
00:00:30 v #4452 > > │ ........                                                                     │
00:00:30 v #4453 > > │ ............................................................................ │
00:00:30 v #4454 > > │ ............................................................................ │
00:00:30 v #4455 > > │ ........                                                                     │
00:00:30 v #4456 > > │ ............................................................................ │
00:00:30 v #4457 > > │ ............................................................................ │
00:00:30 v #4458 > > │ ........                                                                     │
00:00:30 v #4459 > > │ ............................................................................ │
00:00:30 v #4460 > > │ ............................................................................ │
00:00:30 v #4461 > > │ ........                                                                     │
00:00:30 v #4462 > > │ ............................................................................ │
00:00:30 v #4463 > > │ ............................................................................ │
00:00:30 v #4464 > > │ ........                                                                     │
00:00:30 v #4465 > > │ ............................................................................ │
00:00:30 v #4466 > > │ ............................................................................ │
00:00:30 v #4467 > > │ ........                                                                     │
00:00:30 v #4468 > > │ ............................................................................ │
00:00:30 v #4469 > > │ ............................................................................ │
00:00:30 v #4470 > > │ ........                                                                     │
00:00:30 v #4471 > > │ ............................................................................ │
00:00:30 v #4472 > > │ ............................................................................ │
00:00:30 v #4473 > > │ ........                                                                     │
00:00:30 v #4474 > > │ ............................................................................ │
00:00:30 v #4475 > > │ ............................................................................ │
00:00:30 v #4476 > > │ ........                                                                     │
00:00:30 v #4477 > > │ ............................................................................ │
00:00:30 v #4478 > > │ ............................................................................ │
00:00:30 v #4479 > > │ ........                                                                     │
00:00:30 v #4480 > > │                                                                              │
00:00:30 v #4481 > > │ ............................................................................ │
00:00:30 v #4482 > > │ ............................................................................ │
00:00:30 v #4483 > > │ ........                                                                     │
00:00:30 v #4484 > > │ ............................................................................ │
00:00:30 v #4485 > > │ ............................................................................ │
00:00:30 v #4486 > > │ ........                                                                     │
00:00:30 v #4487 > > │ ............................................................................ │
00:00:30 v #4488 > > │ ............................................................................ │
00:00:30 v #4489 > > │ ........                                                                     │
00:00:30 v #4490 > > │ ............................................................................ │
00:00:30 v #4491 > > │ ............................................................................ │
00:00:30 v #4492 > > │ ........                                                                     │
00:00:30 v #4493 > > │ ............................................................................ │
00:00:30 v #4494 > > │ ............................................................................ │
00:00:30 v #4495 > > │ ........                                                                     │
00:00:30 v #4496 > > │ ............................................................................ │
00:00:30 v #4497 > > │ ............................................................................ │
00:00:30 v #4498 > > │ ........                                                                     │
00:00:30 v #4499 > > │ ............................................................................ │
00:00:30 v #4500 > > │ ............................................................................ │
00:00:30 v #4501 > > │ ........                                                                     │
00:00:30 v #4502 > > │ ............................................................................ │
00:00:30 v #4503 > > │ ............................................................................ │
00:00:30 v #4504 > > │ ........                                                                     │
00:00:30 v #4505 > > │ ............................................................................ │
00:00:30 v #4506 > > │ ............................................................................ │
00:00:30 v #4507 > > │ ........                                                                     │
00:00:30 v #4508 > > │ ............................................................................ │
00:00:30 v #4509 > > │ ............................................................................ │
00:00:30 v #4510 > > │ ........                                                                     │
00:00:30 v #4511 > > │ ............................................................................ │
00:00:30 v #4512 > > │ ............................................................................ │
00:00:30 v #4513 > > │ ........                                                                     │
00:00:30 v #4514 > > │ ..............................................;;;;;;;;;<.................... │
00:00:30 v #4515 > > │ ............................................................................ │
00:00:30 v #4516 > > │ ........                                                                     │
00:00:30 v #4517 > > │ .........................;;;;;;;;;;;;;;;;;;;;;/////////<.................... │
00:00:30 v #4518 > > │ ............................................................................ │
00:00:30 v #4519 > > │ ........                                                                     │
00:00:30 v #4520 > > │ ................;;;;;;;;;//////////////////////////////<.................... │
00:00:30 v #4521 > > │ ............................................................................ │
00:00:30 v #4522 > > │ ........                                                                     │
00:00:30 v #4523 > > │ ................///////////////////////////////////////<.................... │
00:00:30 v #4524 > > │ ............................................................................ │
00:00:30 v #4525 > > │ ........                                                                     │
00:00:30 v #4526 > > │ ................>//////////////////////////////////////<<................... │
00:00:30 v #4527 > > │ ............................................................................ │
00:00:30 v #4528 > > │ ........                                                                     │
00:00:30 v #4529 > > │ ................>//////////////////////////////////////<<................... │
00:00:30 v #4530 > > │ ............................................................................ │
00:00:30 v #4531 > > │ ........                                                                     │
00:00:30 v #4532 > > │ ................>//////////////////////////////////////<<................... │
00:00:30 v #4533 > > │ ......;;;;;;;;;;;;;;<<<..................................................... │
00:00:30 v #4534 > > │ ........                                                                     │
00:00:30 v #4535 > > │ ................>//////////////////////////////////////<<................... │
00:00:30 v #4536 > > │ ...;;;//////////////<<<..................................................... │
00:00:30 v #4537 > > │ ........                                                                     │
00:00:30 v #4538 > > │ .................//////////////////////////////////////<<................... │
00:00:30 v #4539 > > │ .../////////////////<<<....................;;;;<<........................... │
00:00:30 v #4540 > > │ ........                                                                     │
00:00:30 v #4541 > > │ .................//////////////////////////////////////<<................... │
00:00:30 v #4542 > > │ .../////////////////<<<...............;;;;;////<<........................... │
00:00:30 v #4543 > > │ ........                                                                     │
00:00:30 v #4544 > > │ .................//////////////////////////////////////<<................... │
00:00:30 v #4545 > > │ ...>////////////////<<<...............>////////<<........................... │
00:00:30 v #4546 > > │ ........                                                                     │
00:00:30 v #4547 > > │ .................>//////////////////////////////////////<................... │
00:00:30 v #4548 > > │ ...>////////////////<<<................////////<<........................... │
00:00:30 v #4549 > > │ ........                                                                     │
00:00:30 v #4550 > > │ .................>//////////////////////////////////////<................... │
00:00:30 v #4551 > > │ ...>/////////////////<<<...............////////<<........................... │
00:00:30 v #4552 > > │ ........                                                                     │
00:00:30 v #4553 > > │ .................>//////////////////////////////////////<................... │
00:00:30 v #4554 > > │ ...>/////////////////<<<.............../////////............................ │
00:00:30 v #4555 > > │ ........                                                                     │
00:00:30 v #4556 > > │ .................>//////////////////////////////////////<................... │
00:00:30 v #4557 > > │ ..../////////////////<<<.................................................... │
00:00:30 v #4558 > > │ ........                                                                     │
00:00:30 v #4559 > > │ ..................//////////////////////////////////////<................... │
00:00:30 v #4560 > > │ ..../////////////////<<..................................................... │
00:00:30 v #4561 > > │ ........                                                                     │
00:00:30 v #4562 > > │ ..................//////////////////////////////////////<<.................. │
00:00:30 v #4563 > > │ ............................................................................ │
00:00:30 v #4564 > > │ ........                                                                     │
00:00:30 v #4565 > > │ ..................//////////////////////////////////////<<.................. │
00:00:30 v #4566 > > │ ............................................................................ │
00:00:30 v #4567 > > │ ........                                                                     │
00:00:30 v #4568 > > │ ..................//////////////////////////////////////<<.................. │
00:00:30 v #4569 > > │ ............................................................................ │
00:00:30 v #4570 > > │ ........                                                                     │
00:00:30 v #4571 > > │ ..................>/////////////////////////////////////<<.................. │
00:00:30 v #4572 > > │ ............................................................................ │
00:00:30 v #4573 > > │ ........                                                                     │
00:00:30 v #4574 > > │ ..................>/////////////////////////////////////<................... │
00:00:30 v #4575 > > │ ............................................................................ │
00:00:30 v #4576 > > │ ........                                                                     │
00:00:30 v #4577 > > │ ..................//////////////////////////////////////<................... │
00:00:30 v #4578 > > │ ............................................................................ │
00:00:30 v #4579 > > │ ........                                                                     │
00:00:30 v #4580 > > │ ............................................................................ │
00:00:30 v #4581 > > │ ............................................................................ │
00:00:30 v #4582 > > │ ........                                                                     │
00:00:30 v #4583 > > │ ............................................................................ │
00:00:30 v #4584 > > │ ............................................................................ │
00:00:30 v #4585 > > │ ........                                                                     │
00:00:30 v #4586 > > │ ............................................................................ │
00:00:30 v #4587 > > │ ............................................................................ │
00:00:30 v #4588 > > │ ........                                                                     │
00:00:30 v #4589 > > │ ............................................................................ │
00:00:30 v #4590 > > │ ............................................................................ │
00:00:30 v #4591 > > │ ........                                                                     │
00:00:30 v #4592 > > │ ............................................................................ │
00:00:30 v #4593 > > │ ............................................................................ │
00:00:30 v #4594 > > │ ........                                                                     │
00:00:30 v #4595 > > │ ............................................................................ │
00:00:30 v #4596 > > │ ............................................................................ │
00:00:30 v #4597 > > │ ........                                                                     │
00:00:30 v #4598 > > │ ............................................................................ │
00:00:30 v #4599 > > │ ............................................................................ │
00:00:30 v #4600 > > │ ........                                                                     │
00:00:30 v #4601 > > │ ............................................................................ │
00:00:30 v #4602 > > │ ............................................................................ │
00:00:30 v #4603 > > │ ........                                                                     │
00:00:30 v #4604 > > │ ............................................................................ │
00:00:30 v #4605 > > │ ............................................................................ │
00:00:30 v #4606 > > │ ........                                                                     │
00:00:30 v #4607 > > │ ............................................................................ │
00:00:30 v #4608 > > │ ............................................................................ │
00:00:30 v #4609 > > │ ........                                                                     │
00:00:30 v #4610 > > │ ............................................................................ │
00:00:30 v #4611 > > │ ............................................................................ │
00:00:30 v #4612 > > │ ........                                                                     │
00:00:30 v #4613 > > │                                                                              │
00:00:30 v #4614 > > │ ............................................................................ │
00:00:30 v #4615 > > │ ............................................................................ │
00:00:30 v #4616 > > │ ........                                                                     │
00:00:30 v #4617 > > │ ............................................................................ │
00:00:30 v #4618 > > │ ............................................................................ │
00:00:30 v #4619 > > │ ........                                                                     │
00:00:30 v #4620 > > │ ............................................................................ │
00:00:30 v #4621 > > │ ............................................................................ │
00:00:30 v #4622 > > │ ........                                                                     │
00:00:30 v #4623 > > │ ............................................................................ │
00:00:30 v #4624 > > │ ............................................................................ │
00:00:30 v #4625 > > │ ........                                                                     │
00:00:30 v #4626 > > │ ............................................................................ │
00:00:30 v #4627 > > │ ............................................................................ │
00:00:30 v #4628 > > │ ........                                                                     │
00:00:30 v #4629 > > │ ............................................................................ │
00:00:30 v #4630 > > │ ............................................................................ │
00:00:30 v #4631 > > │ ........                                                                     │
00:00:30 v #4632 > > │ ............................................................................ │
00:00:30 v #4633 > > │ ............................................................................ │
00:00:30 v #4634 > > │ ........                                                                     │
00:00:30 v #4635 > > │ ............................................................................ │
00:00:30 v #4636 > > │ ............................................................................ │
00:00:30 v #4637 > > │ ........                                                                     │
00:00:30 v #4638 > > │ ............................................................................ │
00:00:30 v #4639 > > │ ............................................................................ │
00:00:30 v #4640 > > │ ........                                                                     │
00:00:30 v #4641 > > │ ............................................................................ │
00:00:30 v #4642 > > │ ............................................................................ │
00:00:30 v #4643 > > │ ........                                                                     │
00:00:30 v #4644 > > │ ......................................................<..................... │
00:00:30 v #4645 > > │ ............................................................................ │
00:00:30 v #4646 > > │ ........                                                                     │
00:00:30 v #4647 > > │ .........................................;;;;;;;;;;;;;<..................... │
00:00:30 v #4648 > > │ ............................................................................ │
00:00:30 v #4649 > > │ ........                                                                     │
00:00:30 v #4650 > > │ ...........................;;;;;;;;;;;;;;//////////////<.................... │
00:00:30 v #4651 > > │ ............................................................................ │
00:00:30 v #4652 > > │ ........                                                                     │
00:00:30 v #4653 > > │ ...............;;;;;;;;;;;;;///////////////////////////<.................... │
00:00:30 v #4654 > > │ ............................................................................ │
00:00:30 v #4655 > > │ ........                                                                     │
00:00:30 v #4656 > > │ ...............>///////////////////////////////////////<.................... │
00:00:30 v #4657 > > │ ............................................................................ │
00:00:30 v #4658 > > │ ........                                                                     │
00:00:30 v #4659 > > │ ................///////////////////////////////////////<.................... │
00:00:30 v #4660 > > │ ............................................................................ │
00:00:30 v #4661 > > │ ........                                                                     │
00:00:30 v #4662 > > │ ................///////////////////////////////////////<<................... │
00:00:30 v #4663 > > │ ............................................................................ │
00:00:30 v #4664 > > │ ........                                                                     │
00:00:30 v #4665 > > │ ................>///////////////////////////////////////<................... │
00:00:30 v #4666 > > │ ........;;;;;;;;;;;;<<...................................................... │
00:00:30 v #4667 > > │ ........                                                                     │
00:00:30 v #4668 > > │ ................>///////////////////////////////////////<................... │
00:00:30 v #4669 > > │ ...;;;;;////////////<<...................................................... │
00:00:30 v #4670 > > │ ........                                                                     │
00:00:30 v #4671 > > │ .................///////////////////////////////////////<................... │
00:00:30 v #4672 > > │ .../////////////////<<<....................;;;<<............................ │
00:00:30 v #4673 > > │ ........                                                                     │
00:00:30 v #4674 > > │ .................///////////////////////////////////////<................... │
00:00:30 v #4675 > > │ ...//////////////////<<...............;;;;;////<<........................... │
00:00:30 v #4676 > > │ ........                                                                     │
00:00:30 v #4677 > > │ .................>//////////////////////////////////////<<.................. │
00:00:30 v #4678 > > │ ...>/////////////////<<...............>////////<<........................... │
00:00:30 v #4679 > > │ ........                                                                     │
00:00:30 v #4680 > > │ .................>///////////////////////////////////////<.................. │
00:00:30 v #4681 > > │ ...>/////////////////<<................////////<<........................... │
00:00:30 v #4682 > > │ ........                                                                     │
00:00:30 v #4683 > > │ ..................///////////////////////////////////////<.................. │
00:00:30 v #4684 > > │ ..../////////////////<<................////////<<........................... │
00:00:30 v #4685 > > │ ........                                                                     │
00:00:30 v #4686 > > │ ..................///////////////////////////////////////<.................. │
00:00:30 v #4687 > > │ ..../////////////////<<<...............>////////............................ │
00:00:30 v #4688 > > │ ........                                                                     │
00:00:30 v #4689 > > │ ..................>//////////////////////////////////////<.................. │
00:00:30 v #4690 > > │ ....>/////////////////<<.................................................... │
00:00:30 v #4691 > > │ ........                                                                     │
00:00:30 v #4692 > > │ ..................>///////////////////////////////////////<................. │
00:00:30 v #4693 > > │ ....>/////////////////<..................................................... │
00:00:30 v #4694 > > │ ........                                                                     │
00:00:30 v #4695 > > │ ...................///////////////////////////////////////<................. │
00:00:30 v #4696 > > │ ............................................................................ │
00:00:30 v #4697 > > │ ........                                                                     │
00:00:30 v #4698 > > │ ...................///////////////////////////////////////<................. │
00:00:30 v #4699 > > │ ............................................................................ │
00:00:30 v #4700 > > │ ........                                                                     │
00:00:30 v #4701 > > │ ...................>//////////////////////////////////////<................. │
00:00:30 v #4702 > > │ ............................................................................ │
00:00:30 v #4703 > > │ ........                                                                     │
00:00:30 v #4704 > > │ ...................>//////////////////////////////////////<................. │
00:00:30 v #4705 > > │ ............................................................................ │
00:00:30 v #4706 > > │ ........                                                                     │
00:00:30 v #4707 > > │ ...................>///////////////////////////////////////<................ │
00:00:30 v #4708 > > │ ............................................................................ │
00:00:30 v #4709 > > │ ........                                                                     │
00:00:30 v #4710 > > │ ....................////////////////////////////............................ │
00:00:30 v #4711 > > │ ............................................................................ │
00:00:30 v #4712 > > │ ........                                                                     │
00:00:30 v #4713 > > │ ............................................................................ │
00:00:30 v #4714 > > │ ............................................................................ │
00:00:30 v #4715 > > │ ........                                                                     │
00:00:30 v #4716 > > │ ............................................................................ │
00:00:30 v #4717 > > │ ............................................................................ │
00:00:30 v #4718 > > │ ........                                                                     │
00:00:30 v #4719 > > │ ............................................................................ │
00:00:30 v #4720 > > │ ............................................................................ │
00:00:30 v #4721 > > │ ........                                                                     │
00:00:30 v #4722 > > │ ............................................................................ │
00:00:30 v #4723 > > │ ............................................................................ │
00:00:30 v #4724 > > │ ........                                                                     │
00:00:30 v #4725 > > │ ............................................................................ │
00:00:30 v #4726 > > │ ............................................................................ │
00:00:30 v #4727 > > │ ........                                                                     │
00:00:30 v #4728 > > │ ............................................................................ │
00:00:30 v #4729 > > │ ............................................................................ │
00:00:30 v #4730 > > │ ........                                                                     │
00:00:30 v #4731 > > │ ............................................................................ │
00:00:30 v #4732 > > │ ............................................................................ │
00:00:30 v #4733 > > │ ........                                                                     │
00:00:30 v #4734 > > │ ............................................................................ │
00:00:30 v #4735 > > │ ............................................................................ │
00:00:30 v #4736 > > │ ........                                                                     │
00:00:30 v #4737 > > │ ............................................................................ │
00:00:30 v #4738 > > │ ............................................................................ │
00:00:30 v #4739 > > │ ........                                                                     │
00:00:30 v #4740 > > │ ............................................................................ │
00:00:30 v #4741 > > │ ............................................................................ │
00:00:30 v #4742 > > │ ........                                                                     │
00:00:30 v #4743 > > │ ............................................................................ │
00:00:30 v #4744 > > │ ............................................................................ │
00:00:30 v #4745 > > │ ........                                                                     │
00:00:30 v #4746 > > │                                                                              │
00:00:30 v #4747 > > │ ............................................................................ │
00:00:30 v #4748 > > │ ............................................................................ │
00:00:30 v #4749 > > │ ........                                                                     │
00:00:30 v #4750 > > │ ............................................................................ │
00:00:30 v #4751 > > │ ............................................................................ │
00:00:30 v #4752 > > │ ........                                                                     │
00:00:30 v #4753 > > │ ............................................................................ │
00:00:30 v #4754 > > │ ............................................................................ │
00:00:30 v #4755 > > │ ........                                                                     │
00:00:30 v #4756 > > │ ............................................................................ │
00:00:30 v #4757 > > │ ............................................................................ │
00:00:30 v #4758 > > │ ........                                                                     │
00:00:30 v #4759 > > │ ............................................................................ │
00:00:30 v #4760 > > │ ............................................................................ │
00:00:30 v #4761 > > │ ........                                                                     │
00:00:30 v #4762 > > │ ............................................................................ │
00:00:30 v #4763 > > │ ............................................................................ │
00:00:30 v #4764 > > │ ........                                                                     │
00:00:30 v #4765 > > │ ............................................................................ │
00:00:30 v #4766 > > │ ............................................................................ │
00:00:30 v #4767 > > │ ........                                                                     │
00:00:30 v #4768 > > │ ............................................................................ │
00:00:30 v #4769 > > │ ............................................................................ │
00:00:30 v #4770 > > │ ........                                                                     │
00:00:30 v #4771 > > │ ............................................................................ │
00:00:30 v #4772 > > │ ............................................................................ │
00:00:30 v #4773 > > │ ........                                                                     │
00:00:30 v #4774 > > │ ............................................................................ │
00:00:30 v #4775 > > │ ............................................................................ │
00:00:30 v #4776 > > │ ........                                                                     │
00:00:30 v #4777 > > │ .................................................;;;;;<..................... │
00:00:30 v #4778 > > │ ............................................................................ │
00:00:30 v #4779 > > │ ........                                                                     │
00:00:30 v #4780 > > │ .......................................;;;;;;;;;;/////<..................... │
00:00:30 v #4781 > > │ ............................................................................ │
00:00:30 v #4782 > > │ ........                                                                     │
00:00:30 v #4783 > > │ .............................;;;;;;;;;;///////////////<<.................... │
00:00:30 v #4784 > > │ ............................................................................ │
00:00:30 v #4785 > > │ ........                                                                     │
00:00:30 v #4786 > > │ ...................;;;;;;;;;;//////////////////////////<.................... │
00:00:30 v #4787 > > │ ............................................................................ │
00:00:30 v #4788 > > │ ........                                                                     │
00:00:30 v #4789 > > │ ...............;;;;////////////////////////////////////<.................... │
00:00:30 v #4790 > > │ ............................................................................ │
00:00:30 v #4791 > > │ ........                                                                     │
00:00:30 v #4792 > > │ ...............>///////////////////////////////////////<<................... │
00:00:30 v #4793 > > │ ............................................................................ │
00:00:30 v #4794 > > │ ........                                                                     │
00:00:30 v #4795 > > │ ...............>////////////////////////////////////////<................... │
00:00:30 v #4796 > > │ ....................<....................................................... │
00:00:30 v #4797 > > │ ........                                                                     │
00:00:30 v #4798 > > │ ................////////////////////////////////////////<................... │
00:00:30 v #4799 > > │ .........;;;;;;;;;;;<....................................................... │
00:00:30 v #4800 > > │ ........                                                                     │
00:00:30 v #4801 > > │ ................>///////////////////////////////////////<<.................. │
00:00:30 v #4802 > > │ ..;;;;;;;///////////<<...................................................... │
00:00:30 v #4803 > > │ ........                                                                     │
00:00:30 v #4804 > > │ .................////////////////////////////////////////<.................. │
00:00:30 v #4805 > > │ .../////////////////<<.....................;;;<<............................ │
00:00:30 v #4806 > > │ ........                                                                     │
00:00:30 v #4807 > > │ .................>///////////////////////////////////////<.................. │
00:00:30 v #4808 > > │ ...//////////////////<................;;;;;////<............................ │
00:00:30 v #4809 > > │ ........                                                                     │
00:00:30 v #4810 > > │ .................>///////////////////////////////////////<<................. │
00:00:30 v #4811 > > │ ...>/////////////////<<...............>////////<<........................... │
00:00:30 v #4812 > > │ ........                                                                     │
00:00:30 v #4813 > > │ ..................////////////////////////////////////////<................. │
00:00:30 v #4814 > > │ ..../////////////////<<................////////<<........................... │
00:00:30 v #4815 > > │ ........                                                                     │
00:00:30 v #4816 > > │ ..................>///////////////////////////////////////<................. │
00:00:30 v #4817 > > │ ....//////////////////<................>////////<........................... │
00:00:30 v #4818 > > │ ........                                                                     │
00:00:30 v #4819 > > │ ..................>///////////////////////////////////////<<................ │
00:00:30 v #4820 > > │ ....>/////////////////<<................//////.............................. │
00:00:30 v #4821 > > │ ........                                                                     │
00:00:30 v #4822 > > │ ...................////////////////////////////////////////<................ │
00:00:30 v #4823 > > │ .....//////////////////<.................................................... │
00:00:30 v #4824 > > │ ........                                                                     │
00:00:30 v #4825 > > │ ...................>///////////////////////////////////////<................ │
00:00:30 v #4826 > > │ .....>///////////////....................................................... │
00:00:30 v #4827 > > │ ........                                                                     │
00:00:30 v #4828 > > │ ...................>///////////////////////////////////////<<............... │
00:00:30 v #4829 > > │ .....///.................................................................... │
00:00:30 v #4830 > > │ ........                                                                     │
00:00:30 v #4831 > > │ ....................////////////////////////////////////////<............... │
00:00:30 v #4832 > > │ ............................................................................ │
00:00:30 v #4833 > > │ ........                                                                     │
00:00:30 v #4834 > > │ ....................>///////////////////////////////////////<............... │
00:00:30 v #4835 > > │ ............................................................................ │
00:00:30 v #4836 > > │ ........                                                                     │
00:00:30 v #4837 > > │ ....................>///////////////////////////////////////<<.............. │
00:00:30 v #4838 > > │ ............................................................................ │
00:00:30 v #4839 > > │ ........                                                                     │
00:00:30 v #4840 > > │ ...................../////////////////////////////////////.................. │
00:00:30 v #4841 > > │ ............................................................................ │
00:00:30 v #4842 > > │ ........                                                                     │
00:00:30 v #4843 > > │ .....................>/////////////////////................................. │
00:00:30 v #4844 > > │ ............................................................................ │
00:00:30 v #4845 > > │ ........                                                                     │
00:00:30 v #4846 > > │ ......................///////............................................... │
00:00:30 v #4847 > > │ ............................................................................ │
00:00:30 v #4848 > > │ ........                                                                     │
00:00:30 v #4849 > > │ ............................................................................ │
00:00:30 v #4850 > > │ ............................................................................ │
00:00:30 v #4851 > > │ ........                                                                     │
00:00:30 v #4852 > > │ ............................................................................ │
00:00:30 v #4853 > > │ ............................................................................ │
00:00:30 v #4854 > > │ ........                                                                     │
00:00:30 v #4855 > > │ ............................................................................ │
00:00:30 v #4856 > > │ ............................................................................ │
00:00:30 v #4857 > > │ ........                                                                     │
00:00:30 v #4858 > > │ ............................................................................ │
00:00:30 v #4859 > > │ ............................................................................ │
00:00:30 v #4860 > > │ ........                                                                     │
00:00:30 v #4861 > > │ ............................................................................ │
00:00:30 v #4862 > > │ ............................................................................ │
00:00:30 v #4863 > > │ ........                                                                     │
00:00:30 v #4864 > > │ ............................................................................ │
00:00:30 v #4865 > > │ ............................................................................ │
00:00:30 v #4866 > > │ ........                                                                     │
00:00:30 v #4867 > > │ ............................................................................ │
00:00:30 v #4868 > > │ ............................................................................ │
00:00:30 v #4869 > > │ ........                                                                     │
00:00:30 v #4870 > > │ ............................................................................ │
00:00:30 v #4871 > > │ ............................................................................ │
00:00:30 v #4872 > > │ ........                                                                     │
00:00:30 v #4873 > > │ ............................................................................ │
00:00:30 v #4874 > > │ ............................................................................ │
00:00:30 v #4875 > > │ ........                                                                     │
00:00:30 v #4876 > > │ ............................................................................ │
00:00:30 v #4877 > > │ ............................................................................ │
00:00:30 v #4878 > > │ ........                                                                     │
00:00:30 v #4879 > > │                                                                              │
00:00:30 v #4880 > > │ ............................................................................ │
00:00:30 v #4881 > > │ ............................................................................ │
00:00:30 v #4882 > > │ ........                                                                     │
00:00:30 v #4883 > > │ ............................................................................ │
00:00:30 v #4884 > > │ ............................................................................ │
00:00:30 v #4885 > > │ ........                                                                     │
00:00:30 v #4886 > > │ ............................................................................ │
00:00:30 v #4887 > > │ ............................................................................ │
00:00:30 v #4888 > > │ ........                                                                     │
00:00:30 v #4889 > > │ ............................................................................ │
00:00:30 v #4890 > > │ ............................................................................ │
00:00:30 v #4891 > > │ ........                                                                     │
00:00:30 v #4892 > > │ ............................................................................ │
00:00:30 v #4893 > > │ ............................................................................ │
00:00:30 v #4894 > > │ ........                                                                     │
00:00:30 v #4895 > > │ ............................................................................ │
00:00:30 v #4896 > > │ ............................................................................ │
00:00:30 v #4897 > > │ ........                                                                     │
00:00:30 v #4898 > > │ ............................................................................ │
00:00:30 v #4899 > > │ ............................................................................ │
00:00:30 v #4900 > > │ ........                                                                     │
00:00:30 v #4901 > > │ ............................................................................ │
00:00:30 v #4902 > > │ ............................................................................ │
00:00:30 v #4903 > > │ ........                                                                     │
00:00:30 v #4904 > > │ ............................................................................ │
00:00:30 v #4905 > > │ ............................................................................ │
00:00:30 v #4906 > > │ ........                                                                     │
00:00:30 v #4907 > > │ .....................................................<...................... │
00:00:30 v #4908 > > │ ............................................................................ │
00:00:30 v #4909 > > │ ........                                                                     │
00:00:30 v #4910 > > │ ..............................................;;;;;;;<<..................... │
00:00:30 v #4911 > > │ ............................................................................ │
00:00:30 v #4912 > > │ ........                                                                     │
00:00:30 v #4913 > > │ .....................................;;;;;;;;;////////<..................... │
00:00:30 v #4914 > > │ ............................................................................ │
00:00:30 v #4915 > > │ ........                                                                     │
00:00:30 v #4916 > > │ .............................;;;;;;;;;////////////////<<.................... │
00:00:30 v #4917 > > │ ............................................................................ │
00:00:30 v #4918 > > │ ........                                                                     │
00:00:30 v #4919 > > │ ......................;;;;;;;//////////////////////////<.................... │
00:00:30 v #4920 > > │ ............................................................................ │
00:00:30 v #4921 > > │ ........                                                                     │
00:00:30 v #4922 > > │ ...............;;;;;;;/////////////////////////////////<.................... │
00:00:30 v #4923 > > │ ............................................................................ │
00:00:30 v #4924 > > │ ........                                                                     │
00:00:30 v #4925 > > │ .............../////////////////////////////////////////<................... │
00:00:30 v #4926 > > │ ............................................................................ │
00:00:30 v #4927 > > │ ........                                                                     │
00:00:30 v #4928 > > │ ...............>////////////////////////////////////////<................... │
00:00:30 v #4929 > > │ .................;;;<....................................................... │
00:00:30 v #4930 > > │ ........                                                                     │
00:00:30 v #4931 > > │ ................/////////////////////////////////////////<.................. │
00:00:30 v #4932 > > │ .........;;;;;;;;///<....................................................... │
00:00:30 v #4933 > > │ ........                                                                     │
00:00:30 v #4934 > > │ ................>////////////////////////////////////////<.................. │
00:00:30 v #4935 > > │ ..;;;;;;;///////////<<...................................................... │
00:00:30 v #4936 > > │ ........                                                                     │
00:00:30 v #4937 > > │ ................./////////////////////////////////////////<................. │
00:00:30 v #4938 > > │ ..>//////////////////<.....................;;;<<............................ │
00:00:30 v #4939 > > │ ........                                                                     │
00:00:30 v #4940 > > │ .................>////////////////////////////////////////<................. │
00:00:30 v #4941 > > │ ...//////////////////<<...............;;;;;////<............................ │
00:00:30 v #4942 > > │ ........                                                                     │
00:00:30 v #4943 > > │ ................../////////////////////////////////////////<................ │
00:00:30 v #4944 > > │ ...>//////////////////<...............>////////<<........................... │
00:00:30 v #4945 > > │ ........                                                                     │
00:00:30 v #4946 > > │ ..................>////////////////////////////////////////<................ │
00:00:30 v #4947 > > │ ....//////////////////<................/////////<........................... │
00:00:30 v #4948 > > │ ........                                                                     │
00:00:30 v #4949 > > │ ..................>////////////////////////////////////////<<............... │
00:00:30 v #4950 > > │ ....>//////////////////<...............>////////<........................... │
00:00:30 v #4951 > > │ ........                                                                     │
00:00:30 v #4952 > > │ ...................>////////////////////////////////////////<............... │
00:00:30 v #4953 > > │ .....//////////////////<................/////=.............................. │
00:00:30 v #4954 > > │ ........                                                                     │
00:00:30 v #4955 > > │ ...................>////////////////////////////////////////<<.............. │
00:00:30 v #4956 > > │ .....>/////////////////<<................................................... │
00:00:30 v #4957 > > │ ........                                                                     │
00:00:30 v #4958 > > │ ....................>////////////////////////////////////////<.............. │
00:00:30 v #4959 > > │ ....../////////////......................................................... │
00:00:30 v #4960 > > │ ........                                                                     │
00:00:30 v #4961 > > │ ....................>////////////////////////////////////////<<............. │
00:00:30 v #4962 > > │ ......>///.................................................................. │
00:00:30 v #4963 > > │ ........                                                                     │
00:00:30 v #4964 > > │ ...................../////////////////////////////////////////<............. │
00:00:30 v #4965 > > │ ............................................................................ │
00:00:30 v #4966 > > │ ........                                                                     │
00:00:30 v #4967 > > │ .....................>////////////////////////////////////////<............. │
00:00:30 v #4968 > > │ ............................................................................ │
00:00:30 v #4969 > > │ ........                                                                     │
00:00:30 v #4970 > > │ ......................///////////////////////////////////////............... │
00:00:30 v #4971 > > │ ............................................................................ │
00:00:30 v #4972 > > │ ........                                                                     │
00:00:30 v #4973 > > │ ......................>/////////////////////////////........................ │
00:00:30 v #4974 > > │ ............................................................................ │
00:00:30 v #4975 > > │ ........                                                                     │
00:00:30 v #4976 > > │ .......................////////////////////................................. │
00:00:30 v #4977 > > │ ............................................................................ │
00:00:30 v #4978 > > │ ........                                                                     │
00:00:30 v #4979 > > │ .......................>//////////.......................................... │
00:00:30 v #4980 > > │ ............................................................................ │
00:00:30 v #4981 > > │ ........                                                                     │
00:00:30 v #4982 > > │ ............................................................................ │
00:00:30 v #4983 > > │ ............................................................................ │
00:00:30 v #4984 > > │ ........                                                                     │
00:00:30 v #4985 > > │ ............................................................................ │
00:00:30 v #4986 > > │ ............................................................................ │
00:00:30 v #4987 > > │ ........                                                                     │
00:00:30 v #4988 > > │ ............................................................................ │
00:00:30 v #4989 > > │ ............................................................................ │
00:00:30 v #4990 > > │ ........                                                                     │
00:00:30 v #4991 > > │ ............................................................................ │
00:00:30 v #4992 > > │ ............................................................................ │
00:00:30 v #4993 > > │ ........                                                                     │
00:00:30 v #4994 > > │ ............................................................................ │
00:00:30 v #4995 > > │ ............................................................................ │
00:00:30 v #4996 > > │ ........                                                                     │
00:00:30 v #4997 > > │ ............................................................................ │
00:00:30 v #4998 > > │ ............................................................................ │
00:00:30 v #4999 > > │ ........                                                                     │
00:00:30 v #5000 > > │ ............................................................................ │
00:00:30 v #5001 > > │ ............................................................................ │
00:00:30 v #5002 > > │ ........                                                                     │
00:00:30 v #5003 > > │ ............................................................................ │
00:00:30 v #5004 > > │ ............................................................................ │
00:00:30 v #5005 > > │ ........                                                                     │
00:00:30 v #5006 > > │ ............................................................................ │
00:00:30 v #5007 > > │ ............................................................................ │
00:00:30 v #5008 > > │ ........                                                                     │
00:00:30 v #5009 > > │ ............................................................................ │
00:00:30 v #5010 > > │ ............................................................................ │
00:00:30 v #5011 > > │ ........                                                                     │
00:00:30 v #5012 > > │                                                                              │
00:00:30 v #5013 > > │ ............................................................................ │
00:00:30 v #5014 > > │ ............................................................................ │
00:00:30 v #5015 > > │ ........                                                                     │
00:00:30 v #5016 > > │ ............................................................................ │
00:00:30 v #5017 > > │ ............................................................................ │
00:00:30 v #5018 > > │ ........                                                                     │
00:00:30 v #5019 > > │ ............................................................................ │
00:00:30 v #5020 > > │ ............................................................................ │
00:00:30 v #5021 > > │ ........                                                                     │
00:00:30 v #5022 > > │ ............................................................................ │
00:00:30 v #5023 > > │ ............................................................................ │
00:00:30 v #5024 > > │ ........                                                                     │
00:00:30 v #5025 > > │ ............................................................................ │
00:00:30 v #5026 > > │ ............................................................................ │
00:00:30 v #5027 > > │ ........                                                                     │
00:00:30 v #5028 > > │ ............................................................................ │
00:00:30 v #5029 > > │ ............................................................................ │
00:00:30 v #5030 > > │ ........                                                                     │
00:00:30 v #5031 > > │ ............................................................................ │
00:00:30 v #5032 > > │ ............................................................................ │
00:00:30 v #5033 > > │ ........                                                                     │
00:00:30 v #5034 > > │ ............................................................................ │
00:00:30 v #5035 > > │ ............................................................................ │
00:00:30 v #5036 > > │ ........                                                                     │
00:00:30 v #5037 > > │ ............................................................................ │
00:00:30 v #5038 > > │ ............................................................................ │
00:00:30 v #5039 > > │ ........                                                                     │
00:00:30 v #5040 > > │ ..................................................;;;<...................... │
00:00:30 v #5041 > > │ ............................................................................ │
00:00:30 v #5042 > > │ ........                                                                     │
00:00:30 v #5043 > > │ ............................................;;;;;;///<...................... │
00:00:30 v #5044 > > │ ............................................................................ │
00:00:30 v #5045 > > │ ........                                                                     │
00:00:30 v #5046 > > │ .....................................;;;;;;;/////////<<..................... │
00:00:30 v #5047 > > │ ............................................................................ │
00:00:30 v #5048 > > │ ........                                                                     │
00:00:30 v #5049 > > │ ..............................;;;;;;;/////////////////<<.................... │
00:00:30 v #5050 > > │ ............................................................................ │
00:00:30 v #5051 > > │ ........                                                                     │
00:00:30 v #5052 > > │ .......................;;;;;;;/////////////////////////<.................... │
00:00:30 v #5053 > > │ ............................................................................ │
00:00:30 v #5054 > > │ ........                                                                     │
00:00:30 v #5055 > > │ .................;;;;;;;///////////////////////////////<<................... │
00:00:30 v #5056 > > │ ............................................................................ │
00:00:30 v #5057 > > │ ........                                                                     │
00:00:30 v #5058 > > │ ..............;;;///////////////////////////////////////<................... │
00:00:30 v #5059 > > │ ............................................................................ │
00:00:30 v #5060 > > │ ........                                                                     │
00:00:30 v #5061 > > │ ...............//////////////////////////////////////////<.................. │
00:00:30 v #5062 > > │ ................;;;<........................................................ │
00:00:30 v #5063 > > │ ........                                                                     │
00:00:30 v #5064 > > │ ...............>/////////////////////////////////////////<<................. │
00:00:30 v #5065 > > │ .........;;;;;;;////<....................................................... │
00:00:30 v #5066 > > │ ........                                                                     │
00:00:30 v #5067 > > │ ................>/////////////////////////////////////////<................. │
00:00:30 v #5068 > > │ ...;;;;;;///////////<<...................................................... │
00:00:30 v #5069 > > │ ........                                                                     │
00:00:30 v #5070 > > │ ................./////////////////////////////////////////<<................ │
00:00:30 v #5071 > > │ ..;//////////////////<.....................;;;<<............................ │
00:00:30 v #5072 > > │ ........                                                                     │
00:00:30 v #5073 > > │ .................>/////////////////////////////////////////<................ │
00:00:30 v #5074 > > │ ...//////////////////<<...............;;;;;////<............................ │
00:00:30 v #5075 > > │ ........                                                                     │
00:00:30 v #5076 > > │ ..................//////////////////////////////////////////<............... │
00:00:30 v #5077 > > │ ....//////////////////<<..............>////////<<........................... │
00:00:30 v #5078 > > │ ........                                                                     │
00:00:30 v #5079 > > │ ..................>/////////////////////////////////////////<<.............. │
00:00:30 v #5080 > > │ ....>//////////////////<...............>////////<........................... │
00:00:30 v #5081 > > │ ........                                                                     │
00:00:30 v #5082 > > │ ...................>/////////////////////////////////////////<.............. │
00:00:30 v #5083 > > │ .....//////////////////<<...............////////<<.......................... │
00:00:30 v #5084 > > │ ........                                                                     │
00:00:30 v #5085 > > │ ..................../////////////////////////////////////////<<............. │
00:00:30 v #5086 > > │ .....>//////////////////<...............>////............................... │
00:00:30 v #5087 > > │ ........                                                                     │
00:00:30 v #5088 > > │ ....................>/////////////////////////////////////////<............. │
00:00:30 v #5089 > > │ ......///////////////////................................................... │
00:00:30 v #5090 > > │ ........                                                                     │
00:00:30 v #5091 > > │ ...................../////////////////////////////////////////<<............ │
00:00:30 v #5092 > > │ ......>////////////......................................................... │
00:00:30 v #5093 > > │ ........                                                                     │
00:00:30 v #5094 > > │ .....................>/////////////////////////////////////////<............ │
00:00:30 v #5095 > > │ .......>////................................................................ │
00:00:30 v #5096 > > │ ........                                                                     │
00:00:30 v #5097 > > │ ......................>/////////////////////////////////////////<........... │
00:00:30 v #5098 > > │ ............................................................................ │
00:00:30 v #5099 > > │ ........                                                                     │
00:00:30 v #5100 > > │ ......................./////////////////////////////////////////............ │
00:00:30 v #5101 > > │ ............................................................................ │
00:00:30 v #5102 > > │ ........                                                                     │
00:00:30 v #5103 > > │ .......................>/////////////////////////////////................... │
00:00:30 v #5104 > > │ ............................................................................ │
00:00:30 v #5105 > > │ ........                                                                     │
00:00:30 v #5106 > > │ ........................//////////////////////////.......................... │
00:00:30 v #5107 > > │ ............................................................................ │
00:00:30 v #5108 > > │ ........                                                                     │
00:00:30 v #5109 > > │ ........................>//////////////////................................. │
00:00:30 v #5110 > > │ ............................................................................ │
00:00:30 v #5111 > > │ ........                                                                     │
00:00:30 v #5112 > > │ .........................>//////////........................................ │
00:00:30 v #5113 > > │ ............................................................................ │
00:00:30 v #5114 > > │ ........                                                                     │
00:00:30 v #5115 > > │ ..........................////.............................................. │
00:00:30 v #5116 > > │ ............................................................................ │
00:00:30 v #5117 > > │ ........                                                                     │
00:00:30 v #5118 > > │ ............................................................................ │
00:00:30 v #5119 > > │ ............................................................................ │
00:00:30 v #5120 > > │ ........                                                                     │
00:00:30 v #5121 > > │ ............................................................................ │
00:00:30 v #5122 > > │ ............................................................................ │
00:00:30 v #5123 > > │ ........                                                                     │
00:00:30 v #5124 > > │ ............................................................................ │
00:00:30 v #5125 > > │ ............................................................................ │
00:00:30 v #5126 > > │ ........                                                                     │
00:00:30 v #5127 > > │ ............................................................................ │
00:00:30 v #5128 > > │ ............................................................................ │
00:00:30 v #5129 > > │ ........                                                                     │
00:00:30 v #5130 > > │ ............................................................................ │
00:00:30 v #5131 > > │ ............................................................................ │
00:00:30 v #5132 > > │ ........                                                                     │
00:00:30 v #5133 > > │ ............................................................................ │
00:00:30 v #5134 > > │ ............................................................................ │
00:00:30 v #5135 > > │ ........                                                                     │
00:00:30 v #5136 > > │ ............................................................................ │
00:00:30 v #5137 > > │ ............................................................................ │
00:00:30 v #5138 > > │ ........                                                                     │
00:00:30 v #5139 > > │ ............................................................................ │
00:00:30 v #5140 > > │ ............................................................................ │
00:00:30 v #5141 > > │ ........                                                                     │
00:00:30 v #5142 > > │ ............................................................................ │
00:00:30 v #5143 > > │ ............................................................................ │
00:00:30 v #5144 > > │ ........                                                                     │
00:00:30 v #5145 > > │                                                                              │
00:00:30 v #5146 > > │ ............................................................................ │
00:00:30 v #5147 > > │ ............................................................................ │
00:00:30 v #5148 > > │ ........                                                                     │
00:00:30 v #5149 > > │ ............................................................................ │
00:00:30 v #5150 > > │ ............................................................................ │
00:00:30 v #5151 > > │ ........                                                                     │
00:00:30 v #5152 > > │ ............................................................................ │
00:00:30 v #5153 > > │ ............................................................................ │
00:00:30 v #5154 > > │ ........                                                                     │
00:00:30 v #5155 > > │ ............................................................................ │
00:00:30 v #5156 > > │ ............................................................................ │
00:00:30 v #5157 > > │ ........                                                                     │
00:00:30 v #5158 > > │ ............................................................................ │
00:00:30 v #5159 > > │ ............................................................................ │
00:00:30 v #5160 > > │ ........                                                                     │
00:00:30 v #5161 > > │ ............................................................................ │
00:00:30 v #5162 > > │ ............................................................................ │
00:00:30 v #5163 > > │ ........                                                                     │
00:00:30 v #5164 > > │ ............................................................................ │
00:00:30 v #5165 > > │ ............................................................................ │
00:00:30 v #5166 > > │ ........                                                                     │
00:00:30 v #5167 > > │ ............................................................................ │
00:00:30 v #5168 > > │ ............................................................................ │
00:00:30 v #5169 > > │ ........                                                                     │
00:00:30 v #5170 > > │ ............................................................................ │
00:00:30 v #5171 > > │ ............................................................................ │
00:00:30 v #5172 > > │ ........                                                                     │
00:00:30 v #5173 > > │ ................................................;;;/;....................... │
00:00:30 v #5174 > > │ ............................................................................ │
00:00:30 v #5175 > > │ ........                                                                     │
00:00:30 v #5176 > > │ ..........................................;;;;/;//////...................... │
00:00:30 v #5177 > > │ ............................................................................ │
00:00:30 v #5178 > > │ ........                                                                     │
00:00:30 v #5179 > > │ ....................................;;;;///////////////..................... │
00:00:30 v #5180 > > │ ............................................................................ │
00:00:30 v #5181 > > │ ........                                                                     │
00:00:30 v #5182 > > │ ...............................;;/;;///////////////////<.................... │
00:00:30 v #5183 > > │ ............................................................................ │
00:00:30 v #5184 > > │ ........                                                                     │
00:00:30 v #5185 > > │ .........................;;;;/;/////////////////////////.................... │
00:00:30 v #5186 > > │ ............................................................................ │
00:00:30 v #5187 > > │ ........                                                                     │
00:00:30 v #5188 > > │ ...................;;;;//;///////////////////////////////................... │
00:00:30 v #5189 > > │ ............................................................................ │
00:00:30 v #5190 > > │ ........                                                                     │
00:00:30 v #5191 > > │ ..............;;/;;//////////////////////////////////////<.................. │
00:00:30 v #5192 > > │ ............................................................................ │
00:00:30 v #5193 > > │ ........                                                                     │
00:00:30 v #5194 > > │ ..............>>//////////////////////////////////////////.................. │
00:00:30 v #5195 > > │ ...............;;;//........................................................ │
00:00:30 v #5196 > > │ ........                                                                     │
00:00:30 v #5197 > > │ ...............>>//////////////////////////////////////////................. │
00:00:30 v #5198 > > │ ..........;;/////////....................................................... │
00:00:30 v #5199 > > │ ........                                                                     │
00:00:30 v #5200 > > │ ................>///////////////////////////////////////////................ │
00:00:30 v #5201 > > │ ....;;;///////////////...................................................... │
00:00:30 v #5202 > > │ ........                                                                     │
00:00:30 v #5203 > > │ .................>//////////////////////////////////////////<............... │
00:00:30 v #5204 > > │ ..;>//////////////////<...................;;///<............................ │
00:00:30 v #5205 > > │ ........                                                                     │
00:00:30 v #5206 > > │ .................>>//////////////////////////////////////////............... │
00:00:30 v #5207 > > │ ...>///////////////////...............;;;;//////............................ │
00:00:30 v #5208 > > │ ........                                                                     │
00:00:30 v #5209 > > │ ..................>>//////////////////////////////////////////.............. │
00:00:30 v #5210 > > │ ....>///////////////////...............>/////////........................... │
00:00:30 v #5211 > > │ ........                                                                     │
00:00:30 v #5212 > > │ ...................>//////////////////////////////////////////<............. │
00:00:30 v #5213 > > │ ....>>///////////////////..............>>////////<.......................... │
00:00:30 v #5214 > > │ ........                                                                     │
00:00:30 v #5215 > > │ ....................>//////////////////////////////////////////............. │
00:00:30 v #5216 > > │ .....>>//////////////////...............>>////////.......................... │
00:00:30 v #5217 > > │ ........                                                                     │
00:00:30 v #5218 > > │ ....................>>//////////////////////////////////////////............ │
00:00:30 v #5219 > > │ ......>///////////////////...............>///............................... │
00:00:30 v #5220 > > │ ........                                                                     │
00:00:30 v #5221 > > │ .....................>///////////////////////////////////////////........... │
00:00:30 v #5222 > > │ .......>////////////////.................................................... │
00:00:30 v #5223 > > │ ........                                                                     │
00:00:30 v #5224 > > │ ......................>//////////////////////////////////////////<.......... │
00:00:30 v #5225 > > │ .......>>/////////.......................................................... │
00:00:30 v #5226 > > │ ........                                                                     │
00:00:30 v #5227 > > │ ......................>>//////////////////////////////////////////.......... │
00:00:30 v #5228 > > │ ........>////............................................................... │
00:00:30 v #5229 > > │ ........                                                                     │
00:00:30 v #5230 > > │ .......................>>/////////////////////////////////////////.......... │
00:00:30 v #5231 > > │ ............................................................................ │
00:00:30 v #5232 > > │ ........                                                                     │
00:00:30 v #5233 > > │ ........................>>//////////////////////////////////................ │
00:00:30 v #5234 > > │ ............................................................................ │
00:00:30 v #5235 > > │ ........                                                                     │
00:00:30 v #5236 > > │ .........................>////////////////////////////...................... │
00:00:30 v #5237 > > │ ............................................................................ │
00:00:30 v #5238 > > │ ........                                                                     │
00:00:30 v #5239 > > │ .........................>>//////////////////////........................... │
00:00:30 v #5240 > > │ ............................................................................ │
00:00:30 v #5241 > > │ ........                                                                     │
00:00:30 v #5242 > > │ ..........................>>////////////////................................ │
00:00:30 v #5243 > > │ ............................................................................ │
00:00:30 v #5244 > > │ ........                                                                     │
00:00:30 v #5245 > > │ ...........................>///////////..................................... │
00:00:30 v #5246 > > │ ............................................................................ │
00:00:30 v #5247 > > │ ........                                                                     │
00:00:30 v #5248 > > │ ............................>////........................................... │
00:00:30 v #5249 > > │ ............................................................................ │
00:00:30 v #5250 > > │ ........                                                                     │
00:00:30 v #5251 > > │ ............................................................................ │
00:00:30 v #5252 > > │ ............................................................................ │
00:00:30 v #5253 > > │ ........                                                                     │
00:00:30 v #5254 > > │ ............................................................................ │
00:00:30 v #5255 > > │ ............................................................................ │
00:00:30 v #5256 > > │ ........                                                                     │
00:00:30 v #5257 > > │ ............................................................................ │
00:00:30 v #5258 > > │ ............................................................................ │
00:00:30 v #5259 > > │ ........                                                                     │
00:00:30 v #5260 > > │ ............................................................................ │
00:00:30 v #5261 > > │ ............................................................................ │
00:00:30 v #5262 > > │ ........                                                                     │
00:00:30 v #5263 > > │ ............................................................................ │
00:00:30 v #5264 > > │ ............................................................................ │
00:00:30 v #5265 > > │ ........                                                                     │
00:00:30 v #5266 > > │ ............................................................................ │
00:00:30 v #5267 > > │ ............................................................................ │
00:00:30 v #5268 > > │ ........                                                                     │
00:00:30 v #5269 > > │ ............................................................................ │
00:00:30 v #5270 > > │ ............................................................................ │
00:00:30 v #5271 > > │ ........                                                                     │
00:00:30 v #5272 > > │ ............................................................................ │
00:00:30 v #5273 > > │ ............................................................................ │
00:00:30 v #5274 > > │ ........                                                                     │
00:00:30 v #5275 > > │ ............................................................................ │
00:00:30 v #5276 > > │ ............................................................................ │
00:00:30 v #5277 > > │ ........                                                                     │
00:00:30 v #5278 > > │                                                                              │
00:00:30 v #5279 > > │ ............................................................................ │
00:00:30 v #5280 > > │ ............................................................................ │
00:00:30 v #5281 > > │ ........                                                                     │
00:00:30 v #5282 > > │ ............................................................................ │
00:00:30 v #5283 > > │ ............................................................................ │
00:00:30 v #5284 > > │ ........                                                                     │
00:00:30 v #5285 > > │ ............................................................................ │
00:00:30 v #5286 > > │ ............................................................................ │
00:00:30 v #5287 > > │ ........                                                                     │
00:00:30 v #5288 > > │ ............................................................................ │
00:00:30 v #5289 > > │ ............................................................................ │
00:00:30 v #5290 > > │ ........                                                                     │
00:00:30 v #5291 > > │ ............................................................................ │
00:00:30 v #5292 > > │ ............................................................................ │
00:00:30 v #5293 > > │ ........                                                                     │
00:00:30 v #5294 > > │ ............................................................................ │
00:00:30 v #5295 > > │ ............................................................................ │
00:00:30 v #5296 > > │ ........                                                                     │
00:00:30 v #5297 > > │ ............................................................................ │
00:00:30 v #5298 > > │ ............................................................................ │
00:00:30 v #5299 > > │ ........                                                                     │
00:00:30 v #5300 > > │ ............................................................................ │
00:00:30 v #5301 > > │ ............................................................................ │
00:00:30 v #5302 > > │ ........                                                                     │
00:00:30 v #5303 > > │ ...................................................;........................ │
00:00:30 v #5304 > > │ ............................................................................ │
00:00:30 v #5305 > > │ ........                                                                     │
00:00:30 v #5306 > > │ ..............................................;/;;///....................... │
00:00:30 v #5307 > > │ ............................................................................ │
00:00:30 v #5308 > > │ ........                                                                     │
00:00:30 v #5309 > > │ .........................................;;;//////////...................... │
00:00:30 v #5310 > > │ ............................................................................ │
00:00:30 v #5311 > > │ ........                                                                     │
00:00:30 v #5312 > > │ ....................................;;;///////////////<..................... │
00:00:30 v #5313 > > │ ............................................................................ │
00:00:30 v #5314 > > │ ........                                                                     │
00:00:30 v #5315 > > │ ...............................;;;/;///////////////////<.................... │
00:00:30 v #5316 > > │ ............................................................................ │
00:00:30 v #5317 > > │ ........                                                                     │
00:00:30 v #5318 > > │ ..........................;;;/;/////////////////////////<................... │
00:00:30 v #5319 > > │ ............................................................................ │
00:00:30 v #5320 > > │ ........                                                                     │
00:00:30 v #5321 > > │ ......................;;/////////////////////////////////................... │
00:00:30 v #5322 > > │ ............................................................................ │
00:00:30 v #5323 > > │ ........                                                                     │
00:00:30 v #5324 > > │ .................;;;//////////////////////////////////////.................. │
00:00:30 v #5325 > > │ ............................................................................ │
00:00:30 v #5326 > > │ ........                                                                     │
00:00:30 v #5327 > > │ ..............;>///////////////////////////////////////////................. │
00:00:30 v #5328 > > │ ...............;;;;/........................................................ │
00:00:30 v #5329 > > │ ........                                                                     │
00:00:30 v #5330 > > │ ...............>///////////////////////////////////////////<................ │
00:00:30 v #5331 > > │ ..........;;/////////....................................................... │
00:00:30 v #5332 > > │ ........                                                                     │
00:00:30 v #5333 > > │ ................>///////////////////////////////////////////<............... │
00:00:30 v #5334 > > │ .....;;;//////////////...................................................... │
00:00:30 v #5335 > > │ ........                                                                     │
00:00:30 v #5336 > > │ .................>///////////////////////////////////////////<.............. │
00:00:30 v #5337 > > │ ..;>///////////////////...................;;///<............................ │
00:00:30 v #5338 > > │ ........                                                                     │
00:00:30 v #5339 > > │ .................>>///////////////////////////////////////////.............. │
00:00:30 v #5340 > > │ ...>>///////////////////..............;;;;//////............................ │
00:00:30 v #5341 > > │ ........                                                                     │
00:00:30 v #5342 > > │ ..................>>///////////////////////////////////////////............. │
00:00:30 v #5343 > > │ ....>///////////////////<.............>>/////////........................... │
00:00:30 v #5344 > > │ ........                                                                     │
00:00:30 v #5345 > > │ ...................>>///////////////////////////////////////////............ │
00:00:30 v #5346 > > │ .....>///////////////////<.............>>/////////.......................... │
00:00:30 v #5347 > > │ ........                                                                     │
00:00:30 v #5348 > > │ ....................>>///////////////////////////////////////////........... │
00:00:30 v #5349 > > │ .....>>///////////////////..............>>////////.......................... │
00:00:30 v #5350 > > │ ........                                                                     │
00:00:30 v #5351 > > │ .....................>///////////////////////////////////////////<.......... │
00:00:30 v #5352 > > │ ......>>///////////////////..............>////.............................. │
00:00:30 v #5353 > > │ ........                                                                     │
00:00:30 v #5354 > > │ ......................>///////////////////////////////////////////<......... │
00:00:30 v #5355 > > │ .......>>//////////////..................................................... │
00:00:30 v #5356 > > │ ........                                                                     │
00:00:30 v #5357 > > │ .......................>///////////////////////////////////////////......... │
00:00:30 v #5358 > > │ ........>>////////.......................................................... │
00:00:30 v #5359 > > │ ........                                                                     │
00:00:30 v #5360 > > │ ........................>//////////////////////////////////////////......... │
00:00:30 v #5361 > > │ .........>////.............................................................. │
00:00:30 v #5362 > > │ ........                                                                     │
00:00:30 v #5363 > > │ ........................>>/////////////////////////////////////............. │
00:00:30 v #5364 > > │ ............................................................................ │
00:00:30 v #5365 > > │ ........                                                                     │
00:00:30 v #5366 > > │ .........................>>///////////////////////////////.................. │
00:00:30 v #5367 > > │ ............................................................................ │
00:00:30 v #5368 > > │ ........                                                                     │
00:00:30 v #5369 > > │ ..........................>>//////////////////////////...................... │
00:00:30 v #5370 > > │ ............................................................................ │
00:00:30 v #5371 > > │ ........                                                                     │
00:00:30 v #5372 > > │ ...........................>>////////////////////........................... │
00:00:30 v #5373 > > │ ............................................................................ │
00:00:30 v #5374 > > │ ........                                                                     │
00:00:30 v #5375 > > │ ............................>>///////////////............................... │
00:00:30 v #5376 > > │ ............................................................................ │
00:00:30 v #5377 > > │ ........                                                                     │
00:00:30 v #5378 > > │ .............................>>/////////.................................... │
00:00:30 v #5379 > > │ ............................................................................ │
00:00:30 v #5380 > > │ ........                                                                     │
00:00:30 v #5381 > > │ ..............................>/////........................................ │
00:00:30 v #5382 > > │ ............................................................................ │
00:00:30 v #5383 > > │ ........                                                                     │
00:00:30 v #5384 > > │ .............................../............................................ │
00:00:30 v #5385 > > │ ............................................................................ │
00:00:30 v #5386 > > │ ........                                                                     │
00:00:30 v #5387 > > │ ............................................................................ │
00:00:30 v #5388 > > │ ............................................................................ │
00:00:30 v #5389 > > │ ........                                                                     │
00:00:30 v #5390 > > │ ............................................................................ │
00:00:30 v #5391 > > │ ............................................................................ │
00:00:30 v #5392 > > │ ........                                                                     │
00:00:30 v #5393 > > │ ............................................................................ │
00:00:30 v #5394 > > │ ............................................................................ │
00:00:30 v #5395 > > │ ........                                                                     │
00:00:30 v #5396 > > │ ............................................................................ │
00:00:30 v #5397 > > │ ............................................................................ │
00:00:30 v #5398 > > │ ........                                                                     │
00:00:30 v #5399 > > │ ............................................................................ │
00:00:30 v #5400 > > │ ............................................................................ │
00:00:30 v #5401 > > │ ........                                                                     │
00:00:30 v #5402 > > │ ............................................................................ │
00:00:30 v #5403 > > │ ............................................................................ │
00:00:30 v #5404 > > │ ........                                                                     │
00:00:30 v #5405 > > │ ............................................................................ │
00:00:30 v #5406 > > │ ............................................................................ │
00:00:30 v #5407 > > │ ........                                                                     │
00:00:30 v #5408 > > │ ............................................................................ │
00:00:30 v #5409 > > │ ............................................................................ │
00:00:30 v #5410 > > │ ........                                                                     │
00:00:30 v #5411 > > │                                                                              │
00:00:30 v #5412 > > │ ............................................................................ │
00:00:30 v #5413 > > │ ............................................................................ │
00:00:30 v #5414 > > │ ........                                                                     │
00:00:30 v #5415 > > │ ............................................................................ │
00:00:30 v #5416 > > │ ............................................................................ │
00:00:30 v #5417 > > │ ........                                                                     │
00:00:30 v #5418 > > │ ............................................................................ │
00:00:30 v #5419 > > │ ............................................................................ │
00:00:30 v #5420 > > │ ........                                                                     │
00:00:30 v #5421 > > │ ............................................................................ │
00:00:30 v #5422 > > │ ............................................................................ │
00:00:30 v #5423 > > │ ........                                                                     │
00:00:30 v #5424 > > │ ............................................................................ │
00:00:30 v #5425 > > │ ............................................................................ │
00:00:30 v #5426 > > │ ........                                                                     │
00:00:30 v #5427 > > │ ............................................................................ │
00:00:30 v #5428 > > │ ............................................................................ │
00:00:30 v #5429 > > │ ........                                                                     │
00:00:30 v #5430 > > │ ............................................................................ │
00:00:30 v #5431 > > │ ............................................................................ │
00:00:30 v #5432 > > │ ........                                                                     │
00:00:30 v #5433 > > │ ............................................................................ │
00:00:30 v #5434 > > │ ............................................................................ │
00:00:30 v #5435 > > │ ........                                                                     │
00:00:30 v #5436 > > │ ................................................;;/<........................ │
00:00:30 v #5437 > > │ ............................................................................ │
00:00:30 v #5438 > > │ ........                                                                     │
00:00:30 v #5439 > > │ ............................................;;//////<....................... │
00:00:30 v #5440 > > │ ............................................................................ │
00:00:30 v #5441 > > │ ........                                                                     │
00:00:30 v #5442 > > │ ........................................;;;//////////<...................... │
00:00:30 v #5443 > > │ ............................................................................ │
00:00:30 v #5444 > > │ ........                                                                     │
00:00:30 v #5445 > > │ ....................................;/;;//////////////<..................... │
00:00:30 v #5446 > > │ ............................................................................ │
00:00:30 v #5447 > > │ ........                                                                     │
00:00:30 v #5448 > > │ ................................;;/////////////////////<.................... │
00:00:30 v #5449 > > │ ............................................................................ │
00:00:30 v #5450 > > │ ........                                                                     │
00:00:30 v #5451 > > │ ...........................;;//;////////////////////////.................... │
00:00:30 v #5452 > > │ ............................................................................ │
00:00:30 v #5453 > > │ ........                                                                     │
00:00:30 v #5454 > > │ .......................;;;///////////////////////////////<.................. │
00:00:30 v #5455 > > │ ............................................................................ │
00:00:30 v #5456 > > │ ........                                                                     │
00:00:30 v #5457 > > │ ...................;/;////////////////////////////////////<................. │
00:00:30 v #5458 > > │ ..................;......................................................... │
00:00:30 v #5459 > > │ ........                                                                     │
00:00:30 v #5460 > > │ ..............;;;;/////////////////////////////////////////<................ │
00:00:30 v #5461 > > │ ..............;/////........................................................ │
00:00:30 v #5462 > > │ ........                                                                     │
00:00:30 v #5463 > > │ ..............;>////////////////////////////////////////////<............... │
00:00:30 v #5464 > > │ ..........;;;;///////....................................................... │
00:00:30 v #5465 > > │ ........                                                                     │
00:00:30 v #5466 > > │ ................>////////////////////////////////////////////<.............. │
00:00:30 v #5467 > > │ ......;///////////////...................................................... │
00:00:30 v #5468 > > │ ........                                                                     │
00:00:30 v #5469 > > │ .................>////////////////////////////////////////////.............. │
00:00:30 v #5470 > > │ ...;;//////////////////...................;;;//<............................ │
00:00:30 v #5471 > > │ ........                                                                     │
00:00:30 v #5472 > > │ ..................>////////////////////////////////////////////............. │
00:00:30 v #5473 > > │ ...>>///////////////////..............;;;///////<........................... │
00:00:30 v #5474 > > │ ........                                                                     │
00:00:30 v #5475 > > │ ...................>////////////////////////////////////////////<........... │
00:00:30 v #5476 > > │ ...>>>///////////////////.............>>/////////<.......................... │
00:00:30 v #5477 > > │ ........                                                                     │
00:00:30 v #5478 > > │ ....................>////////////////////////////////////////////<.......... │
00:00:30 v #5479 > > │ ....>>>///////////////////.............>>/////////.......................... │
00:00:30 v #5480 > > │ ........                                                                     │
00:00:30 v #5481 > > │ .....................>////////////////////////////////////////////<......... │
00:00:30 v #5482 > > │ .....>>>///////////////////.............>>////////.......................... │
00:00:30 v #5483 > > │ ........                                                                     │
00:00:30 v #5484 > > │ ......................>////////////////////////////////////////////<........ │
00:00:30 v #5485 > > │ ......>>>/////////////////...............>>///.............................. │
00:00:30 v #5486 > > │ ........                                                                     │
00:00:30 v #5487 > > │ .......................>////////////////////////////////////////////........ │
00:00:30 v #5488 > > │ .......>>>////////////...................................................... │
00:00:30 v #5489 > > │ ........                                                                     │
00:00:30 v #5490 > > │ ........................>///////////////////////////////////////////........ │
00:00:30 v #5491 > > │ ........>>>///////.......................................................... │
00:00:30 v #5492 > > │ ........                                                                     │
00:00:30 v #5493 > > │ .........................>>/////////////////////////////////////............ │
00:00:30 v #5494 > > │ .........>>////............................................................. │
00:00:30 v #5495 > > │ ........                                                                     │
00:00:30 v #5496 > > │ ..........................>/////////////////////////////////................ │
00:00:30 v #5497 > > │ ............................................................................ │
00:00:30 v #5498 > > │ ........                                                                     │
00:00:30 v #5499 > > │ ...........................>>////////////////////////////................... │
00:00:30 v #5500 > > │ ............................................................................ │
00:00:30 v #5501 > > │ ........                                                                     │
00:00:30 v #5502 > > │ ............................>>///////////////////////....................... │
00:00:30 v #5503 > > │ ............................................................................ │
00:00:30 v #5504 > > │ ........                                                                     │
00:00:30 v #5505 > > │ .............................>////////////////////.......................... │
00:00:30 v #5506 > > │ ............................................................................ │
00:00:30 v #5507 > > │ ........                                                                     │
00:00:30 v #5508 > > │ ..............................>>//////////////.............................. │
00:00:30 v #5509 > > │ ............................................................................ │
00:00:30 v #5510 > > │ ........                                                                     │
00:00:30 v #5511 > > │ ...............................>>/////////.................................. │
00:00:30 v #5512 > > │ ............................................................................ │
00:00:30 v #5513 > > │ ........                                                                     │
00:00:30 v #5514 > > │ ................................>>////...................................... │
00:00:30 v #5515 > > │ ............................................................................ │
00:00:30 v #5516 > > │ ........                                                                     │
00:00:30 v #5517 > > │ .................................>/......................................... │
00:00:30 v #5518 > > │ ............................................................................ │
00:00:30 v #5519 > > │ ........                                                                     │
00:00:30 v #5520 > > │ ............................................................................ │
00:00:30 v #5521 > > │ ............................................................................ │
00:00:30 v #5522 > > │ ........                                                                     │
00:00:30 v #5523 > > │ ............................................................................ │
00:00:30 v #5524 > > │ ............................................................................ │
00:00:30 v #5525 > > │ ........                                                                     │
00:00:30 v #5526 > > │ ............................................................................ │
00:00:30 v #5527 > > │ ............................................................................ │
00:00:30 v #5528 > > │ ........                                                                     │
00:00:30 v #5529 > > │ ............................................................................ │
00:00:30 v #5530 > > │ ............................................................................ │
00:00:30 v #5531 > > │ ........                                                                     │
00:00:30 v #5532 > > │ ............................................................................ │
00:00:30 v #5533 > > │ ............................................................................ │
00:00:30 v #5534 > > │ ........                                                                     │
00:00:30 v #5535 > > │ ............................................................................ │
00:00:30 v #5536 > > │ ............................................................................ │
00:00:30 v #5537 > > │ ........                                                                     │
00:00:30 v #5538 > > │ ............................................................................ │
00:00:30 v #5539 > > │ ............................................................................ │
00:00:30 v #5540 > > │ ........                                                                     │
00:00:30 v #5541 > > │ ............................................................................ │
00:00:30 v #5542 > > │ ............................................................................ │
00:00:30 v #5543 > > │ ........                                                                     │
00:00:30 v #5544 > > │                                                                              │
00:00:30 v #5545 > > │ ............................................................................ │
00:00:30 v #5546 > > │ ............................................................................ │
00:00:30 v #5547 > > │ ........                                                                     │
00:00:30 v #5548 > > │ ............................................................................ │
00:00:30 v #5549 > > │ ............................................................................ │
00:00:30 v #5550 > > │ ........                                                                     │
00:00:30 v #5551 > > │ ............................................................................ │
00:00:30 v #5552 > > │ ............................................................................ │
00:00:30 v #5553 > > │ ........                                                                     │
00:00:30 v #5554 > > │ ............................................................................ │
00:00:30 v #5555 > > │ ............................................................................ │
00:00:30 v #5556 > > │ ........                                                                     │
00:00:30 v #5557 > > │ ............................................................................ │
00:00:30 v #5558 > > │ ............................................................................ │
00:00:30 v #5559 > > │ ........                                                                     │
00:00:30 v #5560 > > │ ............................................................................ │
00:00:30 v #5561 > > │ ............................................................................ │
00:00:30 v #5562 > > │ ........                                                                     │
00:00:30 v #5563 > > │ ............................................................................ │
00:00:30 v #5564 > > │ ............................................................................ │
00:00:30 v #5565 > > │ ........                                                                     │
00:00:30 v #5566 > > │ ............................................................................ │
00:00:30 v #5567 > > │ ............................................................................ │
00:00:30 v #5568 > > │ ........                                                                     │
00:00:30 v #5569 > > │ ...............................................;;;/......................... │
00:00:30 v #5570 > > │ ............................................................................ │
00:00:30 v #5571 > > │ ........                                                                     │
00:00:30 v #5572 > > │ ...........................................;;;//////........................ │
00:00:30 v #5573 > > │ ............................................................................ │
00:00:30 v #5574 > > │ ........                                                                     │
00:00:30 v #5575 > > │ .......................................;;;///////////....................... │
00:00:30 v #5576 > > │ ............................................................................ │
00:00:30 v #5577 > > │ ........                                                                     │
00:00:30 v #5578 > > │ ....................................;;////////////////...................... │
00:00:30 v #5579 > > │ ............................................................................ │
00:00:30 v #5580 > > │ ........                                                                     │
00:00:30 v #5581 > > │ ................................;;;////////////////////<.................... │
00:00:30 v #5582 > > │ ............................................................................ │
00:00:30 v #5583 > > │ ........                                                                     │
00:00:30 v #5584 > > │ ............................;;/;////////////////////////<................... │
00:00:30 v #5585 > > │ ............................................................................ │
00:00:30 v #5586 > > │ ........                                                                     │
00:00:30 v #5587 > > │ .........................;;//////////////////////////////<.................. │
00:00:30 v #5588 > > │ ............................................................................ │
00:00:30 v #5589 > > │ ........                                                                     │
00:00:30 v #5590 > > │ .....................;/////////////////////////////////////................. │
00:00:30 v #5591 > > │ .................;;......................................................... │
00:00:30 v #5592 > > │ ........                                                                     │
00:00:30 v #5593 > > │ .................;/;////////////////////////////////////////................ │
00:00:30 v #5594 > > │ ..............;;////........................................................ │
00:00:30 v #5595 > > │ ........                                                                     │
00:00:30 v #5596 > > │ ...............;/////////////////////////////////////////////............... │
00:00:30 v #5597 > > │ ..........;;;////////....................................................... │
00:00:30 v #5598 > > │ ........                                                                     │
00:00:30 v #5599 > > │ ...............>>/////////////////////////////////////////////.............. │
00:00:30 v #5600 > > │ .......;//////////////<..................................................... │
00:00:30 v #5601 > > │ ........                                                                     │
00:00:30 v #5602 > > │ ................>>/////////////////////////////////////////////............. │
00:00:30 v #5603 > > │ ...;;///////////////////..................;;;//<............................ │
00:00:30 v #5604 > > │ ........                                                                     │
00:00:30 v #5605 > > │ ..................>>////////////////////////////////////////////<........... │
00:00:30 v #5606 > > │ ..;;>////////////////////..............;/////////........................... │
00:00:30 v #5607 > > │ ........                                                                     │
00:00:30 v #5608 > > │ ...................>>////////////////////////////////////////////<.......... │
00:00:30 v #5609 > > │ ..\>>>////////////////////............;>//////////.......................... │
00:00:30 v #5610 > > │ ........                                                                     │
00:00:30 v #5611 > > │ ....................>>////////////////////////////////////////////<......... │
00:00:30 v #5612 > > │ ....>>>////////////////////...........\>>//////////......................... │
00:00:30 v #5613 > > │ ........                                                                     │
00:00:30 v #5614 > > │ .....................>>/////////////////////////////////////////////........ │
00:00:30 v #5615 > > │ .....>>>////////////////////............>>>//////........................... │
00:00:30 v #5616 > > │ ........                                                                     │
00:00:30 v #5617 > > │ .......................>/////////////////////////////////////////////....... │
00:00:30 v #5618 > > │ ......>>>////////////////................>>///.............................. │
00:00:30 v #5619 > > │ ........                                                                     │
00:00:30 v #5620 > > │ ........................>////////////////////////////////////////////....... │
00:00:30 v #5621 > > │ .......>>>////////////...................................................... │
00:00:30 v #5622 > > │ ........                                                                     │
00:00:30 v #5623 > > │ .........................>>///////////////////////////////////////.......... │
00:00:30 v #5624 > > │ ........>>>>///////......................................................... │
00:00:30 v #5625 > > │ ........                                                                     │
00:00:30 v #5626 > > │ ..........................>>///////////////////////////////////............. │
00:00:30 v #5627 > > │ .........\>>>///............................................................ │
00:00:30 v #5628 > > │ ........                                                                     │
00:00:30 v #5629 > > │ ...........................>>//////////////////////////////................. │
00:00:30 v #5630 > > │ ............................................................................ │
00:00:30 v #5631 > > │ ........                                                                     │
00:00:30 v #5632 > > │ ............................>>//////////////////////////.................... │
00:00:30 v #5633 > > │ ............................................................................ │
00:00:30 v #5634 > > │ ........                                                                     │
00:00:30 v #5635 > > │ .............................>>//////////////////////....................... │
00:00:30 v #5636 > > │ ............................................................................ │
00:00:30 v #5637 > > │ ........                                                                     │
00:00:30 v #5638 > > │ ...............................>//////////////////.......................... │
00:00:30 v #5639 > > │ ............................................................................ │
00:00:30 v #5640 > > │ ........                                                                     │
00:00:30 v #5641 > > │ ................................>>/////////////............................. │
00:00:30 v #5642 > > │ ............................................................................ │
00:00:30 v #5643 > > │ ........                                                                     │
00:00:30 v #5644 > > │ .................................>>/////////................................ │
00:00:30 v #5645 > > │ ............................................................................ │
00:00:30 v #5646 > > │ ........                                                                     │
00:00:30 v #5647 > > │ ..................................>>/////................................... │
00:00:30 v #5648 > > │ ............................................................................ │
00:00:30 v #5649 > > │ ........                                                                     │
00:00:30 v #5650 > > │ ...................................>//...................................... │
00:00:30 v #5651 > > │ ............................................................................ │
00:00:30 v #5652 > > │ ........                                                                     │
00:00:30 v #5653 > > │ ............................................................................ │
00:00:30 v #5654 > > │ ............................................................................ │
00:00:30 v #5655 > > │ ........                                                                     │
00:00:30 v #5656 > > │ ............................................................................ │
00:00:30 v #5657 > > │ ............................................................................ │
00:00:30 v #5658 > > │ ........                                                                     │
00:00:30 v #5659 > > │ ............................................................................ │
00:00:30 v #5660 > > │ ............................................................................ │
00:00:30 v #5661 > > │ ........                                                                     │
00:00:30 v #5662 > > │ ............................................................................ │
00:00:30 v #5663 > > │ ............................................................................ │
00:00:30 v #5664 > > │ ........                                                                     │
00:00:30 v #5665 > > │ ............................................................................ │
00:00:30 v #5666 > > │ ............................................................................ │
00:00:30 v #5667 > > │ ........                                                                     │
00:00:30 v #5668 > > │ ............................................................................ │
00:00:30 v #5669 > > │ ............................................................................ │
00:00:30 v #5670 > > │ ........                                                                     │
00:00:30 v #5671 > > │ ............................................................................ │
00:00:30 v #5672 > > │ ............................................................................ │
00:00:30 v #5673 > > │ ........                                                                     │
00:00:30 v #5674 > > │ ............................................................................ │
00:00:30 v #5675 > > │ ............................................................................ │
00:00:30 v #5676 > > │ ........                                                                     │
00:00:30 v #5677 > > │                                                                              │
00:00:30 v #5678 > > │ ............................................................................ │
00:00:30 v #5679 > > │ ............................................................................ │
00:00:30 v #5680 > > │ ........                                                                     │
00:00:30 v #5681 > > │ ............................................................................ │
00:00:30 v #5682 > > │ ............................................................................ │
00:00:30 v #5683 > > │ ........                                                                     │
00:00:30 v #5684 > > │ ............................................................................ │
00:00:30 v #5685 > > │ ............................................................................ │
00:00:30 v #5686 > > │ ........                                                                     │
00:00:30 v #5687 > > │ ............................................................................ │
00:00:30 v #5688 > > │ ............................................................................ │
00:00:30 v #5689 > > │ ........                                                                     │
00:00:30 v #5690 > > │ ............................................................................ │
00:00:30 v #5691 > > │ ............................................................................ │
00:00:30 v #5692 > > │ ........                                                                     │
00:00:30 v #5693 > > │ ............................................................................ │
00:00:30 v #5694 > > │ ............................................................................ │
00:00:30 v #5695 > > │ ........                                                                     │
00:00:30 v #5696 > > │ ............................................................................ │
00:00:30 v #5697 > > │ ............................................................................ │
00:00:30 v #5698 > > │ ........                                                                     │
00:00:30 v #5699 > > │ ............................................................................ │
00:00:30 v #5700 > > │ ............................................................................ │
00:00:30 v #5701 > > │ ........                                                                     │
00:00:30 v #5702 > > │ .............................................;;///.......................... │
00:00:30 v #5703 > > │ ............................................................................ │
00:00:30 v #5704 > > │ ........                                                                     │
00:00:30 v #5705 > > │ ..........................................;;;//////<........................ │
00:00:30 v #5706 > > │ ............................................................................ │
00:00:30 v #5707 > > │ ........                                                                     │
00:00:30 v #5708 > > │ .......................................;////////////<....................... │
00:00:30 v #5709 > > │ ............................................................................ │
00:00:30 v #5710 > > │ ........                                                                     │
00:00:30 v #5711 > > │ ....................................;/////////////////...................... │
00:00:30 v #5712 > > │ ............................................................................ │
00:00:30 v #5713 > > │ ........                                                                     │
00:00:30 v #5714 > > │ ................................;;;////////////////////<.................... │
00:00:30 v #5715 > > │ ............................................................................ │
00:00:30 v #5716 > > │ ........                                                                     │
00:00:30 v #5717 > > │ .............................;;;////////////////////////<................... │
00:00:30 v #5718 > > │ ............................................................................ │
00:00:30 v #5719 > > │ ........                                                                     │
00:00:30 v #5720 > > │ ..........................;///////////////////////////////.................. │
00:00:30 v #5721 > > │ ............................................................................ │
00:00:30 v #5722 > > │ ........                                                                     │
00:00:30 v #5723 > > │ ......................;;///////////////////////////////////................. │
00:00:30 v #5724 > > │ .................;/......................................................... │
00:00:30 v #5725 > > │ ........                                                                     │
00:00:30 v #5726 > > │ ...................;;;//////////////////////////////////////<............... │
00:00:30 v #5727 > > │ ..............;;////........................................................ │
00:00:30 v #5728 > > │ ........                                                                     │
00:00:30 v #5729 > > │ ................;;////////////////////////////////////////////.............. │
00:00:30 v #5730 > > │ ..........;;;////////....................................................... │
00:00:30 v #5731 > > │ ........                                                                     │
00:00:30 v #5732 > > │ ...............;>//////////////////////////////////////////////............. │
00:00:30 v #5733 > > │ .......;;//////////////......................<.............................. │
00:00:30 v #5734 > > │ ........                                                                     │
00:00:30 v #5735 > > │ ................>>//////////////////////////////////////////////............ │
00:00:30 v #5736 > > │ ....;///////////////////..................;;;//<............................ │
00:00:30 v #5737 > > │ ........                                                                     │
00:00:30 v #5738 > > │ .................>>>//////////////////////////////////////////////.......... │
00:00:30 v #5739 > > │ ..;;>////////////////////..............;;;///////........................... │
00:00:30 v #5740 > > │ ........                                                                     │
00:00:30 v #5741 > > │ ..................>>>//////////////////////////////////////////////......... │
00:00:30 v #5742 > > │ ..>>>>////////////////////<..........;;;>/////////.......................... │
00:00:30 v #5743 > > │ ........                                                                     │
00:00:30 v #5744 > > │ ...................>>>//////////////////////////////////////////////........ │
00:00:30 v #5745 > > │ ...>>>>/////////////////////..........>>>>/////////......................... │
00:00:30 v #5746 > > │ ........                                                                     │
00:00:30 v #5747 > > │ .....................>>>/////////////////////////////////////////////<...... │
00:00:30 v #5748 > > │ ....>>>>>//////////////////............>>>>//////........................... │
00:00:30 v #5749 > > │ ........                                                                     │
00:00:30 v #5750 > > │ ......................>>>////////////////////////////////////////////....... │
00:00:30 v #5751 > > │ .....\>>>>///////////////................>>>//.............................. │
00:00:30 v #5752 > > │ ........                                                                     │
00:00:30 v #5753 > > │ ........................>>>////////////////////////////////////////......... │
00:00:30 v #5754 > > │ .......>>>>///////////...................................................... │
00:00:30 v #5755 > > │ ........                                                                     │
00:00:30 v #5756 > > │ .........................>>>////////////////////////////////////............ │
00:00:30 v #5757 > > │ ........>>>>>//////......................................................... │
00:00:30 v #5758 > > │ ........                                                                     │
00:00:30 v #5759 > > │ ..........................>>>////////////////////////////////............... │
00:00:30 v #5760 > > │ ..........>>>>//............................................................ │
00:00:30 v #5761 > > │ ........                                                                     │
00:00:30 v #5762 > > │ ............................>>>////////////////////////////................. │
00:00:30 v #5763 > > │ ............................................................................ │
00:00:30 v #5764 > > │ ........                                                                     │
00:00:30 v #5765 > > │ .............................>>>////////////////////////.................... │
00:00:30 v #5766 > > │ ............................................................................ │
00:00:30 v #5767 > > │ ........                                                                     │
00:00:30 v #5768 > > │ ..............................>>>////////////////////....................... │
00:00:30 v #5769 > > │ ............................................................................ │
00:00:30 v #5770 > > │ ........                                                                     │
00:00:30 v #5771 > > │ ................................>>>////////////////......................... │
00:00:30 v #5772 > > │ ............................................................................ │
00:00:30 v #5773 > > │ ........                                                                     │
00:00:30 v #5774 > > │ .................................>>>////////////............................ │
00:00:30 v #5775 > > │ ............................................................................ │
00:00:30 v #5776 > > │ ........                                                                     │
00:00:30 v #5777 > > │ ...................................>>>////////.............................. │
00:00:30 v #5778 > > │ ............................................................................ │
00:00:30 v #5779 > > │ ........                                                                     │
00:00:30 v #5780 > > │ ....................................>>>////................................. │
00:00:30 v #5781 > > │ ............................................................................ │
00:00:30 v #5782 > > │ ........                                                                     │
00:00:30 v #5783 > > │ ......................................>//................................... │
00:00:30 v #5784 > > │ ............................................................................ │
00:00:30 v #5785 > > │ ........                                                                     │
00:00:30 v #5786 > > │ ............................................................................ │
00:00:30 v #5787 > > │ ............................................................................ │
00:00:30 v #5788 > > │ ........                                                                     │
00:00:30 v #5789 > > │ ............................................................................ │
00:00:30 v #5790 > > │ ............................................................................ │
00:00:30 v #5791 > > │ ........                                                                     │
00:00:30 v #5792 > > │ ............................................................................ │
00:00:30 v #5793 > > │ ............................................................................ │
00:00:30 v #5794 > > │ ........                                                                     │
00:00:30 v #5795 > > │ ............................................................................ │
00:00:30 v #5796 > > │ ............................................................................ │
00:00:30 v #5797 > > │ ........                                                                     │
00:00:30 v #5798 > > │ ............................................................................ │
00:00:30 v #5799 > > │ ............................................................................ │
00:00:30 v #5800 > > │ ........                                                                     │
00:00:30 v #5801 > > │ ............................................................................ │
00:00:30 v #5802 > > │ ............................................................................ │
00:00:30 v #5803 > > │ ........                                                                     │
00:00:30 v #5804 > > │ ............................................................................ │
00:00:30 v #5805 > > │ ............................................................................ │
00:00:30 v #5806 > > │ ........                                                                     │
00:00:30 v #5807 > > │ ............................................................................ │
00:00:30 v #5808 > > │ ............................................................................ │
00:00:30 v #5809 > > │ ........                                                                     │
00:00:30 v #5810 > > │                                                                              │
00:00:30 v #5811 > > │ ............................................................................ │
00:00:30 v #5812 > > │ ............................................................................ │
00:00:30 v #5813 > > │ ........                                                                     │
00:00:30 v #5814 > > │ ............................................................................ │
00:00:30 v #5815 > > │ ............................................................................ │
00:00:30 v #5816 > > │ ........                                                                     │
00:00:30 v #5817 > > │ ............................................................................ │
00:00:30 v #5818 > > │ ............................................................................ │
00:00:30 v #5819 > > │ ........                                                                     │
00:00:30 v #5820 > > │ ............................................................................ │
00:00:30 v #5821 > > │ ............................................................................ │
00:00:30 v #5822 > > │ ........                                                                     │
00:00:30 v #5823 > > │ ............................................................................ │
00:00:30 v #5824 > > │ ............................................................................ │
00:00:30 v #5825 > > │ ........                                                                     │
00:00:30 v #5826 > > │ ............................................................................ │
00:00:30 v #5827 > > │ ............................................................................ │
00:00:30 v #5828 > > │ ........                                                                     │
00:00:30 v #5829 > > │ ............................................................................ │
00:00:30 v #5830 > > │ ............................................................................ │
00:00:30 v #5831 > > │ ........                                                                     │
00:00:30 v #5832 > > │ ...............................................;<........................... │
00:00:30 v #5833 > > │ ............................................................................ │
00:00:30 v #5834 > > │ ........                                                                     │
00:00:30 v #5835 > > │ ............................................;;;//<.......................... │
00:00:30 v #5836 > > │ ............................................................................ │
00:00:30 v #5837 > > │ ........                                                                     │
00:00:30 v #5838 > > │ ..........................................;;///////<........................ │
00:00:30 v #5839 > > │ ............................................................................ │
00:00:30 v #5840 > > │ ........                                                                     │
00:00:30 v #5841 > > │ .......................................;////////////<....................... │
00:00:30 v #5842 > > │ ............................................................................ │
00:00:30 v #5843 > > │ ........                                                                     │
00:00:30 v #5844 > > │ ....................................;/////////////////...................... │
00:00:30 v #5845 > > │ ............................................................................ │
00:00:30 v #5846 > > │ ........                                                                     │
00:00:30 v #5847 > > │ .................................;/////////////////////<.................... │
00:00:30 v #5848 > > │ ............................................................................ │
00:00:30 v #5849 > > │ ........                                                                     │
00:00:30 v #5850 > > │ ..............................;;/////////////////////////................... │
00:00:30 v #5851 > > │ ............................................................................ │
00:00:30 v #5852 > > │ ........                                                                     │
00:00:30 v #5853 > > │ ...........................;;/////////////////////////////.................. │
00:00:30 v #5854 > > │ ............................................................................ │
00:00:30 v #5855 > > │ ........                                                                     │
00:00:30 v #5856 > > │ ........................;;//////////////////////////////////................ │
00:00:30 v #5857 > > │ ................;;<......................................................... │
00:00:30 v #5858 > > │ ........                                                                     │
00:00:30 v #5859 > > │ .....................;;//////////////////////////////////////............... │
00:00:30 v #5860 > > │ .............;//////........................................................ │
00:00:30 v #5861 > > │ ........                                                                     │
00:00:30 v #5862 > > │ ..................;///////////////////////////////////////////<............. │
00:00:30 v #5863 > > │ ...........;//////////...................................................... │
00:00:30 v #5864 > > │ ........                                                                     │
00:00:30 v #5865 > > │ ................;///////////////////////////////////////////////............ │
00:00:30 v #5866 > > │ ........;;/////////////......................;.............................. │
00:00:30 v #5867 > > │ ........                                                                     │
00:00:30 v #5868 > > │ ................>>>//////////////////////////////////////////////<.......... │
00:00:30 v #5869 > > │ .....;;/////////////////<.................;;///<............................ │
00:00:30 v #5870 > > │ ........                                                                     │
00:00:30 v #5871 > > │ ................>>>>///////////////////////////////////////////////......... │
00:00:30 v #5872 > > │ ...;>/////////////////////.............;;////////........................... │
00:00:30 v #5873 > > │ ........                                                                     │
00:00:30 v #5874 > > │ ................;>>>>>//////////////////////////////////////////////<....... │
00:00:30 v #5875 > > │ .;;>>>/////////////////////<.........;;;>/////////<......................... │
00:00:30 v #5876 > > │ ........                                                                     │
00:00:30 v #5877 > > │ ..................>>>>>//////////////////////////////////////////////<...... │
00:00:30 v #5878 > > │ ..>>>>>>////////////////////..........>>>>/////////......................... │
00:00:30 v #5879 > > │ ........                                                                     │
00:00:30 v #5880 > > │ ...................>>>>>//////////////////////////////////////////////...... │
00:00:30 v #5881 > > │ ....>>>>>//////////////////............>>>>>/////........................... │
00:00:30 v #5882 > > │ ........                                                                     │
00:00:30 v #5883 > > │ .....................>>>>>//////////////////////////////////////////........ │
00:00:30 v #5884 > > │ .....>>>>>>/////////////.................>>>>/.............................. │
00:00:30 v #5885 > > │ ........                                                                     │
00:00:30 v #5886 > > │ ......................>>>>>>/////////////////////////////////////........... │
00:00:30 v #5887 > > │ .......>>>>>//////////...................................................... │
00:00:30 v #5888 > > │ ........                                                                     │
00:00:30 v #5889 > > │ ........................>>>>>//////////////////////////////////............. │
00:00:30 v #5890 > > │ ........>>>>>>/////......................................................... │
00:00:30 v #5891 > > │ ........                                                                     │
00:00:30 v #5892 > > │ ..........................>>>>>//////////////////////////////............... │
00:00:30 v #5893 > > │ ..........>>>>>//........................................................... │
00:00:30 v #5894 > > │ ........                                                                     │
00:00:30 v #5895 > > │ ...........................>>>>>///////////////////////////................. │
00:00:30 v #5896 > > │ ............................................................................ │
00:00:30 v #5897 > > │ ........                                                                     │
00:00:30 v #5898 > > │ .............................>>>>>///////////////////////................... │
00:00:30 v #5899 > > │ ............................................................................ │
00:00:30 v #5900 > > │ ........                                                                     │
00:00:30 v #5901 > > │ ..............................>>>>>///////////////////...................... │
00:00:30 v #5902 > > │ ............................................................................ │
00:00:30 v #5903 > > │ ........                                                                     │
00:00:30 v #5904 > > │ ................................>>>>>///////////////........................ │
00:00:30 v #5905 > > │ ............................................................................ │
00:00:30 v #5906 > > │ ........                                                                     │
00:00:30 v #5907 > > │ .................................>>>>>>///////////.......................... │
00:00:30 v #5908 > > │ ............................................................................ │
00:00:30 v #5909 > > │ ........                                                                     │
00:00:30 v #5910 > > │ ...................................=>>>>///////............................. │
00:00:30 v #5911 > > │ ............................................................................ │
00:00:30 v #5912 > > │ ........                                                                     │
00:00:30 v #5913 > > │ ......................................>>>>///............................... │
00:00:30 v #5914 > > │ ............................................................................ │
00:00:30 v #5915 > > │ ........                                                                     │
00:00:30 v #5916 > > │ ........................................=>/................................. │
00:00:30 v #5917 > > │ ............................................................................ │
00:00:30 v #5918 > > │ ........                                                                     │
00:00:30 v #5919 > > │ ............................................................................ │
00:00:30 v #5920 > > │ ............................................................................ │
00:00:30 v #5921 > > │ ........                                                                     │
00:00:30 v #5922 > > │ ............................................................................ │
00:00:30 v #5923 > > │ ............................................................................ │
00:00:30 v #5924 > > │ ........                                                                     │
00:00:30 v #5925 > > │ ............................................................................ │
00:00:30 v #5926 > > │ ............................................................................ │
00:00:30 v #5927 > > │ ........                                                                     │
00:00:30 v #5928 > > │ ............................................................................ │
00:00:30 v #5929 > > │ ............................................................................ │
00:00:30 v #5930 > > │ ........                                                                     │
00:00:30 v #5931 > > │ ............................................................................ │
00:00:30 v #5932 > > │ ............................................................................ │
00:00:30 v #5933 > > │ ........                                                                     │
00:00:30 v #5934 > > │ ............................................................................ │
00:00:30 v #5935 > > │ ............................................................................ │
00:00:30 v #5936 > > │ ........                                                                     │
00:00:30 v #5937 > > │ ............................................................................ │
00:00:30 v #5938 > > │ ............................................................................ │
00:00:30 v #5939 > > │ ........                                                                     │
00:00:30 v #5940 > > │ ............................................................................ │
00:00:30 v #5941 > > │ ............................................................................ │
00:00:30 v #5942 > > │ ........                                                                     │
00:00:30 v #5943 > > │                                                                              │
00:00:30 v #5944 > > │ ............................................................................ │
00:00:30 v #5945 > > │ ............................................................................ │
00:00:30 v #5946 > > │ ........                                                                     │
00:00:30 v #5947 > > │ ............................................................................ │
00:00:30 v #5948 > > │ ............................................................................ │
00:00:30 v #5949 > > │ ........                                                                     │
00:00:30 v #5950 > > │ ............................................................................ │
00:00:30 v #5951 > > │ ............................................................................ │
00:00:30 v #5952 > > │ ........                                                                     │
00:00:30 v #5953 > > │ ............................................................................ │
00:00:30 v #5954 > > │ ............................................................................ │
00:00:30 v #5955 > > │ ........                                                                     │
00:00:30 v #5956 > > │ ............................................................................ │
00:00:30 v #5957 > > │ ............................................................................ │
00:00:30 v #5958 > > │ ........                                                                     │
00:00:30 v #5959 > > │ ............................................................................ │
00:00:30 v #5960 > > │ ............................................................................ │
00:00:30 v #5961 > > │ ........                                                                     │
00:00:30 v #5962 > > │ ............................................................................ │
00:00:30 v #5963 > > │ ............................................................................ │
00:00:30 v #5964 > > │ ........                                                                     │
00:00:30 v #5965 > > │ ..............................................;/............................ │
00:00:30 v #5966 > > │ ............................................................................ │
00:00:30 v #5967 > > │ ........                                                                     │
00:00:30 v #5968 > > │ ............................................;////........................... │
00:00:30 v #5969 > > │ ............................................................................ │
00:00:30 v #5970 > > │ ........                                                                     │
00:00:30 v #5971 > > │ .........................................;;///////<......................... │
00:00:30 v #5972 > > │ ............................................................................ │
00:00:30 v #5973 > > │ ........                                                                     │
00:00:30 v #5974 > > │ ......................................;;////////////........................ │
00:00:30 v #5975 > > │ ............................................................................ │
00:00:30 v #5976 > > │ ........                                                                     │
00:00:30 v #5977 > > │ ....................................;;///////////////<...................... │
00:00:30 v #5978 > > │ ............................................................................ │
00:00:30 v #5979 > > │ ........                                                                     │
00:00:30 v #5980 > > │ .................................;/////////////////////<.................... │
00:00:30 v #5981 > > │ ............................................................................ │
00:00:30 v #5982 > > │ ........                                                                     │
00:00:30 v #5983 > > │ ..............................;;;////////////////////////................... │
00:00:30 v #5984 > > │ ............................................................................ │
00:00:30 v #5985 > > │ ........                                                                     │
00:00:30 v #5986 > > │ ............................;/////////////////////////////<................. │
00:00:30 v #5987 > > │ ............................................................................ │
00:00:30 v #5988 > > │ ........                                                                     │
00:00:30 v #5989 > > │ .........................;;/////////////////////////////////................ │
00:00:30 v #5990 > > │ ...............;;/.......................................................... │
00:00:30 v #5991 > > │ ........                                                                     │
00:00:30 v #5992 > > │ .......................;;/////////////////////////////////////.............. │
00:00:30 v #5993 > > │ .............;;/////........................................................ │
00:00:30 v #5994 > > │ ........                                                                     │
00:00:30 v #5995 > > │ ....................;;/////////////////////////////////////////............. │
00:00:30 v #5996 > > │ ...........;//////////...................................................... │
00:00:30 v #5997 > > │ ........                                                                     │
00:00:30 v #5998 > > │ ..................;;/////////////////////////////////////////////........... │
00:00:30 v #5999 > > │ ........;;/////////////......................;.............................. │
00:00:30 v #6000 > > │ ........                                                                     │
00:00:30 v #6001 > > │ ................;;>///////////////////////////////////////////////<......... │
00:00:30 v #6002 > > │ ......;;/////////////////.................;;///<............................ │
00:00:30 v #6003 > > │ ........                                                                     │
00:00:30 v #6004 > > │ ................;>>>////////////////////////////////////////////////........ │
00:00:30 v #6005 > > │ ...;;/////////////////////.............\;////////<.......................... │
00:00:30 v #6006 > > │ ........                                                                     │
00:00:30 v #6007 > > │ ................>>>>>>///////////////////////////////////////////////<...... │
00:00:30 v #6008 > > │ .;;;>>>/////////////////////.........;;;>//////////......................... │
00:00:30 v #6009 > > │ ........                                                                     │
00:00:30 v #6010 > > │ ................>>>>>>>>//////////////////////////////////////////////...... │
00:00:30 v #6011 > > │ .>>>>>>>////////////////////.........>>>>>>////////......................... │
00:00:30 v #6012 > > │ ........                                                                     │
00:00:30 v #6013 > > │ ..................>>>>>>>>//////////////////////////////////////////........ │
00:00:30 v #6014 > > │ ...>>>>>>>////////////////.............>>>>>/////........................... │
00:00:30 v #6015 > > │ ........                                                                     │
00:00:30 v #6016 > > │ ...................\>>>>>>>///////////////////////////////////////.......... │
00:00:30 v #6017 > > │ .....>>>>>>>////////////.................>>>>//............................. │
00:00:30 v #6018 > > │ ........                                                                     │
00:00:30 v #6019 > > │ .....................>>>>>>>>///////////////////////////////////............ │
00:00:30 v #6020 > > │ ......>>>>>>>/////////...................................................... │
00:00:30 v #6021 > > │ ........                                                                     │
00:00:30 v #6022 > > │ .......................>>>>>>>>///////////////////////////////.............. │
00:00:30 v #6023 > > │ ........>>>>>>>/////........................................................ │
00:00:30 v #6024 > > │ ........                                                                     │
00:00:30 v #6025 > > │ .........................>>>>>>>/////////////////////////////............... │
00:00:30 v #6026 > > │ ..........>>>>>>//.......................................................... │
00:00:30 v #6027 > > │ ........                                                                     │
00:00:30 v #6028 > > │ ..........................>>>>>>>>/////////////////////////................. │
00:00:30 v #6029 > > │ ............................................................................ │
00:00:30 v #6030 > > │ ........                                                                     │
00:00:30 v #6031 > > │ ............................>>>>>>>>/////////////////////................... │
00:00:30 v #6032 > > │ ............................................................................ │
00:00:30 v #6033 > > │ ........                                                                     │
00:00:30 v #6034 > > │ ..............................>>>>>>>>/////////////////..................... │
00:00:30 v #6035 > > │ ............................................................................ │
00:00:30 v #6036 > > │ ........                                                                     │
00:00:30 v #6037 > > │ ................................>>>>>>>//////////////....................... │
00:00:30 v #6038 > > │ ............................................................................ │
00:00:30 v #6039 > > │ ........                                                                     │
00:00:30 v #6040 > > │ .................................>>>>>>>>//////////......................... │
00:00:30 v #6041 > > │ ............................................................................ │
00:00:30 v #6042 > > │ ........                                                                     │
00:00:30 v #6043 > > │ ....................................>>>>>>>//////........................... │
00:00:30 v #6044 > > │ ............................................................................ │
00:00:30 v #6045 > > │ ........                                                                     │
00:00:30 v #6046 > > │ ........................................>>>>///............................. │
00:00:30 v #6047 > > │ ............................................................................ │
00:00:30 v #6048 > > │ ........                                                                     │
00:00:30 v #6049 > > │ ...........................................>>/.............................. │
00:00:30 v #6050 > > │ ............................................................................ │
00:00:30 v #6051 > > │ ........                                                                     │
00:00:30 v #6052 > > │ ............................................................................ │
00:00:30 v #6053 > > │ ............................................................................ │
00:00:30 v #6054 > > │ ........                                                                     │
00:00:30 v #6055 > > │ ............................................................................ │
00:00:30 v #6056 > > │ ............................................................................ │
00:00:30 v #6057 > > │ ........                                                                     │
00:00:30 v #6058 > > │ ............................................................................ │
00:00:30 v #6059 > > │ ............................................................................ │
00:00:30 v #6060 > > │ ........                                                                     │
00:00:30 v #6061 > > │ ............................................................................ │
00:00:30 v #6062 > > │ ............................................................................ │
00:00:30 v #6063 > > │ ........                                                                     │
00:00:30 v #6064 > > │ ............................................................................ │
00:00:30 v #6065 > > │ ............................................................................ │
00:00:30 v #6066 > > │ ........                                                                     │
00:00:30 v #6067 > > │ ............................................................................ │
00:00:30 v #6068 > > │ ............................................................................ │
00:00:30 v #6069 > > │ ........                                                                     │
00:00:30 v #6070 > > │ ............................................................................ │
00:00:30 v #6071 > > │ ............................................................................ │
00:00:30 v #6072 > > │ ........                                                                     │
00:00:30 v #6073 > > │ ............................................................................ │
00:00:30 v #6074 > > │ ............................................................................ │
00:00:30 v #6075 > > │ ........                                                                     │
00:00:30 v #6076 > > │                                                                              │
00:00:30 v #6077 > > │ ............................................................................ │
00:00:30 v #6078 > > │ ............................................................................ │
00:00:30 v #6079 > > │ ........                                                                     │
00:00:30 v #6080 > > │ ............................................................................ │
00:00:30 v #6081 > > │ ............................................................................ │
00:00:30 v #6082 > > │ ........                                                                     │
00:00:30 v #6083 > > │ ............................................................................ │
00:00:30 v #6084 > > │ ............................................................................ │
00:00:30 v #6085 > > │ ........                                                                     │
00:00:30 v #6086 > > │ ............................................................................ │
00:00:30 v #6087 > > │ ............................................................................ │
00:00:30 v #6088 > > │ ........                                                                     │
00:00:30 v #6089 > > │ ............................................................................ │
00:00:30 v #6090 > > │ ............................................................................ │
00:00:30 v #6091 > > │ ........                                                                     │
00:00:30 v #6092 > > │ ............................................................................ │
00:00:30 v #6093 > > │ ............................................................................ │
00:00:30 v #6094 > > │ ........                                                                     │
00:00:30 v #6095 > > │ ............................................................................ │
00:00:30 v #6096 > > │ ............................................................................ │
00:00:30 v #6097 > > │ ........                                                                     │
00:00:30 v #6098 > > │ .............................................;/............................. │
00:00:30 v #6099 > > │ ............................................................................ │
00:00:30 v #6100 > > │ ........                                                                     │
00:00:30 v #6101 > > │ ...........................................;;////........................... │
00:00:30 v #6102 > > │ ............................................................................ │
00:00:30 v #6103 > > │ ........                                                                     │
00:00:30 v #6104 > > │ ........................................;;////////<......................... │
00:00:30 v #6105 > > │ ............................................................................ │
00:00:30 v #6106 > > │ ........                                                                     │
00:00:30 v #6107 > > │ ......................................;/////////////........................ │
00:00:30 v #6108 > > │ ............................................................................ │
00:00:30 v #6109 > > │ ........                                                                     │
00:00:30 v #6110 > > │ ....................................;/////////////////...................... │
00:00:30 v #6111 > > │ ............................................................................ │
00:00:30 v #6112 > > │ ........                                                                     │
00:00:30 v #6113 > > │ .................................;;////////////////////<.................... │
00:00:30 v #6114 > > │ ............................................................................ │
00:00:30 v #6115 > > │ ........                                                                     │
00:00:30 v #6116 > > │ ...............................;/////////////////////////................... │
00:00:30 v #6117 > > │ ............................................................................ │
00:00:30 v #6118 > > │ ........                                                                     │
00:00:30 v #6119 > > │ .............................;/////////////////////////////................. │
00:00:30 v #6120 > > │ ............................................................................ │
00:00:30 v #6121 > > │ ........                                                                     │
00:00:30 v #6122 > > │ ..........................;;////////////////////////////////<............... │
00:00:30 v #6123 > > │ ...............;;/.......................................................... │
00:00:30 v #6124 > > │ ........                                                                     │
00:00:30 v #6125 > > │ ........................;;////////////////////////////////////.............. │
00:00:30 v #6126 > > │ ............;;//////........................................................ │
00:00:30 v #6127 > > │ ........                                                                     │
00:00:30 v #6128 > > │ ......................;/////////////////////////////////////////............ │
00:00:30 v #6129 > > │ ..........;;//////////...................................................... │
00:00:30 v #6130 > > │ ........                                                                     │
00:00:30 v #6131 > > │ ...................;;////////////////////////////////////////////<.......... │
00:00:30 v #6132 > > │ ........;;;////////////<....................;;.............................. │
00:00:30 v #6133 > > │ ........                                                                     │
00:00:30 v #6134 > > │ .................;;////////////////////////////////////////////////<........ │
00:00:30 v #6135 > > │ ......;;/////////////////................;;;////............................ │
00:00:30 v #6136 > > │ ........                                                                     │
00:00:30 v #6137 > > │ ................;;>>>////////////////////////////////////////////////....... │
00:00:30 v #6138 > > │ ....;;/////////////////////............\;;///////<.......................... │
00:00:30 v #6139 > > │ ........                                                                     │
00:00:30 v #6140 > > │ ................;>>>>>>///////////////////////////////////////////////...... │
00:00:30 v #6141 > > │ .;;;;>>/////////////////////.........;;;>//////////......................... │
00:00:30 v #6142 > > │ ........                                                                     │
00:00:30 v #6143 > > │ ...............;>>>>>>>>/////////////////////////////////////////////....... │
00:00:30 v #6144 > > │ .;>>>>>>>///////////////////.........;>>>>>////////......................... │
00:00:30 v #6145 > > │ ........                                                                     │
00:00:30 v #6146 > > │ ................>>>>>>>>>>/////////////////////////////////////////......... │
00:00:30 v #6147 > > │ ..>>>>>>>>>///////////////.............>>>>>>////........................... │
00:00:30 v #6148 > > │ ........                                                                     │
00:00:30 v #6149 > > │ ..................>>>>>>>>>>>////////////////////////////////////........... │
00:00:30 v #6150 > > │ ....>>>>>>>>>///////////................\>>>>>/............................. │
00:00:30 v #6151 > > │ ........                                                                     │
00:00:30 v #6152 > > │ ....................>>>>>>>>>>//////////////////////////////////............ │
00:00:30 v #6153 > > │ ......>>>>>>>>////////...................................................... │
00:00:30 v #6154 > > │ ........                                                                     │
00:00:30 v #6155 > > │ ......................>>>>>>>>>>//////////////////////////////.............. │
00:00:30 v #6156 > > │ ........>>>>>>>>////........................................................ │
00:00:30 v #6157 > > │ ........                                                                     │
00:00:30 v #6158 > > │ ........................>>>>>>>>>>///////////////////////////............... │
00:00:30 v #6159 > > │ ..........>>>>>>>//......................................................... │
00:00:30 v #6160 > > │ ........                                                                     │
00:00:30 v #6161 > > │ ..........................>>>>>>>>>>///////////////////////................. │
00:00:30 v #6162 > > │ ............................................................................ │
00:00:30 v #6163 > > │ ........                                                                     │
00:00:30 v #6164 > > │ ............................>>>>>>>>>>///////////////////................... │
00:00:30 v #6165 > > │ ............................................................................ │
00:00:30 v #6166 > > │ ........                                                                     │
00:00:30 v #6167 > > │ ..............................>>>>>>>>>>////////////////.................... │
00:00:30 v #6168 > > │ ............................................................................ │
00:00:30 v #6169 > > │ ........                                                                     │
00:00:30 v #6170 > > │ ................................>>>>>>>>>>////////////...................... │
00:00:30 v #6171 > > │ ............................................................................ │
00:00:30 v #6172 > > │ ........                                                                     │
00:00:30 v #6173 > > │ ..................................>>>>>>>>>>////////........................ │
00:00:30 v #6174 > > │ ............................................................................ │
00:00:30 v #6175 > > │ ........                                                                     │
00:00:30 v #6176 > > │ ....................................=>>>>>>>>>/////......................... │
00:00:30 v #6177 > > │ ............................................................................ │
00:00:30 v #6178 > > │ ........                                                                     │
00:00:30 v #6179 > > │ ..........................................>>>>>//........................... │
00:00:30 v #6180 > > │ ............................................................................ │
00:00:30 v #6181 > > │ ........                                                                     │
00:00:30 v #6182 > > │ .............................................../............................ │
00:00:30 v #6183 > > │ ............................................................................ │
00:00:30 v #6184 > > │ ........                                                                     │
00:00:30 v #6185 > > │ ............................................................................ │
00:00:30 v #6186 > > │ ............................................................................ │
00:00:30 v #6187 > > │ ........                                                                     │
00:00:30 v #6188 > > │ ............................................................................ │
00:00:30 v #6189 > > │ ............................................................................ │
00:00:30 v #6190 > > │ ........                                                                     │
00:00:30 v #6191 > > │ ............................................................................ │
00:00:30 v #6192 > > │ ............................................................................ │
00:00:30 v #6193 > > │ ........                                                                     │
00:00:30 v #6194 > > │ ............................................................................ │
00:00:30 v #6195 > > │ ............................................................................ │
00:00:30 v #6196 > > │ ........                                                                     │
00:00:30 v #6197 > > │ ............................................................................ │
00:00:30 v #6198 > > │ ............................................................................ │
00:00:30 v #6199 > > │ ........                                                                     │
00:00:30 v #6200 > > │ ............................................................................ │
00:00:30 v #6201 > > │ ............................................................................ │
00:00:30 v #6202 > > │ ........                                                                     │
00:00:30 v #6203 > > │ ............................................................................ │
00:00:30 v #6204 > > │ ............................................................................ │
00:00:30 v #6205 > > │ ........                                                                     │
00:00:30 v #6206 > > │ ............................................................................ │
00:00:30 v #6207 > > │ ............................................................................ │
00:00:30 v #6208 > > │ ........                                                                     │
00:00:30 v #6209 > > │                                                                              │
00:00:30 v #6210 > > │ ............................................................................ │
00:00:30 v #6211 > > │ ............................................................................ │
00:00:30 v #6212 > > │ ........                                                                     │
00:00:30 v #6213 > > │ ............................................................................ │
00:00:30 v #6214 > > │ ............................................................................ │
00:00:30 v #6215 > > │ ........                                                                     │
00:00:30 v #6216 > > │ ............................................................................ │
00:00:30 v #6217 > > │ ............................................................................ │
00:00:30 v #6218 > > │ ........                                                                     │
00:00:30 v #6219 > > │ ............................................................................ │
00:00:30 v #6220 > > │ ............................................................................ │
00:00:30 v #6221 > > │ ........                                                                     │
00:00:30 v #6222 > > │ ............................................................................ │
00:00:30 v #6223 > > │ ............................................................................ │
00:00:30 v #6224 > > │ ........                                                                     │
00:00:30 v #6225 > > │ ............................................................................ │
00:00:30 v #6226 > > │ ............................................................................ │
00:00:30 v #6227 > > │ ........                                                                     │
00:00:30 v #6228 > > │ ............................................................................ │
00:00:30 v #6229 > > │ ............................................................................ │
00:00:30 v #6230 > > │ ........                                                                     │
00:00:30 v #6231 > > │ ............................................;;.............................. │
00:00:30 v #6232 > > │ ............................................................................ │
00:00:30 v #6233 > > │ ........                                                                     │
00:00:30 v #6234 > > │ ..........................................;;////............................ │
00:00:30 v #6235 > > │ ............................................................................ │
00:00:30 v #6236 > > │ ........                                                                     │
00:00:30 v #6237 > > │ ........................................;;////////.......................... │
00:00:30 v #6238 > > │ ............................................................................ │
00:00:30 v #6239 > > │ ........                                                                     │
00:00:30 v #6240 > > │ ......................................;////////////<........................ │
00:00:30 v #6241 > > │ ............................................................................ │
00:00:30 v #6242 > > │ ........                                                                     │
00:00:30 v #6243 > > │ ....................................;////////////////<...................... │
00:00:30 v #6244 > > │ ............................................................................ │
00:00:30 v #6245 > > │ ........                                                                     │
00:00:30 v #6246 > > │ ..................................;////////////////////<.................... │
00:00:30 v #6247 > > │ ............................................................................ │
00:00:30 v #6248 > > │ ........                                                                     │
00:00:30 v #6249 > > │ ................................;////////////////////////<.................. │
00:00:30 v #6250 > > │ ............................................................................ │
00:00:30 v #6251 > > │ ........                                                                     │
00:00:30 v #6252 > > │ ..............................;////////////////////////////................. │
00:00:30 v #6253 > > │ ............................................................................ │
00:00:30 v #6254 > > │ ........                                                                     │
00:00:30 v #6255 > > │ ............................;////////////////////////////////............... │
00:00:30 v #6256 > > │ ..............;;//.......................................................... │
00:00:30 v #6257 > > │ ........                                                                     │
00:00:30 v #6258 > > │ ..........................;////////////////////////////////////............. │
00:00:30 v #6259 > > │ ............;;//////........................................................ │
00:00:30 v #6260 > > │ ........                                                                     │
00:00:30 v #6261 > > │ ........................;///////////////////////////////////////<........... │
00:00:30 v #6262 > > │ .........;;;//////////...................................................... │
00:00:30 v #6263 > > │ ........                                                                     │
00:00:30 v #6264 > > │ ......................;///////////////////////////////////////////<......... │
00:00:30 v #6265 > > │ .......\;;//////////////....................;<.............................. │
00:00:30 v #6266 > > │ ........                                                                     │
00:00:30 v #6267 > > │ ....................;;//////////////////////////////////////////////<....... │
00:00:30 v #6268 > > │ ......;;;/////////////////...............;;;///<............................ │
00:00:30 v #6269 > > │ ........                                                                     │
00:00:30 v #6270 > > │ ..................;;>////////////////////////////////////////////////....... │
00:00:30 v #6271 > > │ ....;;;/////////////////////...........;;;///////<.......................... │
00:00:30 v #6272 > > │ ........                                                                     │
00:00:30 v #6273 > > │ ................;;>>>>>//////////////////////////////////////////////....... │
00:00:30 v #6274 > > │ ..;;;;>/////////////////////..........;;;//////////......................... │
00:00:30 v #6275 > > │ ........                                                                     │
00:00:30 v #6276 > > │ ...............;;>>>>>>>>//////////////////////////////////////////......... │
00:00:30 v #6277 > > │ \;;>>>>>>//////////////////..........;;>>>>////////......................... │
00:00:30 v #6278 > > │ ........                                                                     │
00:00:30 v #6279 > > │ ..............;>>>>>>>>>>>>///////////////////////////////////////.......... │
00:00:30 v #6280 > > │ .>>>>>>>>>>///////////////.............>>>>>>////........................... │
00:00:30 v #6281 > > │ ........                                                                     │
00:00:30 v #6282 > > │ ................>>>>>>>>>>>>>////////////////////////////////////........... │
00:00:30 v #6283 > > │ ....>>>>>>>>>>//////////.................>>>>>/............................. │
00:00:30 v #6284 > > │ ........                                                                     │
00:00:30 v #6285 > > │ ..................>>>>>>>>>>>>>>///////////////////////////////............. │
00:00:30 v #6286 > > │ .....\>>>>>>>>>////////...................=................................. │
00:00:30 v #6287 > > │ ........                                                                     │
00:00:30 v #6288 > > │ ....................\>>>>>>>>>>>>>////////////////////////////.............. │
00:00:30 v #6289 > > │ ........>>>>>>>>>////....................................................... │
00:00:30 v #6290 > > │ ........                                                                     │
00:00:30 v #6291 > > │ .......................>>>>>>>>>>>>>/////////////////////////............... │
00:00:30 v #6292 > > │ ..........>>>>>>>>>/........................................................ │
00:00:30 v #6293 > > │ ........                                                                     │
00:00:30 v #6294 > > │ .........................>>>>>>>>>>>>>/////////////////////................. │
00:00:30 v #6295 > > │ ............................................................................ │
00:00:30 v #6296 > > │ ........                                                                     │
00:00:30 v #6297 > > │ ...........................>>>>>>>>>>>>>//////////////////.................. │
00:00:30 v #6298 > > │ ............................................................................ │
00:00:30 v #6299 > > │ ........                                                                     │
00:00:30 v #6300 > > │ .............................>>>>>>>>>>>>>///////////////................... │
00:00:30 v #6301 > > │ ............................................................................ │
00:00:30 v #6302 > > │ ........                                                                     │
00:00:30 v #6303 > > │ ...............................>>>>>>>>>>>>>>//////////..................... │
00:00:30 v #6304 > > │ ............................................................................ │
00:00:30 v #6305 > > │ ........                                                                     │
00:00:30 v #6306 > > │ ..................................>>>>>>>>>>>>>///////...................... │
00:00:30 v #6307 > > │ ............................................................................ │
00:00:30 v #6308 > > │ ........                                                                     │
00:00:30 v #6309 > > │ ....................................=>>>>>>>>>>>>////....................... │
00:00:30 v #6310 > > │ ............................................................................ │
00:00:30 v #6311 > > │ ........                                                                     │
00:00:30 v #6312 > > │ ............................................=>>>>>/......................... │
00:00:30 v #6313 > > │ ............................................................................ │
00:00:30 v #6314 > > │ ........                                                                     │
00:00:30 v #6315 > > │ ............................................................................ │
00:00:30 v #6316 > > │ ............................................................................ │
00:00:30 v #6317 > > │ ........                                                                     │
00:00:30 v #6318 > > │ ............................................................................ │
00:00:30 v #6319 > > │ ............................................................................ │
00:00:30 v #6320 > > │ ........                                                                     │
00:00:30 v #6321 > > │ ............................................................................ │
00:00:30 v #6322 > > │ ............................................................................ │
00:00:30 v #6323 > > │ ........                                                                     │
00:00:30 v #6324 > > │ ............................................................................ │
00:00:30 v #6325 > > │ ............................................................................ │
00:00:30 v #6326 > > │ ........                                                                     │
00:00:30 v #6327 > > │ ............................................................................ │
00:00:30 v #6328 > > │ ............................................................................ │
00:00:30 v #6329 > > │ ........                                                                     │
00:00:30 v #6330 > > │ ............................................................................ │
00:00:30 v #6331 > > │ ............................................................................ │
00:00:30 v #6332 > > │ ........                                                                     │
00:00:30 v #6333 > > │ ............................................................................ │
00:00:30 v #6334 > > │ ............................................................................ │
00:00:30 v #6335 > > │ ........                                                                     │
00:00:30 v #6336 > > │ ............................................................................ │
00:00:30 v #6337 > > │ ............................................................................ │
00:00:30 v #6338 > > │ ........                                                                     │
00:00:30 v #6339 > > │ ............................................................................ │
00:00:30 v #6340 > > │ ............................................................................ │
00:00:30 v #6341 > > │ ........                                                                     │
00:00:30 v #6342 > > │                                                                              │
00:00:30 v #6343 > > │ ............................................................................ │
00:00:30 v #6344 > > │ ............................................................................ │
00:00:30 v #6345 > > │ ........                                                                     │
00:00:30 v #6346 > > │ ............................................................................ │
00:00:30 v #6347 > > │ ............................................................................ │
00:00:30 v #6348 > > │ ........                                                                     │
00:00:30 v #6349 > > │ ............................................................................ │
00:00:30 v #6350 > > │ ............................................................................ │
00:00:30 v #6351 > > │ ........                                                                     │
00:00:30 v #6352 > > │ ............................................................................ │
00:00:30 v #6353 > > │ ............................................................................ │
00:00:30 v #6354 > > │ ........                                                                     │
00:00:30 v #6355 > > │ ............................................................................ │
00:00:30 v #6356 > > │ ............................................................................ │
00:00:30 v #6357 > > │ ........                                                                     │
00:00:30 v #6358 > > │ ............................................................................ │
00:00:30 v #6359 > > │ ............................................................................ │
00:00:30 v #6360 > > │ ........                                                                     │
00:00:30 v #6361 > > │ ............................................................................ │
00:00:30 v #6362 > > │ ............................................................................ │
00:00:30 v #6363 > > │ ........                                                                     │
00:00:30 v #6364 > > │ ...........................................;/<.............................. │
00:00:30 v #6365 > > │ ............................................................................ │
00:00:30 v #6366 > > │ ........                                                                     │
00:00:30 v #6367 > > │ .........................................;;////<............................ │
00:00:30 v #6368 > > │ ............................................................................ │
00:00:30 v #6369 > > │ ........                                                                     │
00:00:30 v #6370 > > │ .......................................;;////////<.......................... │
00:00:30 v #6371 > > │ ............................................................................ │
00:00:30 v #6372 > > │ ........                                                                     │
00:00:30 v #6373 > > │ .....................................;;////////////<........................ │
00:00:30 v #6374 > > │ ............................................................................ │
00:00:30 v #6375 > > │ ........                                                                     │
00:00:30 v #6376 > > │ ...................................;;;///////////////<...................... │
00:00:30 v #6377 > > │ ............................................................................ │
00:00:30 v #6378 > > │ ........                                                                     │
00:00:30 v #6379 > > │ .................................;;////////////////////<.................... │
00:00:30 v #6380 > > │ ............................................................................ │
00:00:30 v #6381 > > │ ........                                                                     │
00:00:30 v #6382 > > │ ................................;;///////////////////////<.................. │
00:00:30 v #6383 > > │ ............................................................................ │
00:00:30 v #6384 > > │ ........                                                                     │
00:00:30 v #6385 > > │ ..............................;;///////////////////////////<................ │
00:00:30 v #6386 > > │ ............................................................................ │
00:00:30 v #6387 > > │ ........                                                                     │
00:00:30 v #6388 > > │ ............................;;///////////////////////////////<.............. │
00:00:30 v #6389 > > │ ..............;;//.......................................................... │
00:00:30 v #6390 > > │ ........                                                                     │
00:00:30 v #6391 > > │ ..........................;;;//////////////////////////////////............. │
00:00:30 v #6392 > > │ ...........;;;//////........................................................ │
00:00:30 v #6393 > > │ ........                                                                     │
00:00:30 v #6394 > > │ .........................;;//////////////////////////////////////........... │
00:00:30 v #6395 > > │ .........;;;//////////...................................................... │
00:00:30 v #6396 > > │ ........                                                                     │
00:00:30 v #6397 > > │ .......................;;//////////////////////////////////////////<........ │
00:00:30 v #6398 > > │ .......;;;;/////////////....................;/.............................. │
00:00:30 v #6399 > > │ ........                                                                     │
00:00:30 v #6400 > > │ .....................;;//////////////////////////////////////////////....... │
00:00:30 v #6401 > > │ .....;;;;/////////////////...............;;;////............................ │
00:00:30 v #6402 > > │ ........                                                                     │
00:00:30 v #6403 > > │ ...................;;;///////////////////////////////////////////////....... │
00:00:30 v #6404 > > │ ....;;;;////////////////////...........;;;////////.......................... │
00:00:30 v #6405 > > │ ........                                                                     │
00:00:30 v #6406 > > │ ..................;;>>>>////////////////////////////////////////////........ │
00:00:30 v #6407 > > │ ..;;;;;>////////////////////..........;;;//////////......................... │
00:00:30 v #6408 > > │ ........                                                                     │
00:00:30 v #6409 > > │ ................;;>>>>>>>>////////////////////////////////////////.......... │
00:00:30 v #6410 > > │ .;;;>>>>>>/////////////////..........;;>>>>///////.......................... │
00:00:30 v #6411 > > │ ........                                                                     │
00:00:30 v #6412 > > │ ..............;;>>>>>>>>>>>>/////////////////////////////////////........... │
00:00:30 v #6413 > > │ ;>>>>>>>>>>>/////////////.............>>>>>>>>///........................... │
00:00:30 v #6414 > > │ ........                                                                     │
00:00:30 v #6415 > > │ ..............>>>>>>>>>>>>>>>>>/////////////////////////////////............ │
00:00:30 v #6416 > > │ ...>>>>>>>>>>>//////////................\>>>>>>/............................ │
00:00:30 v #6417 > > │ ........                                                                     │
00:00:30 v #6418 > > │ ................\>>>>>>>>>>>>>>>>//////////////////////////////............. │
00:00:30 v #6419 > > │ .....>>>>>>>>>>>///////....................=................................ │
00:00:30 v #6420 > > │ ........                                                                     │
00:00:30 v #6421 > > │ ...................>>>>>>>>>>>>>>>>///////////////////////////.............. │
00:00:30 v #6422 > > │ .......>>>>>>>>>>>>///...................................................... │
00:00:30 v #6423 > > │ ........                                                                     │
00:00:30 v #6424 > > │ .....................\>>>>>>>>>>>>>>>>///////////////////////............... │
00:00:30 v #6425 > > │ ..........>>>>>>>>>>........................................................ │
00:00:30 v #6426 > > │ ........                                                                     │
00:00:30 v #6427 > > │ ........................>>>>>>>>>>>>>>>>////////////////////................ │
00:00:30 v #6428 > > │ ............................................................................ │
00:00:30 v #6429 > > │ ........                                                                     │
00:00:30 v #6430 > > │ ..........................>>>>>>>>>>>>>>>>/////////////////................. │
00:00:30 v #6431 > > │ ............................................................................ │
00:00:30 v #6432 > > │ ........                                                                     │
00:00:30 v #6433 > > │ .............................>>>>>>>>>>>>>>>>/////////////.................. │
00:00:30 v #6434 > > │ ............................................................................ │
00:00:30 v #6435 > > │ ........                                                                     │
00:00:30 v #6436 > > │ ...............................>>>>>>>>>>>>>>>>/////////.................... │
00:00:30 v #6437 > > │ ............................................................................ │
00:00:30 v #6438 > > │ ........                                                                     │
00:00:30 v #6439 > > │ ..................................>>>>>>>>>>>>>>>>/////..................... │
00:00:30 v #6440 > > │ ............................................................................ │
00:00:30 v #6441 > > │ ........                                                                     │
00:00:30 v #6442 > > │ ....................................=>>>>>>>>>>>>>>>//...................... │
00:00:30 v #6443 > > │ ............................................................................ │
00:00:30 v #6444 > > │ ........                                                                     │
00:00:30 v #6445 > > │ .................................................>>>>....................... │
00:00:30 v #6446 > > │ ............................................................................ │
00:00:30 v #6447 > > │ ........                                                                     │
00:00:30 v #6448 > > │ ............................................................................ │
00:00:30 v #6449 > > │ ............................................................................ │
00:00:30 v #6450 > > │ ........                                                                     │
00:00:30 v #6451 > > │ ............................................................................ │
00:00:30 v #6452 > > │ ............................................................................ │
00:00:30 v #6453 > > │ ........                                                                     │
00:00:30 v #6454 > > │ ............................................................................ │
00:00:30 v #6455 > > │ ............................................................................ │
00:00:30 v #6456 > > │ ........                                                                     │
00:00:30 v #6457 > > │ ............................................................................ │
00:00:30 v #6458 > > │ ............................................................................ │
00:00:30 v #6459 > > │ ........                                                                     │
00:00:30 v #6460 > > │ ............................................................................ │
00:00:30 v #6461 > > │ ............................................................................ │
00:00:30 v #6462 > > │ ........                                                                     │
00:00:30 v #6463 > > │ ............................................................................ │
00:00:30 v #6464 > > │ ............................................................................ │
00:00:30 v #6465 > > │ ........                                                                     │
00:00:30 v #6466 > > │ ............................................................................ │
00:00:30 v #6467 > > │ ............................................................................ │
00:00:30 v #6468 > > │ ........                                                                     │
00:00:30 v #6469 > > │ ............................................................................ │
00:00:30 v #6470 > > │ ............................................................................ │
00:00:30 v #6471 > > │ ........                                                                     │
00:00:30 v #6472 > > │ ............................................................................ │
00:00:30 v #6473 > > │ ............................................................................ │
00:00:30 v #6474 > > │ ........                                                                     │
00:00:30 v #6475 > > │                                                                              │
00:00:30 v #6476 > > │ ............................................................................ │
00:00:30 v #6477 > > │ ............................................................................ │
00:00:30 v #6478 > > │ ........                                                                     │
00:00:30 v #6479 > > │ ............................................................................ │
00:00:30 v #6480 > > │ ............................................................................ │
00:00:30 v #6481 > > │ ........                                                                     │
00:00:30 v #6482 > > │ ............................................................................ │
00:00:30 v #6483 > > │ ............................................................................ │
00:00:30 v #6484 > > │ ........                                                                     │
00:00:30 v #6485 > > │ ............................................................................ │
00:00:30 v #6486 > > │ ............................................................................ │
00:00:30 v #6487 > > │ ........                                                                     │
00:00:30 v #6488 > > │ ............................................................................ │
00:00:30 v #6489 > > │ ............................................................................ │
00:00:30 v #6490 > > │ ........                                                                     │
00:00:30 v #6491 > > │ ............................................................................ │
00:00:30 v #6492 > > │ ............................................................................ │
00:00:30 v #6493 > > │ ........                                                                     │
00:00:30 v #6494 > > │ ............................................................................ │
00:00:30 v #6495 > > │ ............................................................................ │
00:00:30 v #6496 > > │ ........                                                                     │
00:00:30 v #6497 > > │ ..........................................;//............................... │
00:00:30 v #6498 > > │ ............................................................................ │
00:00:30 v #6499 > > │ ........                                                                     │
00:00:30 v #6500 > > │ ........................................;;/////............................. │
00:00:30 v #6501 > > │ ............................................................................ │
00:00:30 v #6502 > > │ ........                                                                     │
00:00:30 v #6503 > > │ ......................................;;/////////........................... │
00:00:30 v #6504 > > │ ............................................................................ │
00:00:30 v #6505 > > │ ........                                                                     │
00:00:30 v #6506 > > │ ....................................;;;////////////......................... │
00:00:30 v #6507 > > │ ............................................................................ │
00:00:30 v #6508 > > │ ........                                                                     │
00:00:30 v #6509 > > │ ..................................;;;////////////////....................... │
00:00:30 v #6510 > > │ ............................................................................ │
00:00:30 v #6511 > > │ ........                                                                     │
00:00:30 v #6512 > > │ ................................;;;;///////////////////<.................... │
00:00:30 v #6513 > > │ ............................................................................ │
00:00:30 v #6514 > > │ ........                                                                     │
00:00:30 v #6515 > > │ ..............................;;;;///////////////////////<.................. │
00:00:30 v #6516 > > │ ............................................................................ │
00:00:30 v #6517 > > │ ........                                                                     │
00:00:30 v #6518 > > │ .............................;;;;//////////////////////////<................ │
00:00:30 v #6519 > > │ ............................................................................ │
00:00:30 v #6520 > > │ ........                                                                     │
00:00:30 v #6521 > > │ ...........................;;;;///////////////////////////////.............. │
00:00:30 v #6522 > > │ .............;;;//.......................................................... │
00:00:30 v #6523 > > │ ........                                                                     │
00:00:30 v #6524 > > │ ..........................;;;;//////////////////////////////////............ │
00:00:30 v #6525 > > │ ..........;;;;//////........................................................ │
00:00:30 v #6526 > > │ ........                                                                     │
00:00:30 v #6527 > > │ ........................;;;;//////////////////////////////////////.......... │
00:00:30 v #6528 > > │ ........;;;;;/////////...................................................... │
00:00:30 v #6529 > > │ ........                                                                     │
00:00:30 v #6530 > > │ ......................;;;;;/////////////////////////////////////////........ │
00:00:30 v #6531 > > │ .......;;;;/////////////<..................<;<.............................. │
00:00:30 v #6532 > > │ ........                                                                     │
00:00:30 v #6533 > > │ .....................;;;;///////////////////////////////////////////........ │
00:00:30 v #6534 > > │ .....;;;;;/////////////////..............;;;////............................ │
00:00:30 v #6535 > > │ ........                                                                     │
00:00:30 v #6536 > > │ ...................;;;;;////////////////////////////////////////////........ │
00:00:30 v #6537 > > │ ....;;;;////////////////////...........;;;;///////.......................... │
00:00:30 v #6538 > > │ ........                                                                     │
00:00:30 v #6539 > > │ ..................;;;;;>///////////////////////////////////////////......... │
00:00:30 v #6540 > > │ ..;;;;;>////////////////////..........;;;//////////......................... │
00:00:30 v #6541 > > │ ........                                                                     │
00:00:30 v #6542 > > │ ................;;;;;>>>>>////////////////////////////////////////.......... │
00:00:30 v #6543 > > │ .;;;;;>>>>/////////////////..........;;;>>>>//////.......................... │
00:00:30 v #6544 > > │ ........                                                                     │
00:00:30 v #6545 > > │ ...............;;;>>>>>>>>>>>////////////////////////////////////........... │
00:00:30 v #6546 > > │ ;;>>>>>>>>>>>/////////////............>>>>>>>>///........................... │
00:00:30 v #6547 > > │ ........                                                                     │
00:00:30 v #6548 > > │ .............;;;>>>>>>>>>>>>>>>>////////////////////////////////............ │
00:00:30 v #6549 > > │ ..>>>>>>>>>>>>>/////////................>>>>>>>/............................ │
00:00:30 v #6550 > > │ ........                                                                     │
00:00:30 v #6551 > > │ ..............\>>>>>>>>>>>>>>>>>>>/////////////////////////////............. │
00:00:30 v #6552 > > │ .....>>>>>>>>>>>>>/////....................>................................ │
00:00:30 v #6553 > > │ ........                                                                     │
00:00:30 v #6554 > > │ .................>>>>>>>>>>>>>>>>>>>>/////////////////////////.............. │
00:00:30 v #6555 > > │ .......>>>>>>>>>>>>>//...................................................... │
00:00:30 v #6556 > > │ ........                                                                     │
00:00:30 v #6557 > > │ ....................>>>>>>>>>>>>>>>>>>>>/////////////////////............... │
00:00:30 v #6558 > > │ ..........>>>>>>>>>>>....................................................... │
00:00:30 v #6559 > > │ ........                                                                     │
00:00:30 v #6560 > > │ .......................>>>>>>>>>>>>>>>>>>>//////////////////................ │
00:00:30 v #6561 > > │ ............................................................................ │
00:00:30 v #6562 > > │ ........                                                                     │
00:00:30 v #6563 > > │ ..........................>>>>>>>>>>>>>>>>>>>//////////////................. │
00:00:30 v #6564 > > │ ............................................................................ │
00:00:30 v #6565 > > │ ........                                                                     │
00:00:30 v #6566 > > │ ............................>>>>>>>>>>>>>>>>>>>>///////////................. │
00:00:30 v #6567 > > │ ............................................................................ │
00:00:30 v #6568 > > │ ........                                                                     │
00:00:30 v #6569 > > │ ...............................>>>>>>>>>>>>>>>>>>>////////.................. │
00:00:30 v #6570 > > │ ............................................................................ │
00:00:30 v #6571 > > │ ........                                                                     │
00:00:30 v #6572 > > │ ..................................>>>>>>>>>>>>>>>>>>>////................... │
00:00:30 v #6573 > > │ ............................................................................ │
00:00:30 v #6574 > > │ ........                                                                     │
00:00:30 v #6575 > > │ .....................................>>>>>>>>>>>>>>>>>>/.................... │
00:00:30 v #6576 > > │ ............................................................................ │
00:00:30 v #6577 > > │ ........                                                                     │
00:00:30 v #6578 > > │ ............................................................................ │
00:00:30 v #6579 > > │ ............................................................................ │
00:00:30 v #6580 > > │ ........                                                                     │
00:00:30 v #6581 > > │ ............................................................................ │
00:00:30 v #6582 > > │ ............................................................................ │
00:00:30 v #6583 > > │ ........                                                                     │
00:00:30 v #6584 > > │ ............................................................................ │
00:00:30 v #6585 > > │ ............................................................................ │
00:00:30 v #6586 > > │ ........                                                                     │
00:00:30 v #6587 > > │ ............................................................................ │
00:00:30 v #6588 > > │ ............................................................................ │
00:00:30 v #6589 > > │ ........                                                                     │
00:00:30 v #6590 > > │ ............................................................................ │
00:00:30 v #6591 > > │ ............................................................................ │
00:00:30 v #6592 > > │ ........                                                                     │
00:00:30 v #6593 > > │ ............................................................................ │
00:00:30 v #6594 > > │ ............................................................................ │
00:00:30 v #6595 > > │ ........                                                                     │
00:00:30 v #6596 > > │ ............................................................................ │
00:00:30 v #6597 > > │ ............................................................................ │
00:00:30 v #6598 > > │ ........                                                                     │
00:00:30 v #6599 > > │ ............................................................................ │
00:00:30 v #6600 > > │ ............................................................................ │
00:00:30 v #6601 > > │ ........                                                                     │
00:00:30 v #6602 > > │ ............................................................................ │
00:00:30 v #6603 > > │ ............................................................................ │
00:00:30 v #6604 > > │ ........                                                                     │
00:00:30 v #6605 > > │ ............................................................................ │
00:00:30 v #6606 > > │ ............................................................................ │
00:00:30 v #6607 > > │ ........                                                                     │
00:00:30 v #6608 > > │                                                                              │
00:00:30 v #6609 > > │ ............................................................................ │
00:00:30 v #6610 > > │ ............................................................................ │
00:00:30 v #6611 > > │ ........                                                                     │
00:00:30 v #6612 > > │ ............................................................................ │
00:00:30 v #6613 > > │ ............................................................................ │
00:00:30 v #6614 > > │ ........                                                                     │
00:00:30 v #6615 > > │ ............................................................................ │
00:00:30 v #6616 > > │ ............................................................................ │
00:00:30 v #6617 > > │ ........                                                                     │
00:00:30 v #6618 > > │ ............................................................................ │
00:00:30 v #6619 > > │ ............................................................................ │
00:00:30 v #6620 > > │ ........                                                                     │
00:00:30 v #6621 > > │ ............................................................................ │
00:00:30 v #6622 > > │ ............................................................................ │
00:00:30 v #6623 > > │ ........                                                                     │
00:00:30 v #6624 > > │ ............................................................................ │
00:00:30 v #6625 > > │ ............................................................................ │
00:00:30 v #6626 > > │ ........                                                                     │
00:00:30 v #6627 > > │ ............................................................................ │
00:00:30 v #6628 > > │ ............................................................................ │
00:00:30 v #6629 > > │ ........                                                                     │
00:00:30 v #6630 > > │ .........................................;;/................................ │
00:00:30 v #6631 > > │ ............................................................................ │
00:00:30 v #6632 > > │ ........                                                                     │
00:00:30 v #6633 > > │ .......................................;;/////<............................. │
00:00:30 v #6634 > > │ ............................................................................ │
00:00:30 v #6635 > > │ ........                                                                     │
00:00:30 v #6636 > > │ .....................................;;;/////////........................... │
00:00:30 v #6637 > > │ ............................................................................ │
00:00:30 v #6638 > > │ ........                                                                     │
00:00:30 v #6639 > > │ ...................................;;;;////////////......................... │
00:00:30 v #6640 > > │ ............................................................................ │
00:00:30 v #6641 > > │ ........                                                                     │
00:00:30 v #6642 > > │ .................................;;;;;///////////////....................... │
00:00:30 v #6643 > > │ ............................................................................ │
00:00:30 v #6644 > > │ ........                                                                     │
00:00:30 v #6645 > > │ ...............................;;;;;///////////////////<.................... │
00:00:30 v #6646 > > │ ............................................................................ │
00:00:30 v #6647 > > │ ........                                                                     │
00:00:30 v #6648 > > │ .............................;;;;;;//////////////////////<.................. │
00:00:30 v #6649 > > │ ............................................................................ │
00:00:30 v #6650 > > │ ........                                                                     │
00:00:30 v #6651 > > │ ...........................;;;;;;;//////////////////////////................ │
00:00:30 v #6652 > > │ ............................................................................ │
00:00:30 v #6653 > > │ ........                                                                     │
00:00:30 v #6654 > > │ ..........................;;;;;;//////////////////////////////.............. │
00:00:30 v #6655 > > │ .............;;//<.......................................................... │
00:00:30 v #6656 > > │ ........                                                                     │
00:00:30 v #6657 > > │ .........................;;;;;;/////////////////////////////////............ │
00:00:30 v #6658 > > │ ..........;;;;//////........................................................ │
00:00:30 v #6659 > > │ ........                                                                     │
00:00:30 v #6660 > > │ .......................;;;;;;;////////////////////////////////////<......... │
00:00:30 v #6661 > > │ .......;;;;;;/////////<..................................................... │
00:00:30 v #6662 > > │ ........                                                                     │
00:00:30 v #6663 > > │ ......................;;;;;;;///////////////////////////////////////........ │
00:00:30 v #6664 > > │ ......;;;;;//////////////..................;;............................... │
00:00:30 v #6665 > > │ ........                                                                     │
00:00:30 v #6666 > > │ .....................;;;;;;////////////////////////////////////////......... │
00:00:30 v #6667 > > │ .....;;;;;;////////////////.............;;;;////............................ │
00:00:30 v #6668 > > │ ........                                                                     │
00:00:30 v #6669 > > │ ...................;;;;;;;////////////////////////////////////////.......... │
00:00:30 v #6670 > > │ ....;;;;;;//////////////////...........;;;;///////<......................... │
00:00:30 v #6671 > > │ ........                                                                     │
00:00:30 v #6672 > > │ ..................;;;;;;;/////////////////////////////////////////.......... │
00:00:30 v #6673 > > │ ..\;;;;;///////////////////...........;;;;/////////......................... │
00:00:30 v #6674 > > │ ........                                                                     │
00:00:30 v #6675 > > │ .................;;;;;;;>>>//////////////////////////////////////........... │
00:00:30 v #6676 > > │ .;;;;;;>>>>///////////////...........;;;;>>>//////.......................... │
00:00:30 v #6677 > > │ ........                                                                     │
00:00:30 v #6678 > > │ ...............;;;;;;>>>>>>>>>>/////////////////////////////////............ │
00:00:30 v #6679 > > │ ;;;>>>>>>>>>>////////////............\>>>>>>>>>//........................... │
00:00:30 v #6680 > > │ ........                                                                     │
00:00:30 v #6681 > > │ ..............;;;;>>>>>>>>>>>>>>>///////////////////////////////............ │
00:00:30 v #6682 > > │ .>>>>>>>>>>>>>>>/////////...............>>>>>>>>............................ │
00:00:30 v #6683 > > │ ........                                                                     │
00:00:30 v #6684 > > │ .............;;>>>>>>>>>>>>>>>>>>>>>///////////////////////////............. │
00:00:30 v #6685 > > │ ....>>>>>>>>>>>>>>>/////...................>................................ │
00:00:30 v #6686 > > │ ........                                                                     │
00:00:30 v #6687 > > │ ...............>>>>>>>>>>>>>>>>>>>>>>>>///////////////////////.............. │
00:00:30 v #6688 > > │ .......>>>>>>>>>>>>>>>/..................................................... │
00:00:30 v #6689 > > │ ........                                                                     │
00:00:30 v #6690 > > │ ..................>>>>>>>>>>>>>>>>>>>>>>>>////////////////////.............. │
00:00:30 v #6691 > > │ ..........>>>>>>>>>>>/...................................................... │
00:00:30 v #6692 > > │ ........                                                                     │
00:00:30 v #6693 > > │ .....................>>>>>>>>>>>>>>>>>>>>>>>>////////////////............... │
00:00:30 v #6694 > > │ ............................................................................ │
00:00:30 v #6695 > > │ ........                                                                     │
00:00:30 v #6696 > > │ ........................>>>>>>>>>>>>>>>>>>>>>>>>////////////................ │
00:00:30 v #6697 > > │ ............................................................................ │
00:00:30 v #6698 > > │ ........                                                                     │
00:00:30 v #6699 > > │ ............................>>>>>>>>>>>>>>>>>>>>>>>/////////................ │
00:00:30 v #6700 > > │ ............................................................................ │
00:00:30 v #6701 > > │ ........                                                                     │
00:00:30 v #6702 > > │ ...............................>>>>>>>>>>>>>>>>>>>>>>>/////................. │
00:00:30 v #6703 > > │ ............................................................................ │
00:00:30 v #6704 > > │ ........                                                                     │
00:00:30 v #6705 > > │ ..................................>>>>>>>>>>>>>>>>>>>>>>//.................. │
00:00:30 v #6706 > > │ ............................................................................ │
00:00:30 v #6707 > > │ ........                                                                     │
00:00:30 v #6708 > > │ .....................................>>>>>>>>>>>>>>>>>>>>/.................. │
00:00:30 v #6709 > > │ ............................................................................ │
00:00:30 v #6710 > > │ ........                                                                     │
00:00:30 v #6711 > > │ ............................................................................ │
00:00:30 v #6712 > > │ ............................................................................ │
00:00:30 v #6713 > > │ ........                                                                     │
00:00:30 v #6714 > > │ ............................................................................ │
00:00:30 v #6715 > > │ ............................................................................ │
00:00:30 v #6716 > > │ ........                                                                     │
00:00:30 v #6717 > > │ ............................................................................ │
00:00:30 v #6718 > > │ ............................................................................ │
00:00:30 v #6719 > > │ ........                                                                     │
00:00:30 v #6720 > > │ ............................................................................ │
00:00:30 v #6721 > > │ ............................................................................ │
00:00:30 v #6722 > > │ ........                                                                     │
00:00:30 v #6723 > > │ ............................................................................ │
00:00:30 v #6724 > > │ ............................................................................ │
00:00:30 v #6725 > > │ ........                                                                     │
00:00:30 v #6726 > > │ ............................................................................ │
00:00:30 v #6727 > > │ ............................................................................ │
00:00:30 v #6728 > > │ ........                                                                     │
00:00:30 v #6729 > > │ ............................................................................ │
00:00:30 v #6730 > > │ ............................................................................ │
00:00:30 v #6731 > > │ ........                                                                     │
00:00:30 v #6732 > > │ ............................................................................ │
00:00:30 v #6733 > > │ ............................................................................ │
00:00:30 v #6734 > > │ ........                                                                     │
00:00:30 v #6735 > > │ ............................................................................ │
00:00:30 v #6736 > > │ ............................................................................ │
00:00:30 v #6737 > > │ ........                                                                     │
00:00:30 v #6738 > > │ ............................................................................ │
00:00:30 v #6739 > > │ ............................................................................ │
00:00:30 v #6740 > > │ ........                                                                     │
00:00:30 v #6741 > > │                                                                              │
00:00:30 v #6742 > > │ ............................................................................ │
00:00:30 v #6743 > > │ ............................................................................ │
00:00:30 v #6744 > > │ ........                                                                     │
00:00:30 v #6745 > > │ ............................................................................ │
00:00:30 v #6746 > > │ ............................................................................ │
00:00:30 v #6747 > > │ ........                                                                     │
00:00:30 v #6748 > > │ ............................................................................ │
00:00:30 v #6749 > > │ ............................................................................ │
00:00:30 v #6750 > > │ ........                                                                     │
00:00:30 v #6751 > > │ ............................................................................ │
00:00:30 v #6752 > > │ ............................................................................ │
00:00:30 v #6753 > > │ ........                                                                     │
00:00:30 v #6754 > > │ ............................................................................ │
00:00:30 v #6755 > > │ ............................................................................ │
00:00:30 v #6756 > > │ ........                                                                     │
00:00:30 v #6757 > > │ ............................................................................ │
00:00:30 v #6758 > > │ ............................................................................ │
00:00:30 v #6759 > > │ ........                                                                     │
00:00:30 v #6760 > > │ ............................................................................ │
00:00:30 v #6761 > > │ ............................................................................ │
00:00:30 v #6762 > > │ ........                                                                     │
00:00:30 v #6763 > > │ ........................................;;/<................................ │
00:00:30 v #6764 > > │ ............................................................................ │
00:00:30 v #6765 > > │ ........                                                                     │
00:00:30 v #6766 > > │ ......................................;;;/////.............................. │
00:00:30 v #6767 > > │ ............................................................................ │
00:00:30 v #6768 > > │ ........                                                                     │
00:00:30 v #6769 > > │ ....................................;;;;////////............................ │
00:00:30 v #6770 > > │ ............................................................................ │
00:00:30 v #6771 > > │ ........                                                                     │
00:00:30 v #6772 > > │ ..................................;;;;;////////////......................... │
00:00:30 v #6773 > > │ ............................................................................ │
00:00:30 v #6774 > > │ ........                                                                     │
00:00:30 v #6775 > > │ ................................;;;;;;///////////////....................... │
00:00:30 v #6776 > > │ ............................................................................ │
00:00:30 v #6777 > > │ ........                                                                     │
00:00:30 v #6778 > > │ ..............................;;;;;;;//////////////////..................... │
00:00:30 v #6779 > > │ ............................................................................ │
00:00:30 v #6780 > > │ ........                                                                     │
00:00:30 v #6781 > > │ ............................;;;;;;;;//////////////////////.................. │
00:00:30 v #6782 > > │ ............................................................................ │
00:00:30 v #6783 > > │ ........                                                                     │
00:00:30 v #6784 > > │ ..........................;;;;;;;;//////////////////////////................ │
00:00:30 v #6785 > > │ ............................................................................ │
00:00:30 v #6786 > > │ ........                                                                     │
00:00:30 v #6787 > > │ .........................;;;;;;;;/////////////////////////////<............. │
00:00:30 v #6788 > > │ ............;;;//........................................................... │
00:00:30 v #6789 > > │ ........                                                                     │
00:00:30 v #6790 > > │ ........................;;;;;;;;////////////////////////////////<........... │
00:00:30 v #6791 > > │ .........;;;;;//////........................................................ │
00:00:30 v #6792 > > │ ........                                                                     │
00:00:30 v #6793 > > │ .......................;;;;;;;;////////////////////////////////////......... │
00:00:30 v #6794 > > │ ......<;;;;;;/////////<..................................................... │
00:00:30 v #6795 > > │ ........                                                                     │
00:00:30 v #6796 > > │ .....................\;;;;;;;;/////////////////////////////////////......... │
00:00:30 v #6797 > > │ ......;;;;;;/////////////..................;;<.............................. │
00:00:30 v #6798 > > │ ........                                                                     │
00:00:30 v #6799 > > │ ....................;;;;;;;;;/////////////////////////////////////.......... │
00:00:30 v #6800 > > │ ....\;;;;;;/////////////////............;;;;////............................ │
00:00:30 v #6801 > > │ ........                                                                     │
00:00:30 v #6802 > > │ ...................;;;;;;;;;//////////////////////////////////////.......... │
00:00:30 v #6803 > > │ ....;;;;;;/////////////////............;;;;////////......................... │
00:00:30 v #6804 > > │ ........                                                                     │
00:00:30 v #6805 > > │ ..................;;;;;;;;;//////////////////////////////////////........... │
00:00:30 v #6806 > > │ ..\;;;;;;//////////////////...........;;;;/////////......................... │
00:00:30 v #6807 > > │ ........                                                                     │
00:00:30 v #6808 > > │ .................;;;;;;;;;;>/////////////////////////////////////........... │
00:00:30 v #6809 > > │ .\;;;;;;;>>///////////////...........;;;;;>>>/////.......................... │
00:00:30 v #6810 > > │ ........                                                                     │
00:00:30 v #6811 > > │ ................;;;;;;;;>>>>>>>>////////////////////////////////............ │
00:00:30 v #6812 > > │ \;;;;>>>>>>>>>////////////...........;>>>>>>>>>//........................... │
00:00:30 v #6813 > > │ ........                                                                     │
00:00:30 v #6814 > > │ ...............;;;;;;>>>>>>>>>>>>>>/////////////////////////////............ │
00:00:30 v #6815 > > │ ;>>>>>>>>>>>>>>>>////////...............>>>>>>>>/........................... │
00:00:30 v #6816 > > │ ........                                                                     │
00:00:30 v #6817 > > │ ..............;;;;>>>>>>>>>>>>>>>>>>>>/////////////////////////............. │
00:00:30 v #6818 > > │ ...>>>>>>>>>>>>>>>>>////...................=>............................... │
00:00:30 v #6819 > > │ ........                                                                     │
00:00:30 v #6820 > > │ .............;>>>>>>>>>>>>>>>>>>>>>>>>>>>//////////////////////............. │
00:00:30 v #6821 > > │ ......\>>>>>>>>>>>>>>>>..................................................... │
00:00:30 v #6822 > > │ ........                                                                     │
00:00:30 v #6823 > > │ ................>>>>>>>>>>>>>>>>>>>>>>>>>>>>//////////////////.............. │
00:00:30 v #6824 > > │ ..........>>>>>>>>>=>....................................................... │
00:00:30 v #6825 > > │ ........                                                                     │
00:00:30 v #6826 > > │ ....................>>>>>>>>>>>>>>>>>>>>>>>>>>>>//////////////.............. │
00:00:30 v #6827 > > │ ............................................................................ │
00:00:30 v #6828 > > │ ........                                                                     │
00:00:30 v #6829 > > │ .......................>>>>>>>>>>>>>>>>>>>>>>>>>>>///////////............... │
00:00:30 v #6830 > > │ ............................................................................ │
00:00:30 v #6831 > > │ ........                                                                     │
00:00:30 v #6832 > > │ ...........................>>>>>>>>>>>>>>>>>>>>>>>>>>>///////............... │
00:00:30 v #6833 > > │ ............................................................................ │
00:00:30 v #6834 > > │ ........                                                                     │
00:00:30 v #6835 > > │ ..............................>>>>>>>>>>>>>>>>>>>>>>>>>>>///................ │
00:00:30 v #6836 > > │ ............................................................................ │
00:00:30 v #6837 > > │ ........                                                                     │
00:00:30 v #6838 > > │ ..................................>>>>>>>>>>>>>>>>>>>>>>>>>/................ │
00:00:30 v #6839 > > │ ............................................................................ │
00:00:30 v #6840 > > │ ........                                                                     │
00:00:30 v #6841 > > │ ......................................>>>>>=>=>>............................ │
00:00:30 v #6842 > > │ ............................................................................ │
00:00:30 v #6843 > > │ ........                                                                     │
00:00:30 v #6844 > > │ ............................................................................ │
00:00:30 v #6845 > > │ ............................................................................ │
00:00:30 v #6846 > > │ ........                                                                     │
00:00:30 v #6847 > > │ ............................................................................ │
00:00:30 v #6848 > > │ ............................................................................ │
00:00:30 v #6849 > > │ ........                                                                     │
00:00:30 v #6850 > > │ ............................................................................ │
00:00:30 v #6851 > > │ ............................................................................ │
00:00:30 v #6852 > > │ ........                                                                     │
00:00:30 v #6853 > > │ ............................................................................ │
00:00:30 v #6854 > > │ ............................................................................ │
00:00:30 v #6855 > > │ ........                                                                     │
00:00:30 v #6856 > > │ ............................................................................ │
00:00:30 v #6857 > > │ ............................................................................ │
00:00:30 v #6858 > > │ ........                                                                     │
00:00:30 v #6859 > > │ ............................................................................ │
00:00:30 v #6860 > > │ ............................................................................ │
00:00:30 v #6861 > > │ ........                                                                     │
00:00:30 v #6862 > > │ ............................................................................ │
00:00:30 v #6863 > > │ ............................................................................ │
00:00:30 v #6864 > > │ ........                                                                     │
00:00:30 v #6865 > > │ ............................................................................ │
00:00:30 v #6866 > > │ ............................................................................ │
00:00:30 v #6867 > > │ ........                                                                     │
00:00:30 v #6868 > > │ ............................................................................ │
00:00:30 v #6869 > > │ ............................................................................ │
00:00:30 v #6870 > > │ ........                                                                     │
00:00:30 v #6871 > > │ ............................................................................ │
00:00:30 v #6872 > > │ ............................................................................ │
00:00:30 v #6873 > > │ ........                                                                     │
00:00:30 v #6874 > > │                                                                              │
00:00:30 v #6875 > > │ ............................................................................ │
00:00:30 v #6876 > > │ ............................................................................ │
00:00:30 v #6877 > > │ ........                                                                     │
00:00:30 v #6878 > > │ ............................................................................ │
00:00:30 v #6879 > > │ ............................................................................ │
00:00:30 v #6880 > > │ ........                                                                     │
00:00:30 v #6881 > > │ ............................................................................ │
00:00:30 v #6882 > > │ ............................................................................ │
00:00:30 v #6883 > > │ ........                                                                     │
00:00:30 v #6884 > > │ ............................................................................ │
00:00:30 v #6885 > > │ ............................................................................ │
00:00:30 v #6886 > > │ ........                                                                     │
00:00:30 v #6887 > > │ ............................................................................ │
00:00:30 v #6888 > > │ ............................................................................ │
00:00:30 v #6889 > > │ ........                                                                     │
00:00:30 v #6890 > > │ ............................................................................ │
00:00:30 v #6891 > > │ ............................................................................ │
00:00:30 v #6892 > > │ ........                                                                     │
00:00:30 v #6893 > > │ ............................................................................ │
00:00:30 v #6894 > > │ ............................................................................ │
00:00:30 v #6895 > > │ ........                                                                     │
00:00:30 v #6896 > > │ .......................................;;//................................. │
00:00:30 v #6897 > > │ ............................................................................ │
00:00:30 v #6898 > > │ ........                                                                     │
00:00:30 v #6899 > > │ .....................................;;;/////<.............................. │
00:00:30 v #6900 > > │ ............................................................................ │
00:00:30 v #6901 > > │ ........                                                                     │
00:00:30 v #6902 > > │ ...................................;;;;/////////............................ │
00:00:30 v #6903 > > │ ............................................................................ │
00:00:30 v #6904 > > │ ........                                                                     │
00:00:30 v #6905 > > │ .................................;;;;;;///////////<......................... │
00:00:30 v #6906 > > │ ............................................................................ │
00:00:30 v #6907 > > │ ........                                                                     │
00:00:30 v #6908 > > │ ...............................;;;;;;;///////////////....................... │
00:00:30 v #6909 > > │ ............................................................................ │
00:00:30 v #6910 > > │ ........                                                                     │
00:00:30 v #6911 > > │ .............................;;;;;;;;//////////////////..................... │
00:00:30 v #6912 > > │ ............................................................................ │
00:00:30 v #6913 > > │ ........                                                                     │
00:00:30 v #6914 > > │ ...........................;;;;;;;;;//////////////////////.................. │
00:00:30 v #6915 > > │ ............................................................................ │
00:00:30 v #6916 > > │ ........                                                                     │
00:00:30 v #6917 > > │ .........................;;;;;;;;;;/////////////////////////................ │
00:00:30 v #6918 > > │ ............................................................................ │
00:00:30 v #6919 > > │ ........                                                                     │
00:00:30 v #6920 > > │ ........................;;;;;;;;;;;///////////////////////////<............. │
00:00:30 v #6921 > > │ ............;;;//........................................................... │
00:00:30 v #6922 > > │ ........                                                                     │
00:00:30 v #6923 > > │ .......................;;;;;;;;;;;///////////////////////////////........... │
00:00:30 v #6924 > > │ .........;;;;;//////........................................................ │
00:00:30 v #6925 > > │ ........                                                                     │
00:00:30 v #6926 > > │ ......................;;;;;;;;;;;/////////////////////////////////.......... │
00:00:30 v #6927 > > │ ......;;;;;;;/////////<..................................................... │
00:00:30 v #6928 > > │ ........                                                                     │
00:00:30 v #6929 > > │ .....................;;;;;;;;;;;//////////////////////////////////.......... │
00:00:30 v #6930 > > │ .....;;;;;;;/////////////..................;;<.............................. │
00:00:30 v #6931 > > │ ........                                                                     │
00:00:30 v #6932 > > │ ....................;;;;;;;;;;;//////////////////////////////////........... │
00:00:30 v #6933 > > │ ....;;;;;;;;///////////////.............;;;;////<........................... │
00:00:30 v #6934 > > │ ........                                                                     │
00:00:30 v #6935 > > │ ...................;;;;;;;;;;;;//////////////////////////////////........... │
00:00:30 v #6936 > > │ ...;;;;;;;;////////////////............;;;;////////......................... │
00:00:30 v #6937 > > │ ........                                                                     │
00:00:30 v #6938 > > │ ..................;;;;;;;;;;;;///////////////////////////////////........... │
00:00:30 v #6939 > > │ ...;;;;;;;/////////////////...........;;;;;////////......................... │
00:00:30 v #6940 > > │ ........                                                                     │
00:00:30 v #6941 > > │ .................;;;;;;;;;;;;///////////////////////////////////............ │
00:00:30 v #6942 > > │ ..;;;;;;;;>>//////////////...........;;;;;>>>/////.......................... │
00:00:30 v #6943 > > │ ........                                                                     │
00:00:30 v #6944 > > │ ................;;;;;;;;;;;;>>>>>///////////////////////////////............ │
00:00:30 v #6945 > > │ .;;;;;>>>>>>>>>///////////...........;>>>>>>>>>>//.......................... │
00:00:30 v #6946 > > │ ........                                                                     │
00:00:30 v #6947 > > │ ...............;;;;;;;;;>>>>>>>>>>>>////////////////////////////............ │
00:00:30 v #6948 > > │ \;;>>>>>>>>>>>>>>>///////...............>>>>>>>>>........................... │
00:00:30 v #6949 > > │ ........                                                                     │
00:00:30 v #6950 > > │ ..............;;;;;;;>>>>>>>>>>>>>>>>>>>///////////////////////............. │
00:00:30 v #6951 > > │ ..\>>>>>>>>>>>>>>>>>>>///..................>=............................... │
00:00:30 v #6952 > > │ ........                                                                     │
00:00:30 v #6953 > > │ .............;;;;>>>>>>>>>>>>>>>>>>>>>>>>>>////////////////////............. │
00:00:30 v #6954 > > │ ......>>>>>>>>>>>>>>>>>>.................................................... │
00:00:30 v #6955 > > │ ........                                                                     │
00:00:30 v #6956 > > │ .............>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>/////////////////............. │
00:00:30 v #6957 > > │ ..........>>>>>>>>>>=....................................................... │
00:00:30 v #6958 > > │ ........                                                                     │
00:00:30 v #6959 > > │ .................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>////////////.............. │
00:00:30 v #6960 > > │ ............................................................................ │
00:00:30 v #6961 > > │ ........                                                                     │
00:00:30 v #6962 > > │ ......................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>////////.............. │
00:00:30 v #6963 > > │ ............................................................................ │
00:00:30 v #6964 > > │ ........                                                                     │
00:00:30 v #6965 > > │ ..........................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>/////.............. │
00:00:30 v #6966 > > │ ............................................................................ │
00:00:30 v #6967 > > │ ........                                                                     │
00:00:30 v #6968 > > │ ..............................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>//.............. │
00:00:30 v #6969 > > │ ............................................................................ │
00:00:30 v #6970 > > │ ........                                                                     │
00:00:30 v #6971 > > │ ..................................>>>>>>>>>>>>>>>>>>>>>>>>>>>............... │
00:00:30 v #6972 > > │ ............................................................................ │
00:00:30 v #6973 > > │ ........                                                                     │
00:00:30 v #6974 > > │ ......................................>>>==................................. │
00:00:30 v #6975 > > │ ............................................................................ │
00:00:30 v #6976 > > │ ........                                                                     │
00:00:30 v #6977 > > │ ............................................................................ │
00:00:30 v #6978 > > │ ............................................................................ │
00:00:30 v #6979 > > │ ........                                                                     │
00:00:30 v #6980 > > │ ............................................................................ │
00:00:30 v #6981 > > │ ............................................................................ │
00:00:30 v #6982 > > │ ........                                                                     │
00:00:30 v #6983 > > │ ............................................................................ │
00:00:30 v #6984 > > │ ............................................................................ │
00:00:30 v #6985 > > │ ........                                                                     │
00:00:30 v #6986 > > │ ............................................................................ │
00:00:30 v #6987 > > │ ............................................................................ │
00:00:30 v #6988 > > │ ........                                                                     │
00:00:30 v #6989 > > │ ............................................................................ │
00:00:30 v #6990 > > │ ............................................................................ │
00:00:30 v #6991 > > │ ........                                                                     │
00:00:30 v #6992 > > │ ............................................................................ │
00:00:30 v #6993 > > │ ............................................................................ │
00:00:30 v #6994 > > │ ........                                                                     │
00:00:30 v #6995 > > │ ............................................................................ │
00:00:30 v #6996 > > │ ............................................................................ │
00:00:30 v #6997 > > │ ........                                                                     │
00:00:30 v #6998 > > │ ............................................................................ │
00:00:30 v #6999 > > │ ............................................................................ │
00:00:30 v #7000 > > │ ........                                                                     │
00:00:30 v #7001 > > │ ............................................................................ │
00:00:30 v #7002 > > │ ............................................................................ │
00:00:30 v #7003 > > │ ........                                                                     │
00:00:30 v #7004 > > │ ............................................................................ │
00:00:30 v #7005 > > │ ............................................................................ │
00:00:30 v #7006 > > │ ........                                                                     │
00:00:30 v #7007 > > │                                                                              │
00:00:30 v #7008 > > │ ............................................................................ │
00:00:30 v #7009 > > │ ............................................................................ │
00:00:30 v #7010 > > │ ........                                                                     │
00:00:30 v #7011 > > │ ............................................................................ │
00:00:30 v #7012 > > │ ............................................................................ │
00:00:30 v #7013 > > │ ........                                                                     │
00:00:30 v #7014 > > │ ............................................................................ │
00:00:30 v #7015 > > │ ............................................................................ │
00:00:30 v #7016 > > │ ........                                                                     │
00:00:30 v #7017 > > │ ............................................................................ │
00:00:30 v #7018 > > │ ............................................................................ │
00:00:30 v #7019 > > │ ........                                                                     │
00:00:30 v #7020 > > │ ............................................................................ │
00:00:30 v #7021 > > │ ............................................................................ │
00:00:30 v #7022 > > │ ........                                                                     │
00:00:30 v #7023 > > │ ............................................................................ │
00:00:30 v #7024 > > │ ............................................................................ │
00:00:30 v #7025 > > │ ........                                                                     │
00:00:30 v #7026 > > │ ............................................................................ │
00:00:30 v #7027 > > │ ............................................................................ │
00:00:30 v #7028 > > │ ........                                                                     │
00:00:30 v #7029 > > │ .......................................;;/<................................. │
00:00:30 v #7030 > > │ ............................................................................ │
00:00:30 v #7031 > > │ ........                                                                     │
00:00:30 v #7032 > > │ ....................................<;;;/////............................... │
00:00:30 v #7033 > > │ ............................................................................ │
00:00:30 v #7034 > > │ ........                                                                     │
00:00:30 v #7035 > > │ ..................................;;;;;////////<............................ │
00:00:30 v #7036 > > │ ............................................................................ │
00:00:30 v #7037 > > │ ........                                                                     │
00:00:30 v #7038 > > │ ................................;;;;;;;///////////.......................... │
00:00:30 v #7039 > > │ ............................................................................ │
00:00:30 v #7040 > > │ ........                                                                     │
00:00:30 v #7041 > > │ ..............................;;;;;;;;//////////////<....................... │
00:00:30 v #7042 > > │ ............................................................................ │
00:00:30 v #7043 > > │ ........                                                                     │
00:00:30 v #7044 > > │ ............................;;;;;;;;;;/////////////////..................... │
00:00:30 v #7045 > > │ ............................................................................ │
00:00:30 v #7046 > > │ ........                                                                     │
00:00:30 v #7047 > > │ ..........................;;;;;;;;;;;////////////////////<.................. │
00:00:30 v #7048 > > │ ............................................................................ │
00:00:30 v #7049 > > │ ........                                                                     │
00:00:30 v #7050 > > │ ........................;;;;;;;;;;;;////////////////////////................ │
00:00:30 v #7051 > > │ ............................................................................ │
00:00:30 v #7052 > > │ ........                                                                     │
00:00:30 v #7053 > > │ .......................;;;;;;;;;;;;;///////////////////////////............. │
00:00:30 v #7054 > > │ ............;;///........................................................... │
00:00:30 v #7055 > > │ ........                                                                     │
00:00:30 v #7056 > > │ ......................;;;;;;;;;;;;;//////////////////////////////........... │
00:00:30 v #7057 > > │ .........;;;;;//////........................................................ │
00:00:30 v #7058 > > │ ........                                                                     │
00:00:30 v #7059 > > │ .....................;;;;;;;;;;;;;;//////////////////////////////........... │
00:00:30 v #7060 > > │ ......;;;;;;;//////////..................................................... │
00:00:30 v #7061 > > │ ........                                                                     │
00:00:30 v #7062 > > │ ....................;;;;;;;;;;;;;;///////////////////////////////........... │
00:00:30 v #7063 > > │ ....\;;;;;;;;////////////<.................;;............................... │
00:00:30 v #7064 > > │ ........                                                                     │
00:00:30 v #7065 > > │ ...................\;;;;;;;;;;;;;///////////////////////////////............ │
00:00:30 v #7066 > > │ ....;;;;;;;;///////////////............<;;;;////<........................... │
00:00:30 v #7067 > > │ ........                                                                     │
00:00:30 v #7068 > > │ ...................;;;;;;;;;;;;;;///////////////////////////////............ │
00:00:30 v #7069 > > │ ...;;;;;;;;;///////////////...........\;;;;////////......................... │
00:00:30 v #7070 > > │ ........                                                                     │
00:00:30 v #7071 > > │ ..................;;;;;;;;;;;;;;////////////////////////////////............ │
00:00:30 v #7072 > > │ ..\;;;;;;;;///////////////............;;;;;////////......................... │
00:00:30 v #7073 > > │ ........                                                                     │
00:00:30 v #7074 > > │ .................;;;;;;;;;;;;;;;////////////////////////////////............ │
00:00:30 v #7075 > > │ ..;;;;;;;;;>//////////////...........\;;;;;>>>////.......................... │
00:00:30 v #7076 > > │ ........                                                                     │
00:00:30 v #7077 > > │ ................;;;;;;;;;;;;;;;>>>//////////////////////////////............ │
00:00:30 v #7078 > > │ .;;;;;;;>>>>>>>>//////////...........;;>>>>>>>>>>/.......................... │
00:00:30 v #7079 > > │ ........                                                                     │
00:00:30 v #7080 > > │ ................;;;;;;;;;;;;>>>>>>>>>>//////////////////////////............ │
00:00:30 v #7081 > > │ .;;;>>>>>>>>>>>>>>>>/////..............\>>>>>>>>/........................... │
00:00:30 v #7082 > > │ ........                                                                     │
00:00:30 v #7083 > > │ ...............;;;;;;;;;>>>>>>>>>>>>>>>>>>//////////////////////............ │
00:00:30 v #7084 > > │ .\>>>>>>>>>>>>>>>>>>>>>//..................\=............................... │
00:00:30 v #7085 > > │ ........                                                                     │
00:00:30 v #7086 > > │ ..............;;;;;;>>>>>>>>>>>>>>>>>>>>>>>>>>//////////////////............ │
00:00:30 v #7087 > > │ .....\>>>>>>>>>>>>>>>>>>/................................................... │
00:00:30 v #7088 > > │ ........                                                                     │
00:00:30 v #7089 > > │ .............;;;;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>/////////////............. │
00:00:30 v #7090 > > │ ..........>>>>>>>>>>........................................................ │
00:00:30 v #7091 > > │ ........                                                                     │
00:00:30 v #7092 > > │ ...............>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>//////////............. │
00:00:30 v #7093 > > │ ............................................................................ │
00:00:30 v #7094 > > │ ........                                                                     │
00:00:30 v #7095 > > │ ...................\>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>//////............. │
00:00:30 v #7096 > > │ ............................................................................ │
00:00:30 v #7097 > > │ ........                                                                     │
00:00:30 v #7098 > > │ ........................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>//............. │
00:00:30 v #7099 > > │ ............................................................................ │
00:00:30 v #7100 > > │ ........                                                                     │
00:00:30 v #7101 > > │ .............................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>/............. │
00:00:30 v #7102 > > │ ............................................................................ │
00:00:30 v #7103 > > │ ........                                                                     │
00:00:30 v #7104 > > │ ..................................>>>>>>>>>>>>>>>>>>>>==.................... │
00:00:30 v #7105 > > │ ............................................................................ │
00:00:30 v #7106 > > │ ........                                                                     │
00:00:30 v #7107 > > │ .......................................>==.................................. │
00:00:30 v #7108 > > │ ............................................................................ │
00:00:30 v #7109 > > │ ........                                                                     │
00:00:30 v #7110 > > │ ............................................................................ │
00:00:30 v #7111 > > │ ............................................................................ │
00:00:30 v #7112 > > │ ........                                                                     │
00:00:30 v #7113 > > │ ............................................................................ │
00:00:30 v #7114 > > │ ............................................................................ │
00:00:30 v #7115 > > │ ........                                                                     │
00:00:30 v #7116 > > │ ............................................................................ │
00:00:30 v #7117 > > │ ............................................................................ │
00:00:30 v #7118 > > │ ........                                                                     │
00:00:30 v #7119 > > │ ............................................................................ │
00:00:30 v #7120 > > │ ............................................................................ │
00:00:30 v #7121 > > │ ........                                                                     │
00:00:30 v #7122 > > │ ............................................................................ │
00:00:30 v #7123 > > │ ............................................................................ │
00:00:30 v #7124 > > │ ........                                                                     │
00:00:30 v #7125 > > │ ............................................................................ │
00:00:30 v #7126 > > │ ............................................................................ │
00:00:30 v #7127 > > │ ........                                                                     │
00:00:30 v #7128 > > │ ............................................................................ │
00:00:30 v #7129 > > │ ............................................................................ │
00:00:30 v #7130 > > │ ........                                                                     │
00:00:30 v #7131 > > │ ............................................................................ │
00:00:30 v #7132 > > │ ............................................................................ │
00:00:30 v #7133 > > │ ........                                                                     │
00:00:30 v #7134 > > │ ............................................................................ │
00:00:30 v #7135 > > │ ............................................................................ │
00:00:30 v #7136 > > │ ........                                                                     │
00:00:30 v #7137 > > │ ............................................................................ │
00:00:30 v #7138 > > │ ............................................................................ │
00:00:30 v #7139 > > │ ........                                                                     │
00:00:30 v #7140 > > │                                                                              │
00:00:30 v #7141 > > │ ............................................................................ │
00:00:30 v #7142 > > │ ............................................................................ │
00:00:30 v #7143 > > │ ........                                                                     │
00:00:30 v #7144 > > │ ............................................................................ │
00:00:30 v #7145 > > │ ............................................................................ │
00:00:30 v #7146 > > │ ........                                                                     │
00:00:30 v #7147 > > │ ............................................................................ │
00:00:30 v #7148 > > │ ............................................................................ │
00:00:30 v #7149 > > │ ........                                                                     │
00:00:30 v #7150 > > │ ............................................................................ │
00:00:30 v #7151 > > │ ............................................................................ │
00:00:30 v #7152 > > │ ........                                                                     │
00:00:30 v #7153 > > │ ............................................................................ │
00:00:30 v #7154 > > │ ............................................................................ │
00:00:30 v #7155 > > │ ........                                                                     │
00:00:30 v #7156 > > │ ............................................................................ │
00:00:30 v #7157 > > │ ............................................................................ │
00:00:30 v #7158 > > │ ........                                                                     │
00:00:30 v #7159 > > │ ............................................................................ │
00:00:30 v #7160 > > │ ............................................................................ │
00:00:30 v #7161 > > │ ........                                                                     │
00:00:30 v #7162 > > │ ......................................;;//.................................. │
00:00:30 v #7163 > > │ ............................................................................ │
00:00:30 v #7164 > > │ ........                                                                     │
00:00:30 v #7165 > > │ ....................................;;;;////................................ │
00:00:30 v #7166 > > │ ............................................................................ │
00:00:30 v #7167 > > │ ........                                                                     │
00:00:30 v #7168 > > │ ..................................;;;;;////////............................. │
00:00:30 v #7169 > > │ ............................................................................ │
00:00:30 v #7170 > > │ ........                                                                     │
00:00:30 v #7171 > > │ ...............................<;;;;;;;///////////.......................... │
00:00:30 v #7172 > > │ ............................................................................ │
00:00:30 v #7173 > > │ ........                                                                     │
00:00:30 v #7174 > > │ .............................;;;;;;;;;//////////////........................ │
00:00:30 v #7175 > > │ ............................................................................ │
00:00:30 v #7176 > > │ ........                                                                     │
00:00:30 v #7177 > > │ ...........................;;;;;;;;;;;/////////////////..................... │
00:00:30 v #7178 > > │ ............................................................................ │
00:00:30 v #7179 > > │ ........                                                                     │
00:00:30 v #7180 > > │ .........................;;;;;;;;;;;;;///////////////////<.................. │
00:00:30 v #7181 > > │ ............................................................................ │
00:00:30 v #7182 > > │ ........                                                                     │
00:00:30 v #7183 > > │ .......................;;;;;;;;;;;;;;///////////////////////................ │
00:00:30 v #7184 > > │ ............................................................................ │
00:00:30 v #7185 > > │ ........                                                                     │
00:00:30 v #7186 > > │ .....................\;;;;;;;;;;;;;;;//////////////////////////............. │
00:00:30 v #7187 > > │ ...........<;;//<........................................................... │
00:00:30 v #7188 > > │ ........                                                                     │
00:00:30 v #7189 > > │ .....................;;;;;;;;;;;;;;;;///////////////////////////............ │
00:00:30 v #7190 > > │ ........<;;;;;//////........................................................ │
00:00:30 v #7191 > > │ ........                                                                     │
00:00:30 v #7192 > > │ ....................;;;;;;;;;;;;;;;;////////////////////////////............ │
00:00:30 v #7193 > > │ ......;;;;;;;;/////////..................................................... │
00:00:30 v #7194 > > │ ........                                                                     │
00:00:30 v #7195 > > │ ....................;;;;;;;;;;;;;;;;////////////////////////////............ │
00:00:30 v #7196 > > │ ....;;;;;;;;;/////////////.................;/............................... │
00:00:30 v #7197 > > │ ........                                                                     │
00:00:30 v #7198 > > │ ...................;;;;;;;;;;;;;;;;/////////////////////////////............ │
00:00:30 v #7199 > > │ ...;;;;;;;;;;/////////////.............<;;;;////<........................... │
00:00:30 v #7200 > > │ ........                                                                     │
00:00:30 v #7201 > > │ ..................;;;;;;;;;;;;;;;;;/////////////////////////////............ │
00:00:30 v #7202 > > │ ...;;;;;;;;;//////////////............\;;;;;//////.......................... │
00:00:30 v #7203 > > │ ........                                                                     │
00:00:30 v #7204 > > │ ..................;;;;;;;;;;;;;;;;;/////////////////////////////............ │
00:00:30 v #7205 > > │ ..\;;;;;;;;;//////////////............;;;;;///////.......................... │
00:00:30 v #7206 > > │ ........                                                                     │
00:00:30 v #7207 > > │ .................;;;;;;;;;;;;;;;;;//////////////////////////////............ │
00:00:30 v #7208 > > │ ..;;;;;;;;;;>/////////////............;;;;;>>>////.......................... │
00:00:30 v #7209 > > │ ........                                                                     │
00:00:30 v #7210 > > │ .................;;;;;;;;;;;;;;;;;>/////////////////////////////............ │
00:00:30 v #7211 > > │ ..;;;;;;;;>>>>>>>/////////...........;;;>>>>>>>>>/.......................... │
00:00:30 v #7212 > > │ ........                                                                     │
00:00:30 v #7213 > > │ ................;;;;;;;;;;;;;;;;>>>>>>>/////////////////////////............ │
00:00:30 v #7214 > > │ .;;;;;>>>>>>>>>>>>>>>/////.............\>>>>>>>>>=.......................... │
00:00:30 v #7215 > > │ ........                                                                     │
00:00:30 v #7216 > > │ ...............;;;;;;;;;;;;;>>>>>>>>>>>>>>>/////////////////////............ │
00:00:30 v #7217 > > │ .;>>>>>>>>>>>>>>>>>>>>>>>/..................>............................... │
00:00:30 v #7218 > > │ ........                                                                     │
00:00:30 v #7219 > > │ ...............;;;;;;;;;>>>>>>>>>>>>>>>>>>>>>>>>////////////////............ │
00:00:30 v #7220 > > │ .....>>>>>>>>>>>>>>>>>>>/................................................... │
00:00:30 v #7221 > > │ ........                                                                     │
00:00:30 v #7222 > > │ ..............;;;;;;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>////////////............ │
00:00:30 v #7223 > > │ ..........>>>>>>>>>>........................................................ │
00:00:30 v #7224 > > │ ........                                                                     │
00:00:30 v #7225 > > │ ..............;;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>////////............ │
00:00:30 v #7226 > > │ ............................................................................ │
00:00:30 v #7227 > > │ ........                                                                     │
00:00:30 v #7228 > > │ .................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>////............ │
00:00:30 v #7229 > > │ ............................................................................ │
00:00:30 v #7230 > > │ ........                                                                     │
00:00:30 v #7231 > > │ ......................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>............ │
00:00:30 v #7232 > > │ ............................................................................ │
00:00:30 v #7233 > > │ ........                                                                     │
00:00:30 v #7234 > > │ ............................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>.............. │
00:00:30 v #7235 > > │ ............................................................................ │
00:00:30 v #7236 > > │ ........                                                                     │
00:00:30 v #7237 > > │ ..................................>>>>>>>>>>>>>>>>>>........................ │
00:00:30 v #7238 > > │ ............................................................................ │
00:00:30 v #7239 > > │ ........                                                                     │
00:00:30 v #7240 > > │ .......................................>=................................... │
00:00:30 v #7241 > > │ ............................................................................ │
00:00:30 v #7242 > > │ ........                                                                     │
00:00:30 v #7243 > > │ ............................................................................ │
00:00:30 v #7244 > > │ ............................................................................ │
00:00:30 v #7245 > > │ ........                                                                     │
00:00:30 v #7246 > > │ ............................................................................ │
00:00:30 v #7247 > > │ ............................................................................ │
00:00:30 v #7248 > > │ ........                                                                     │
00:00:30 v #7249 > > │ ............................................................................ │
00:00:30 v #7250 > > │ ............................................................................ │
00:00:30 v #7251 > > │ ........                                                                     │
00:00:30 v #7252 > > │ ............................................................................ │
00:00:30 v #7253 > > │ ............................................................................ │
00:00:30 v #7254 > > │ ........                                                                     │
00:00:30 v #7255 > > │ ............................................................................ │
00:00:30 v #7256 > > │ ............................................................................ │
00:00:30 v #7257 > > │ ........                                                                     │
00:00:30 v #7258 > > │ ............................................................................ │
00:00:30 v #7259 > > │ ............................................................................ │
00:00:30 v #7260 > > │ ........                                                                     │
00:00:30 v #7261 > > │ ............................................................................ │
00:00:30 v #7262 > > │ ............................................................................ │
00:00:30 v #7263 > > │ ........                                                                     │
00:00:30 v #7264 > > │ ............................................................................ │
00:00:30 v #7265 > > │ ............................................................................ │
00:00:30 v #7266 > > │ ........                                                                     │
00:00:30 v #7267 > > │ ............................................................................ │
00:00:30 v #7268 > > │ ............................................................................ │
00:00:30 v #7269 > > │ ........                                                                     │
00:00:30 v #7270 > > │ ............................................................................ │
00:00:30 v #7271 > > │ ............................................................................ │
00:00:30 v #7272 > > │ ........                                                                     │
00:00:30 v #7273 > > │                                                                              │
00:00:30 v #7274 > > │ ............................................................................ │
00:00:30 v #7275 > > │ ............................................................................ │
00:00:30 v #7276 > > │ ........                                                                     │
00:00:30 v #7277 > > │ ............................................................................ │
00:00:30 v #7278 > > │ ............................................................................ │
00:00:30 v #7279 > > │ ........                                                                     │
00:00:30 v #7280 > > │ ............................................................................ │
00:00:30 v #7281 > > │ ............................................................................ │
00:00:30 v #7282 > > │ ........                                                                     │
00:00:30 v #7283 > > │ ............................................................................ │
00:00:30 v #7284 > > │ ............................................................................ │
00:00:30 v #7285 > > │ ........                                                                     │
00:00:30 v #7286 > > │ ............................................................................ │
00:00:30 v #7287 > > │ ............................................................................ │
00:00:30 v #7288 > > │ ........                                                                     │
00:00:30 v #7289 > > │ ............................................................................ │
00:00:30 v #7290 > > │ ............................................................................ │
00:00:30 v #7291 > > │ ........                                                                     │
00:00:30 v #7292 > > │ ............................................................................ │
00:00:30 v #7293 > > │ ............................................................................ │
00:00:30 v #7294 > > │ ........                                                                     │
00:00:30 v #7295 > > │ .....................................<;;/<.................................. │
00:00:30 v #7296 > > │ ............................................................................ │
00:00:30 v #7297 > > │ ........                                                                     │
00:00:30 v #7298 > > │ ...................................;;;;;///<................................ │
00:00:30 v #7299 > > │ ............................................................................ │
00:00:30 v #7300 > > │ ........                                                                     │
00:00:30 v #7301 > > │ .................................;;;;;;///////<............................. │
00:00:30 v #7302 > > │ ............................................................................ │
00:00:30 v #7303 > > │ ........                                                                     │
00:00:30 v #7304 > > │ ...............................;;;;;;;;//////////<.......................... │
00:00:30 v #7305 > > │ ............................................................................ │
00:00:30 v #7306 > > │ ........                                                                     │
00:00:30 v #7307 > > │ ............................<;;;;;;;;;;/////////////........................ │
00:00:30 v #7308 > > │ ............................................................................ │
00:00:30 v #7309 > > │ ........                                                                     │
00:00:30 v #7310 > > │ ..........................<;;;;;;;;;;;;///////////////<..................... │
00:00:30 v #7311 > > │ ............................................................................ │
00:00:30 v #7312 > > │ ........                                                                     │
00:00:30 v #7313 > > │ ........................;;;;;;;;;;;;;;;//////////////////<.................. │
00:00:30 v #7314 > > │ ............................................................................ │
00:00:30 v #7315 > > │ ........                                                                     │
00:00:30 v #7316 > > │ ......................;;;;;;;;;;;;;;;;//////////////////////................ │
00:00:30 v #7317 > > │ ............................................................................ │
00:00:30 v #7318 > > │ ........                                                                     │
00:00:30 v #7319 > > │ ....................;;;;;;;;;;;;;;;;;;////////////////////////.............. │
00:00:30 v #7320 > > │ ...........;;;//............................................................ │
00:00:30 v #7321 > > │ ........                                                                     │
00:00:30 v #7322 > > │ ....................;;;;;;;;;;;;;;;;;;/////////////////////////............. │
00:00:30 v #7323 > > │ ........;;;;;;//////........................................................ │
00:00:30 v #7324 > > │ ........                                                                     │
00:00:30 v #7325 > > │ ...................;;;;;;;;;;;;;;;;;;;/////////////////////////............. │
00:00:30 v #7326 > > │ .....<;;;;;;;;////////<..................................................... │
00:00:30 v #7327 > > │ ........                                                                     │
00:00:30 v #7328 > > │ ...................;;;;;;;;;;;;;;;;;;;/////////////////////////............. │
00:00:30 v #7329 > > │ ...;;;;;;;;;;;////////////.................;/............................... │
00:00:30 v #7330 > > │ ........                                                                     │
00:00:30 v #7331 > > │ ..................\;;;;;;;;;;;;;;;;;;//////////////////////////............. │
00:00:30 v #7332 > > │ ...;;;;;;;;;;/////////////.............<;;;;////<........................... │
00:00:30 v #7333 > > │ ........                                                                     │
00:00:30 v #7334 > > │ ..................;;;;;;;;;;;;;;;;;;;//////////////////////////............. │
00:00:30 v #7335 > > │ ...;;;;;;;;;;/////////////............;;;;;;//////.......................... │
00:00:30 v #7336 > > │ ........                                                                     │
00:00:30 v #7337 > > │ ..................;;;;;;;;;;;;;;;;;;;///////////////////////////............ │
00:00:30 v #7338 > > │ ..;;;;;;;;;;;/////////////............;;;;;;//////.......................... │
00:00:30 v #7339 > > │ ........                                                                     │
00:00:30 v #7340 > > │ .................;;;;;;;;;;;;;;;;;;;;///////////////////////////............ │
00:00:30 v #7341 > > │ ..;;;;;;;;;;;>////////////............;;;;;;>>////.......................... │
00:00:30 v #7342 > > │ ........                                                                     │
00:00:30 v #7343 > > │ .................;;;;;;;;;;;;;;;;;;;;///////////////////////////............ │
00:00:30 v #7344 > > │ ..;;;;;;;;;;>>>>/>////////............;;;>>>>>>>>>.......................... │
00:00:30 v #7345 > > │ ........                                                                     │
00:00:30 v #7346 > > │ ................;;;;;;;;;;;;;;;;;;;;>>>>>///////////////////////............ │
00:00:30 v #7347 > > │ .\;;;;;>>>>>>>>>>>>>/>////.............>>>>>>>>>=........................... │
00:00:30 v #7348 > > │ ........                                                                     │
00:00:30 v #7349 > > │ ................;;;;;;;;;;;;;;;;>>>>>>>>>>>>>>//////////////////............ │
00:00:30 v #7350 > > │ .;;;>>>>>>>>>>>>>>>>>>>>>>..................=............................... │
00:00:30 v #7351 > > │ ........                                                                     │
00:00:30 v #7352 > > │ ...............;;;;;;;;;;;;>>>>>>>>>>>>>>>>>>>>>>>//////////////............ │
00:00:30 v #7353 > > │ ....>>>>>>>>>>>>>>>>>>>>>................................................... │
00:00:30 v #7354 > > │ ........                                                                     │
00:00:30 v #7355 > > │ ...............;;;;;;;;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>//////////........... │
00:00:30 v #7356 > > │ .........\>>>>>>>>=......................................................... │
00:00:30 v #7357 > > │ ........                                                                     │
00:00:30 v #7358 > > │ ..............;;;;;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>/////........... │
00:00:30 v #7359 > > │ ............................................................................ │
00:00:30 v #7360 > > │ ........                                                                     │
00:00:30 v #7361 > > │ ..............;;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>/........... │
00:00:30 v #7362 > > │ ............................................................................ │
00:00:30 v #7363 > > │ ........                                                                     │
00:00:30 v #7364 > > │ ....................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>........... │
00:00:30 v #7365 > > │ ............................................................................ │
00:00:30 v #7366 > > │ ........                                                                     │
00:00:30 v #7367 > > │ ..........................\>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>.................. │
00:00:30 v #7368 > > │ ............................................................................ │
00:00:30 v #7369 > > │ ........                                                                     │
00:00:30 v #7370 > > │ .................................>>>>>>>>>>>>>>>>........................... │
00:00:30 v #7371 > > │ ............................................................................ │
00:00:30 v #7372 > > │ ........                                                                     │
00:00:30 v #7373 > > │ ........................................=................................... │
00:00:30 v #7374 > > │ ............................................................................ │
00:00:30 v #7375 > > │ ........                                                                     │
00:00:30 v #7376 > > │ ............................................................................ │
00:00:30 v #7377 > > │ ............................................................................ │
00:00:30 v #7378 > > │ ........                                                                     │
00:00:30 v #7379 > > │ ............................................................................ │
00:00:30 v #7380 > > │ ............................................................................ │
00:00:30 v #7381 > > │ ........                                                                     │
00:00:30 v #7382 > > │ ............................................................................ │
00:00:30 v #7383 > > │ ............................................................................ │
00:00:30 v #7384 > > │ ........                                                                     │
00:00:30 v #7385 > > │ ............................................................................ │
00:00:30 v #7386 > > │ ............................................................................ │
00:00:30 v #7387 > > │ ........                                                                     │
00:00:30 v #7388 > > │ ............................................................................ │
00:00:30 v #7389 > > │ ............................................................................ │
00:00:30 v #7390 > > │ ........                                                                     │
00:00:30 v #7391 > > │ ............................................................................ │
00:00:30 v #7392 > > │ ............................................................................ │
00:00:30 v #7393 > > │ ........                                                                     │
00:00:30 v #7394 > > │ ............................................................................ │
00:00:30 v #7395 > > │ ............................................................................ │
00:00:30 v #7396 > > │ ........                                                                     │
00:00:30 v #7397 > > │ ............................................................................ │
00:00:30 v #7398 > > │ ............................................................................ │
00:00:30 v #7399 > > │ ........                                                                     │
00:00:30 v #7400 > > │ ............................................................................ │
00:00:30 v #7401 > > │ ............................................................................ │
00:00:30 v #7402 > > │ ........                                                                     │
00:00:30 v #7403 > > │ ............................................................................ │
00:00:30 v #7404 > > │ ............................................................................ │
00:00:30 v #7405 > > │ ........                                                                     │
00:00:30 v #7406 > > │                                                                              │
00:00:30 v #7407 > > │ ............................................................................ │
00:00:30 v #7408 > > │ ............................................................................ │
00:00:30 v #7409 > > │ ........                                                                     │
00:00:30 v #7410 > > │ ............................................................................ │
00:00:30 v #7411 > > │ ............................................................................ │
00:00:30 v #7412 > > │ ........                                                                     │
00:00:30 v #7413 > > │ ............................................................................ │
00:00:30 v #7414 > > │ ............................................................................ │
00:00:30 v #7415 > > │ ........                                                                     │
00:00:30 v #7416 > > │ ............................................................................ │
00:00:30 v #7417 > > │ ............................................................................ │
00:00:30 v #7418 > > │ ........                                                                     │
00:00:30 v #7419 > > │ ............................................................................ │
00:00:30 v #7420 > > │ ............................................................................ │
00:00:30 v #7421 > > │ ........                                                                     │
00:00:30 v #7422 > > │ ............................................................................ │
00:00:30 v #7423 > > │ ............................................................................ │
00:00:30 v #7424 > > │ ........                                                                     │
00:00:30 v #7425 > > │ ............................................................................ │
00:00:30 v #7426 > > │ ............................................................................ │
00:00:30 v #7427 > > │ ........                                                                     │
00:00:30 v #7428 > > │ .....................................;;//................................... │
00:00:30 v #7429 > > │ ............................................................................ │
00:00:30 v #7430 > > │ ........                                                                     │
00:00:30 v #7431 > > │ ...................................;;;;////<................................ │
00:00:30 v #7432 > > │ ............................................................................ │
00:00:30 v #7433 > > │ ........                                                                     │
00:00:30 v #7434 > > │ ................................<;;;;;;///////.............................. │
00:00:30 v #7435 > > │ ............................................................................ │
00:00:30 v #7436 > > │ ........                                                                     │
00:00:30 v #7437 > > │ ..............................<;;;;;;;;/////////<........................... │
00:00:30 v #7438 > > │ ............................................................................ │
00:00:30 v #7439 > > │ ........                                                                     │
00:00:30 v #7440 > > │ ............................;;;;;;;;;;;////////////<........................ │
00:00:30 v #7441 > > │ ............................................................................ │
00:00:30 v #7442 > > │ ........                                                                     │
00:00:30 v #7443 > > │ ..........................;;;;;;;;;;;;;///////////////<..................... │
00:00:30 v #7444 > > │ ............................................................................ │
00:00:30 v #7445 > > │ ........                                                                     │
00:00:30 v #7446 > > │ .......................<;;;;;;;;;;;;;;;//////////////////................... │
00:00:30 v #7447 > > │ ............................................................................ │
00:00:30 v #7448 > > │ ........                                                                     │
00:00:30 v #7449 > > │ .....................;;;;;;;;;;;;;;;;;;/////////////////////................ │
00:00:30 v #7450 > > │ ............................................................................ │
00:00:30 v #7451 > > │ ........                                                                     │
00:00:30 v #7452 > > │ ...................;;;;;;;;;;;;;;;;;;;;//////////////////////............... │
00:00:30 v #7453 > > │ ...........;;;//............................................................ │
00:00:30 v #7454 > > │ ........                                                                     │
00:00:30 v #7455 > > │ ...................;;;;;;;;;;;;;;;;;;;;///////////////////////.............. │
00:00:30 v #7456 > > │ ........;;;;;;//////........................................................ │
00:00:30 v #7457 > > │ ........                                                                     │
00:00:30 v #7458 > > │ ..................\;;;;;;;;;;;;;;;;;;;;///////////////////////.............. │
00:00:30 v #7459 > > │ .....;;;;;;;;;/////////..................................................... │
00:00:30 v #7460 > > │ ........                                                                     │
00:00:30 v #7461 > > │ ..................;;;;;;;;;;;;;;;;;;;;;///////////////////////.............. │
00:00:30 v #7462 > > │ ...;;;;;;;;;;;///////////..................;/............................... │
00:00:30 v #7463 > > │ ........                                                                     │
00:00:30 v #7464 > > │ ..................;;;;;;;;;;;;;;;;;;;;;////////////////////////............. │
00:00:30 v #7465 > > │ ...;;;;;;;;;;;////////////.............<;;;;////<........................... │
00:00:30 v #7466 > > │ ........                                                                     │
00:00:30 v #7467 > > │ ..................;;;;;;;;;;;;;;;;;;;;;////////////////////////............. │
00:00:30 v #7468 > > │ ..\;;;;;;;;;;;////////////............;;;;;;//////.......................... │
00:00:30 v #7469 > > │ ........                                                                     │
00:00:30 v #7470 > > │ .................;;;;;;;;;;;;;;;;;;;;;;////////////////////////............. │
00:00:30 v #7471 > > │ ..;;;;;;;;;;;;////////////............;;;;;;//////.......................... │
00:00:30 v #7472 > > │ ........                                                                     │
00:00:30 v #7473 > > │ .................;;;;;;;;;;;;;;;;;;;;;;/////////////////////////............ │
00:00:30 v #7474 > > │ ..;;;;;;;;;;;;>///////////............;;;;;;>>>///.......................... │
00:00:30 v #7475 > > │ ........                                                                     │
00:00:30 v #7476 > > │ .................;;;;;;;;;;;;;;;;;;;;;;/////////////////////////............ │
00:00:30 v #7477 > > │ ..;;;;;;;;;;;>>>>>>///////............;;;;>>>>>>>>.......................... │
00:00:30 v #7478 > > │ ........                                                                     │
00:00:30 v #7479 > > │ ................;;;;;;;;;;;;;;;;;;;;;;;>>>>/////////////////////............ │
00:00:30 v #7480 > > │ ..;;;;;;;;>>>>>>>>>>>>>>//.............>>>>>>>>>=........................... │
00:00:30 v #7481 > > │ ........                                                                     │
00:00:30 v #7482 > > │ ................;;;;;;;;;;;;;;;;;;;>>>>>>>>>>>>>/////////////////........... │
00:00:30 v #7483 > > │ ..;;;;>>>>>>>>>>>>>>>>>>>>..................=............................... │
00:00:30 v #7484 > > │ ........                                                                     │
00:00:30 v #7485 > > │ ................;;;;;;;;;;;;;;;;>>>>>>>>>>>>>>>>>>>>>////////////........... │
00:00:30 v #7486 > > │ ...\>>>>>>>>>>>>>>>>>>>>.................................................... │
00:00:30 v #7487 > > │ ........                                                                     │
00:00:30 v #7488 > > │ ...............\;;;;;;;;;;;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>///////........... │
00:00:30 v #7489 > > │ .........>>>>>>>>>=......................................................... │
00:00:30 v #7490 > > │ ........                                                                     │
00:00:30 v #7491 > > │ ...............;;;;;;;;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>///.......... │
00:00:30 v #7492 > > │ ............................................................................ │
00:00:30 v #7493 > > │ ........                                                                     │
00:00:30 v #7494 > > │ ...............;;;;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>.......... │
00:00:30 v #7495 > > │ ............................................................................ │
00:00:30 v #7496 > > │ ........                                                                     │
00:00:30 v #7497 > > │ ................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>=.............. │
00:00:30 v #7498 > > │ ............................................................................ │
00:00:30 v #7499 > > │ ........                                                                     │
00:00:30 v #7500 > > │ ........................\>>>>>>>>>>>>>>>>>>>>>>>>>>>>>=..................... │
00:00:30 v #7501 > > │ ............................................................................ │
00:00:30 v #7502 > > │ ........                                                                     │
00:00:30 v #7503 > > │ .................................\>>>>>>>>>>>>>=............................ │
00:00:30 v #7504 > > │ ............................................................................ │
00:00:30 v #7505 > > │ ........                                                                     │
00:00:30 v #7506 > > │ ............................................................................ │
00:00:30 v #7507 > > │ ............................................................................ │
00:00:30 v #7508 > > │ ........                                                                     │
00:00:30 v #7509 > > │ ............................................................................ │
00:00:30 v #7510 > > │ ............................................................................ │
00:00:30 v #7511 > > │ ........                                                                     │
00:00:30 v #7512 > > │ ............................................................................ │
00:00:30 v #7513 > > │ ............................................................................ │
00:00:30 v #7514 > > │ ........                                                                     │
00:00:30 v #7515 > > │ ............................................................................ │
00:00:30 v #7516 > > │ ............................................................................ │
00:00:30 v #7517 > > │ ........                                                                     │
00:00:30 v #7518 > > │ ............................................................................ │
00:00:30 v #7519 > > │ ............................................................................ │
00:00:30 v #7520 > > │ ........                                                                     │
00:00:30 v #7521 > > │ ............................................................................ │
00:00:30 v #7522 > > │ ............................................................................ │
00:00:30 v #7523 > > │ ........                                                                     │
00:00:30 v #7524 > > │ ............................................................................ │
00:00:30 v #7525 > > │ ............................................................................ │
00:00:30 v #7526 > > │ ........                                                                     │
00:00:30 v #7527 > > │ ............................................................................ │
00:00:30 v #7528 > > │ ............................................................................ │
00:00:30 v #7529 > > │ ........                                                                     │
00:00:30 v #7530 > > │ ............................................................................ │
00:00:30 v #7531 > > │ ............................................................................ │
00:00:30 v #7532 > > │ ........                                                                     │
00:00:30 v #7533 > > │ ............................................................................ │
00:00:30 v #7534 > > │ ............................................................................ │
00:00:30 v #7535 > > │ ........                                                                     │
00:00:30 v #7536 > > │ ............................................................................ │
00:00:30 v #7537 > > │ ............................................................................ │
00:00:30 v #7538 > > │ ........                                                                     │
00:00:30 v #7539 > > │                                                                              │
00:00:30 v #7540 > > │                                                                              │
00:00:30 v #7541 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:30 v #7542 > 00:00:28 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 588164 }
00:00:30 v #7543 > 00:00:28 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/polyglot/apps/spiral/temp/cube/cube.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/polyglot/apps/spiral/temp/cube/cube.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:00:31 v #7544 > 00:00:30 v #5 ! [NbConvertApp] Converting notebook c:/home/git/polyglot/apps/spiral/temp/cube/cube.dib.ipynb to html
00:00:31 v #7545 > 00:00:30 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:00:31 v #7546 > 00:00:30 v #7 !   validate(nb)
00:00:32 v #7547 > 00:00:30 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:00:32 v #7548 > 00:00:30 v #9 !   return _pygments_highlight(
00:00:33 v #7549 > 00:00:31 v #10 ! [NbConvertApp] Writing 799616 bytes to c:\home\git\polyglot\apps\spiral\temp\cube\cube.dib.html
00:00:33 v #7550 > 00:00:31 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 872 }
00:00:33 v #7551 > 00:00:31 d #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 872 }
00:00:33 v #7552 > 00:00:31 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/polyglot/apps/spiral/temp/cube/cube.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/polyglot/apps/spiral/temp/cube/cube.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:00:33 v #7553 > 00:00:31 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:00:33 v #7554 > 00:00:31 d #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:00:33 v #7555 > 00:00:31 d #16 spiral_builder.run / dib / { exit_code = 0; result_length = 589095 }
00:00:33 d #7556 runtime.execute_with_options_async / { exit_code = 0; output_length = 606780 }
00:00:33 d #3 main / executeCommand / exitCode: 0 / command: ../../../../workspace/target/release/spiral_builder.exe dib --path cube.dib
00:00:33 v #5 async.run_with_timeout_async / { timeout = 100 }
00:00:00 d #1 writeDibCode / output: Spi / path: cube.dib
00:00:00 d #2 parseDibCode / output: Spi / file: cube.dib
00:00:00 v #1 async.run_with_timeout_async / { timeout = 180 }
00:00:00 d #1 runtime.execute_with_options_async / { file_name = dotnet; arguments = US5_0
  ""C:\home\git\polyglot\deps\The-Spiral-Language\The Spiral Language 2\artifacts\bin\The Spiral Language 2\release\Spiral.dll" --port 13805 --default-int i32 --default-float f64"; options = { command = dotnet "C:\home\git\polyglot\deps\The-Spiral-Language\The Spiral Language 2\artifacts\bin\The Spiral Language 2\release\Spiral.dll" --port 13805 --default-int i32 --default-float f64; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = Some <fun:main@595-7>; stdin = None; trace = true; working_directory = Some "C:\home\git\polyglot" } }
00:00:01 v #2 > 00:00:00 d #1 pwd: C:\home\git\polyglot
00:00:01 v #3 > 00:00:00 d #2 dllPath: C:\home\git\polyglot\deps\The-Spiral-Language\The Spiral Language 2\artifacts\bin\The Spiral Language 2\release
00:00:01 v #4 > 00:00:00 d #3 targetDir: C:\home\git\polyglot\target/spiral_Eval
00:00:01 v #2 async.run_with_timeout_async / { timeout = 100 }
00:00:01 v #3 async.run_with_timeout_async / { timeout = 100 }
00:00:01 v #5 > Starting the Spiral Server. It is bound to: http://localhost:13805
00:00:01 v #4 async.run_with_timeout_async / { timeout = 100 }
00:00:01 v #1 Supervisor.sendJson / port: 13805 / json: {"Ping":true} / result:
00:00:01 v #2 Supervisor.awaitCompiler / Ping / result: 'Some null' / port: 13805 / retry: 1
00:00:01 v #6 > Server bound to: http://localhost:13805
00:00:02 v #5 async.run_with_timeout_async / { timeout = 180 }
00:00:02 d #3 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: cube.spi
00:00:02 d #4 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: cube.spi
00:00:02 d #5 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: cube.spi
00:00:02 v #6 Supervisor.sendJson / port: 13805 / json: {"FileOpen":{"spiText":"/// # cube\n\n/// ## cube\n\n/// ### get_width\ninl get_width () =\n    160i...   $\u0027#endif\u0027 : ()\n","uri":"file:///c:/home/git/polyglot/apps/spiral/temp/cube/cube.spi"}} / result:
00:00:02 v #7 Supervisor.sendJson / port: 13805 / json: {"BuildFile":{"backend":"Fsharp","uri":"file:///c:/home/git/polyglot/apps/spiral/temp/cube/cube.spi"}} / result:
00:00:02 d #8 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: cube.spi
00:00:02 d #9 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: cube.spi
00:00:03 d #10 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: cube.spi
00:00:03 d #11 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: cube.spi
00:00:03 d #12 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: cube.spi
00:00:03 d #13 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: cube.spi
00:00:04 d #14 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: cube.spi
00:00:04 d #15 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: cube.spi
00:00:04 d #16 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: cube.spi
00:00:04 d #17 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: cube.spi
00:00:05 d #18 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: cube.spi
00:00:05 d #19 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: cube.spi
00:00:05 d #20 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: cube.spi
00:00:05 d #21 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: cube.spi
00:00:06 d #22 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: cube.spi
00:00:06 d #23 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: cube.spi
00:00:06 d #24 Supervisor.buildFile / AsyncSeq.scan / outputContent:
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("std::string::String")>]
type std_string_String = class end
#else
type std_string_String = stri...
    ()
let v0 : ((string []) -> unit) = closure0()
let main_ = v0 
#if !FABLE_COMPILER_RUST
main_ [||]
#else
let main args = main_ [||]; 0
#endif
()
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: cube.spi
00:00:06 d #25 Supervisor.buildFile / takeWhileInclusive / outputContent:
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("std::string::String")>]
type std_string_String = class end
#else
type std_string_String = stri...
    ()
let v0 : ((string []) -> unit) = closure0()
let main_ = v0 
#if !FABLE_COMPILER_RUST
main_ [||]
#else
let main args = main_ [||]; 0
#endif
()
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: cube.spi
00:00:06 d #26 FileSystem.watchWithFilter / Disposing watch stream / filter: FileName, LastWrite
00:00:06 v #6 async.run_with_timeout_async / { timeout = 100 }
00:00:00 d #1 persistCodeProject / packages: [Fable.Core] / modules: [lib/spiral/common.fsx; lib/spiral/sm.fsx; lib/spiral/crypto.fsx; ... ] / name: cube / hash:  / code.Length: 48912
targetDir: C:\home\git\polyglot\target\Builder\cube
Fable 4.21.0: F# to Rust compiler (status: alpha)

Thanks to the contributor! @zpodlovics
Stand with Ukraine! https://standwithukraine.com.ua/

Parsing target\Builder\cube\cube.fsproj...
Retrieving project options from cache, in case of issues run `dotnet fable clean` or try `--noCache` option.
Project and references (14 source files) parsed in 175ms

Started Fable compilation...

Fable compilation finished in 7967ms

.\lib\spiral\common.fsx(2015,0): (2015,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
.\lib\spiral\sm.fsx(517,0): (517,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
.\lib\spiral\crypto.fsx(2239,0): (2239,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
.\lib\spiral\date_time.fsx(1613,0): (1613,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
.\lib\spiral\async_.fsx(146,0): (146,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
.\lib\spiral\threading.fsx(140,0): (140,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
.\lib\spiral\networking.fsx(20552,0): (20552,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
.\lib\spiral\platform.fsx(116,0): (116,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
.\lib\spiral\runtime.fsx(9265,0): (9265,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
.\lib\spiral\file_system.fsx(35073,0): (35073,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
.\lib\spiral\trace.fsx(2052,0): (2052,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
Fable 4.21.0: F# to TypeScript compiler
Minimum @fable-org/fable-library-ts version (when installed from npm): 1.5.0

Thanks to the contributor! @Alxandr
Stand with Ukraine! https://standwithukraine.com.ua/

Parsing target\Builder\cube\cube.fsproj...
Retrieving project options from cache, in case of issues run `dotnet fable clean` or try `--noCache` option.
Project and references (14 source files) parsed in 174ms

Started Fable compilation...

Fable compilation finished in 6340ms

Fable 4.21.0: F# to Python compiler (status: beta)

Thanks to the contributor! @chkn
Stand with Ukraine! https://standwithukraine.com.ua/

Parsing target\Builder\cube\cube.fsproj...
Retrieving project options from cache, in case of issues run `dotnet fable clean` or try `--noCache` option.
Project and references (14 source files) parsed in 170ms

Started Fable compilation...

Fable compilation finished in 6621ms

bun install v1.1.7 (b0b7db5c)

Checked 11 installs across 13 packages (no changes) [62.00ms]
[INFO]: 🎯  Checking for the Wasm target...
[INFO]: 🌀  Compiling to Wasm...
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.73s
[INFO]: ⬇️  Installing wasm-bindgen...
[INFO]: Optional field missing from Cargo.toml: 'description'. This is not necessary, but recommended
[INFO]: origin crate has no LICENSE
[INFO]: ✨   Done in 2.04s
[INFO]: 📦   Your wasm pkg is ready to publish at C:\home\git\polyglot\apps\spiral\temp\extension\pkg.
▲ [WARNING] "import.meta" is not available with the "iife" output format and will be empty [empty-import-meta]

    pkg/spiral_temp_extension.js:1472:66:
      1472 │ ...ath = new URL('spiral_temp_extension_bg.wasm', import.meta.url);
           ╵                                                   ~~~~~~~~~~~

  You need to set the output format to "esm" for "import.meta" to work correctly.

1 warning

  dist\spiral_temp_extension_bg-GT2E46IO.wasm   4.5mb ⚠️
  dist\devtools.js                             29.0kb
  dist\content_script.js                       26.6kb
  dist\service_worker.js                        2.2kb

⚡ Done in 55ms
$ playwright test
[WebServer]  Resolving dependencies

[WebServer]  Resolved, downloaded and extracted [160]

[WebServer]  Saved lockfile


Running 3 tests using 3 workers

[1/3] [Desktop Chrome] › extension.spec.ts:3:5 › popup localhost
[2/3] [Desktop Chrome] › extension.spec.ts:13:5 › libgen
[3/3] [Desktop Chrome] › extension.spec.ts:8:5 › popup extension
  3 passed (25.5s)

To open last HTML report run:

  npx playwright show-report

00:00:00 v #1 async.run_with_timeout_async / { timeout = 180 }
00:00:00 d #1 runtime.execute_with_options_async / { file_name = dotnet; arguments = US5_0
  ""C:\home\git\polyglot\deps\The-Spiral-Language\The Spiral Language 2\artifacts\bin\The Spiral Language 2\release\Spiral.dll" --port 13805 --default-int i32 --default-float f64"; options = { command = dotnet "C:\home\git\polyglot\deps\The-Spiral-Language\The Spiral Language 2\artifacts\bin\The Spiral Language 2\release\Spiral.dll" --port 13805 --default-int i32 --default-float f64; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = Some <fun:main@595-7>; stdin = None; trace = true; working_directory = Some "C:\home\git\polyglot" } }
00:00:01 v #2 > 00:00:00 d #1 pwd: C:\home\git\polyglot
00:00:01 v #3 > 00:00:00 d #2 dllPath: C:\home\git\polyglot\deps\The-Spiral-Language\The Spiral Language 2\artifacts\bin\The Spiral Language 2\release
00:00:01 v #4 > 00:00:00 d #3 targetDir: C:\home\git\polyglot\target/spiral_Eval
00:00:01 v #2 async.run_with_timeout_async / { timeout = 100 }
00:00:01 v #3 async.run_with_timeout_async / { timeout = 100 }
00:00:01 v #5 > Starting the Spiral Server. It is bound to: http://localhost:13805
00:00:01 v #4 async.run_with_timeout_async / { timeout = 100 }
00:00:01 v #1 Supervisor.sendJson / port: 13805 / json: {"Ping":true} / result:
00:00:01 v #2 Supervisor.awaitCompiler / Ping / result: 'Some null' / port: 13805 / retry: 1
00:00:01 v #6 > Server bound to: http://localhost:13805
00:00:01 d #7 runtime.execute_with_options_async / { file_name = ../../../../workspace/target/release/spiral_builder.exe; arguments = US5_0 "dib --path build.dib"; options = { command = ../../../../workspace/target/release/spiral_builder.exe dib --path build.dib; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:00:01 v #8 > 00:00:00 d #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "build.dib"])) }
00:00:01 v #9 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/polyglot/apps/spiral/temp/test/build.dib", "--output-path", "c:/home/git/polyglot/apps/spiral/temp/test/build.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/polyglot/apps/spiral/temp/test/build.dib" --output-path "c:/home/git/polyglot/apps/spiral/temp/test/build.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:00:03 v #10 > >
00:00:03 v #11 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:03 v #12 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:03 v #13 > > │ # test                                                                       │
00:00:03 v #14 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:03 v #15 > >
00:00:03 v #16 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:03 v #17 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:03 v #18 > > │ ## include scripts                                                           │
00:00:03 v #19 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:03 v #20 > >
00:00:03 v #21 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:03 v #22 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:03 v #23 > > │ ### include notebook core                                                    │
00:00:03 v #24 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:03 v #25 > >
00:00:03 v #26 > > ── pwsh ────────────────────────────────────────────────────────────────────────
00:00:03 v #27 > > . ../../../../scripts/nbs_header.ps1
00:00:04 v #28 > >
00:00:04 v #29 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:04 v #30 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:04 v #31 > > │ ### Include core functions script                                            │
00:00:04 v #32 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:04 v #33 > >
00:00:04 v #34 > > ── pwsh ────────────────────────────────────────────────────────────────────────
00:00:04 v #35 > > . ../../../../scripts/core.ps1
00:00:04 v #36 > >
00:00:04 v #37 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:04 v #38 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:04 v #39 > > │ ### Include spiral library                                                   │
00:00:04 v #40 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:04 v #41 > >
00:00:04 v #42 > > ── pwsh ────────────────────────────────────────────────────────────────────────
00:00:04 v #43 > > . ../../../../lib/spiral/lib.ps1
00:00:04 v #44 > >
00:00:04 v #45 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:04 v #46 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:04 v #47 > > │ ## execute project commands                                                  │
00:00:04 v #48 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:04 v #49 > >
00:00:04 v #50 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:04 v #51 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:04 v #52 > > │ ### run notebook with retries using spiral supervisor                        │
00:00:04 v #53 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:04 v #54 > >
00:00:04 v #55 > > ── pwsh ────────────────────────────────────────────────────────────────────────
00:00:04 v #56 > > { . ../../../../apps/spiral/dist/Supervisor$(_exe) --execute-command
00:00:04 v #57 > > "../../../../workspace/target/release/spiral_builder$(_exe) dib --path test.dib
00:00:04 v #58 > > --retries 3" } | Invoke-Block
00:00:19 v #59 > <test>
00:00:19 v #60 > </test>
00:00:22 v #61 > >
00:00:22 v #62 > > ╭─[ 18.12s - stdout ]──────────────────────────────────────────────────────────╮
00:00:22 v #63 > > │ 00:00:00 v #1 async.run_with_timeout_async / { timeout = 180 }          │
00:00:22 v #64 > > │ 00:00:01 d #1 runtime.execute_with_options_async / { file_name =        │
00:00:22 v #65 > > │ ../../../../workspace/target/release/spiral_builder.exe; arguments = US5_0   │
00:00:22 v #66 > > │ "dib --path test.dib --retries 3"; options = { command =                     │
00:00:22 v #67 > > │ ../../../../workspace/target/release/spiral_builder.exe dib --path test.dib  │
00:00:22 v #68 > > │ --retries 3; cancellation_token = Some System.Threading.CancellationToken;   │
00:00:22 v #69 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true;    │
00:00:22 v #70 > > │ working_directory = None } }                                                 │
00:00:22 v #71 > > │ 00:00:01 v #2 > 00:00:00 d #1 spiral_builder.main / { args =      │
00:00:22 v #72 > > │ Array(MutCell(["dib", "--path", "test.dib", "--retries", "3"])) }            │
00:00:22 v #73 > > │ 00:00:01 v #3 > 00:00:00 d #2 runtime.execute_with_options / {    │
00:00:22 v #74 > > │ file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run",        │
00:00:22 v #75 > > │ "c:/home/git/polyglot/apps/spiral/temp/test/test.dib", "--output-path",      │
00:00:22 v #76 > > │ "c:/home/git/polyglot/apps/spiral/temp/test/test.dib.ipynb"]; options = {    │
00:00:22 v #77 > > │ command = dotnet repl --exit-after-run --run                                 │
00:00:22 v #78 > > │ "c:/home/git/polyglot/apps/spiral/temp/test/test.dib" --output-path          │
00:00:22 v #79 > > │ "c:/home/git/polyglot/apps/spiral/temp/test/test.dib.ipynb";                 │
00:00:22 v #80 > > │ cancellation_token = None; environment_variables = Array(MutCell([           │
00:00:22 v #81 > > │ ("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin │
00:00:22 v #82 > > │ = None; trace = false; working_directory = None } }                          │
00:00:22 v #83 > > │ 00:00:03 v #4 > >                                                       │
00:00:22 v #84 > > │ 00:00:03 v #5 > > ── markdown                                           │
00:00:22 v #85 > > │ ────────────────────────────────────────────────────────────────────         │
00:00:22 v #86 > > │ 00:00:03 v #6 > >                                                       │
00:00:22 v #87 > > │ ╭─────────────────────────────────────────────────────────────────────────── │
00:00:22 v #88 > > │ ───╮                                                                         │
00:00:22 v #89 > > │ 00:00:03 v #7 > > │ # test (Polyglot)                                   │
00:00:22 v #90 > > │ │                                                                            │
00:00:22 v #91 > > │ 00:00:03 v #8 > >                                                       │
00:00:22 v #92 > > │ ╰─────────────────────────────────────────────────────────────────────────── │
00:00:22 v #93 > > │ ───╯                                                                         │
00:00:22 v #94 > > │ 00:00:06 v #9 > >                                                       │
00:00:22 v #95 > > │ 00:00:06 v #10 > > ── spiral                                            │
00:00:22 v #96 > > │ ──────────────────────────────────────────────────────────────────────       │
00:00:22 v #97 > > │ 00:00:06 v #11 > > //// test                                            │
00:00:22 v #98 > > │ 00:00:06 v #12 > >                                                      │
00:00:22 v #99 > > │ 00:00:06 v #13 > > open testing                                         │
00:00:22 v #100 > > │ 00:00:10 v #14 > >                                                      │
00:00:22 v #101 > > │ 00:00:10 v #15 > > ── spiral                                            │
00:00:22 v #102 > > │ ──────────────────────────────────────────────────────────────────────       │
00:00:22 v #103 > > │ 00:00:10 v #16 > > nominal i = ()                                       │
00:00:22 v #104 > > │ 00:00:10 v #17 > > nominal e = ()                                       │
00:00:22 v #105 > > │ 00:00:10 v #18 > > nominal s = ()                                       │
00:00:22 v #106 > > │ 00:00:10 v #19 > > nominal n = ()                                       │
00:00:22 v #107 > > │ 00:00:10 v #20 > > nominal t = ()                                       │
00:00:22 v #108 > > │ 00:00:10 v #21 > > nominal f = ()                                       │
00:00:22 v #109 > > │ 00:00:10 v #22 > > nominal j = ()                                       │
00:00:22 v #110 > > │ 00:00:10 v #23 > > nominal p = ()                                       │
00:00:22 v #111 > > │ 00:00:10 v #24 > >                                                      │
00:00:22 v #112 > > │ 00:00:10 v #25 > > union sensing =                                      │
00:00:22 v #113 > > │ 00:00:10 v #26 > >     | Si : s * i                                     │
00:00:22 v #114 > > │ 00:00:10 v #27 > >     | Se : s * e                                     │
00:00:22 v #115 > > │ 00:00:10 v #28 > >                                                      │
00:00:22 v #116 > > │ 00:00:10 v #29 > > union intuition =                                    │
00:00:22 v #117 > > │ 00:00:10 v #30 > >     | Ni : n * i                                     │
00:00:22 v #118 > > │ 00:00:10 v #31 > >     | Ne : n * e                                     │
00:00:22 v #119 > > │ 00:00:10 v #32 > >                                                      │
00:00:22 v #120 > > │ 00:00:10 v #33 > > union thinking =                                     │
00:00:22 v #121 > > │ 00:00:10 v #34 > >     | Ti : t * i                                     │
00:00:22 v #122 > > │ 00:00:10 v #35 > >     | Te : t * e                                     │
00:00:22 v #123 > > │ 00:00:10 v #36 > >                                                      │
00:00:22 v #124 > > │ 00:00:10 v #37 > > union feeling =                                      │
00:00:22 v #125 > > │ 00:00:10 v #38 > >     | Fi : f * i                                     │
00:00:22 v #126 > > │ 00:00:10 v #39 > >     | Fe : f * e                                     │
00:00:22 v #127 > > │ 00:00:10 v #40 > >                                                      │
00:00:22 v #128 > > │ 00:00:10 v #41 > > union function_stack =                               │
00:00:22 v #129 > > │ 00:00:10 v #42 > >     | FS : sensing * intuition * thinking * feeling  │
00:00:22 v #130 > > │ 00:00:10 v #43 > >                                                      │
00:00:22 v #131 > > │ 00:00:10 v #44 > > union personality_type =                             │
00:00:22 v #132 > > │ 00:00:10 v #45 > >     | ISTJ : i * s * t * j * function_stack          │
00:00:22 v #133 > > │ 00:00:10 v #46 > >     | ISFJ : i * s * f * j * function_stack          │
00:00:22 v #134 > > │ 00:00:10 v #47 > >     | INFJ : i * n * f * j * function_stack          │
00:00:22 v #135 > > │ 00:00:10 v #48 > >     | INTJ : i * n * t * j * function_stack          │
00:00:22 v #136 > > │ 00:00:10 v #49 > >     | ISTP : i * s * t * p * function_stack          │
00:00:22 v #137 > > │ 00:00:10 v #50 > >     | ISFP : i * s * f * p * function_stack          │
00:00:22 v #138 > > │ 00:00:10 v #51 > >     | INFP : i * n * f * p * function_stack          │
00:00:22 v #139 > > │ 00:00:10 v #52 > >     | INTP : i * n * t * p * function_stack          │
00:00:22 v #140 > > │ 00:00:10 v #53 > >     | ESTP : e * s * t * p * function_stack          │
00:00:22 v #141 > > │ 00:00:10 v #54 > >     | ESFP : e * s * f * p * function_stack          │
00:00:22 v #142 > > │ 00:00:10 v #55 > >     | ENFP : e * n * f * p * function_stack          │
00:00:22 v #143 > > │ 00:00:10 v #56 > >     | ENTP : e * n * t * p * function_stack          │
00:00:22 v #144 > > │ 00:00:10 v #57 > >     | ESTJ : e * s * t * j * function_stack          │
00:00:22 v #145 > > │ 00:00:10 v #58 > >     | ESFJ : e * s * f * j * function_stack          │
00:00:22 v #146 > > │ 00:00:10 v #59 > >     | ENFJ : e * n * f * j * function_stack          │
00:00:22 v #147 > > │ 00:00:10 v #60 > >     | ENTJ : e * n * t * j * function_stack          │
00:00:22 v #148 > > │ 00:00:10 v #61 > >                                                      │
00:00:22 v #149 > > │ 00:00:10 v #62 > >                                                      │
00:00:22 v #150 > > │ 00:00:10 v #63 > > inl main () =                                        │
00:00:22 v #151 > > │ 00:00:10 v #64 > >     inl istj_stack = FS ((Si (s, i)), Ne (n, e), (Te │
00:00:22 v #152 > > │ (t, e)), (Fi (f, i)))                                                        │
00:00:22 v #153 > > │ 00:00:10 v #65 > >     inl istj_personality = ISTJ (i, s, t, j,         │
00:00:22 v #154 > > │ istj_stack)                                                                  │
00:00:22 v #155 > > │ 00:00:10 v #66 > >     // inl isfj_stack = FS ((Si (s, i)), Ne (n, e),  │
00:00:22 v #156 > > │ (Fe (f, e)), (Ti (t, i)))                                                    │
00:00:22 v #157 > > │ 00:00:10 v #67 > >     // inl isfj_personality = ISFJ (i, s, f, j,      │
00:00:22 v #158 > > │ isfj_stack)                                                                  │
00:00:22 v #159 > > │ 00:00:10 v #68 > >                                                      │
00:00:22 v #160 > > │ 00:00:10 v #69 > >     ;[[                                              │
00:00:22 v #161 > > │ 00:00:10 v #70 > >         istj_personality                             │
00:00:22 v #162 > > │ 00:00:10 v #71 > >     ]]                                               │
00:00:22 v #163 > > │ 00:00:10 v #72 > >     |> fun x => $'$"%A{!x}"' : string                │
00:00:22 v #164 > > │ 00:00:10 v #73 > >     |> console.write_line                            │
00:00:22 v #165 > > │ 00:00:10 v #74 > >                                                      │
00:00:22 v #166 > > │ 00:00:10 v #75 > > inl main () =                                        │
00:00:22 v #167 > > │ 00:00:10 v #76 > >     $'!main ()' : ()                                 │
00:00:22 v #168 > > │ 00:00:12 v #77 > >                                                      │
00:00:22 v #169 > > │ 00:00:12 v #78 > > ╭─[ 1.78s - stdout                                   │
00:00:22 v #170 > > │ ]───────────────────────────────────────────────────────────╮                │
00:00:22 v #171 > > │ 00:00:12 v #79 > > │ [|US5_0 (US4_0 (US0_0, US1_1, US2_1, US3_0))|]     │
00:00:22 v #172 > > │ │                                                                            │
00:00:22 v #173 > > │ 00:00:12 v #80 > > │                                                    │
00:00:22 v #174 > > │                                                                              │
00:00:22 v #175 > > │ │                                                                            │
00:00:22 v #176 > > │ 00:00:12 v #81 > >                                                      │
00:00:22 v #177 > > │ ╰─────────────────────────────────────────────────────────────────────────── │
00:00:22 v #178 > > │ ───╯                                                                         │
00:00:22 v #179 > > │ 00:00:12 v #82 > >                                                      │
00:00:22 v #180 > > │ 00:00:12 v #83 > > ── fsharp                                            │
00:00:22 v #181 > > │ ──────────────────────────────────────────────────────────────────────       │
00:00:22 v #182 > > │ 00:00:12 v #84 > > type PhonologicalFeature =                           │
00:00:22 v #183 > > │ 00:00:12 v #85 > >     | VowelFeature of                                │
00:00:22 v #184 > > │ 00:00:12 v #86 > >         height: Height                               │
00:00:22 v #185 > > │ 00:00:12 v #87 > >         * backness: Backness                         │
00:00:22 v #186 > > │ 00:00:12 v #88 > >         * roundedness: Roundedness                   │
00:00:22 v #187 > > │ 00:00:12 v #89 > >         * tone: Option<Tone>                         │
00:00:22 v #188 > > │ 00:00:12 v #90 > >         * stress: Option<Stress>                     │
00:00:22 v #189 > > │ 00:00:12 v #91 > >         * length: Option<Length>                     │
00:00:22 v #190 > > │ 00:00:12 v #92 > >     | ConsonantFeature of                            │
00:00:22 v #191 > > │ 00:00:12 v #93 > >         place: PlaceOfArticulation                   │
00:00:22 v #192 > > │ 00:00:12 v #94 > >         * manner: MannerOfArticulation               │
00:00:22 v #193 > > │ 00:00:12 v #95 > >         * voicing: Voicing                           │
00:00:22 v #194 > > │ 00:00:12 v #96 > >         * length: Option<Length>                     │
00:00:22 v #195 > > │ 00:00:12 v #97 > >     | VowelHarmonyFeature                            │
00:00:22 v #196 > > │ 00:00:12 v #98 > >     | PitchAccentFeature                             │
00:00:22 v #197 > > │ 00:00:12 v #99 > >                                                      │
00:00:22 v #198 > > │ 00:00:12 v #100 > > and Stress = Primary | Secondary                    │
00:00:22 v #199 > > │ 00:00:12 v #101 > > and Length = Long | Short | HalfLong                │
00:00:22 v #200 > > │ 00:00:12 v #102 > >                                                     │
00:00:22 v #201 > > │ 00:00:12 v #103 > > and Height =                                        │
00:00:22 v #202 > > │ 00:00:12 v #104 > >     | High | NearHigh | HighMid                     │
00:00:22 v #203 > > │ 00:00:12 v #105 > >     | Mid | LowMid | NearLow                        │
00:00:22 v #204 > > │ 00:00:12 v #106 > >     | Low                                           │
00:00:22 v #205 > > │ 00:00:12 v #107 > >                                                     │
00:00:22 v #206 > > │ 00:00:12 v #108 > > and Backness = Front | Central | Back               │
00:00:22 v #207 > > │ 00:00:12 v #109 > >                                                     │
00:00:22 v #208 > > │ 00:00:12 v #110 > > and Roundedness = Rounded | Unrounded               │
00:00:22 v #209 > > │ 00:00:12 v #111 > >                                                     │
00:00:22 v #210 > > │ 00:00:12 v #112 > > and PlaceOfArticulation =                           │
00:00:22 v #211 > > │ 00:00:12 v #113 > >     | Bilabial | Labiodental | Dental               │
00:00:22 v #212 > > │ 00:00:12 v #114 > >     | Alveolar | Postalveolar | Retroflex           │
00:00:22 v #213 > > │ 00:00:12 v #115 > >     | Palatal | Velar | Uvular                      │
00:00:22 v #214 > > │ 00:00:12 v #116 > >     | Pharyngeal | Epiglottal | Glottal             │
00:00:22 v #215 > > │ 00:00:12 v #117 > >                                                     │
00:00:22 v #216 > > │ 00:00:12 v #118 > > and MannerOfArticulation =                          │
00:00:22 v #217 > > │ 00:00:12 v #119 > >     | Plosive | Nasal | Trill                       │
00:00:22 v #218 > > │ 00:00:12 v #120 > >     | TapOrFlap | Fricative | LateralFricative      │
00:00:22 v #219 > > │ 00:00:12 v #121 > >     | Approximant | LateralApproximant              │
00:00:22 v #220 > > │ 00:00:12 v #122 > >                                                     │
00:00:22 v #221 > > │ 00:00:12 v #123 > > and Voicing = Voiced | Voiceless                    │
00:00:22 v #222 > > │ 00:00:12 v #124 > >                                                     │
00:00:22 v #223 > > │ 00:00:12 v #125 > > and SecondaryArticulation =                         │
00:00:22 v #224 > > │ 00:00:12 v #126 > >     | Labialization | Palatalization | Velarization │
00:00:22 v #225 > > │ 00:00:12 v #127 > >     | Pharyngealization | Aspiration                │
00:00:22 v #226 > > │ 00:00:12 v #128 > >                                                     │
00:00:22 v #227 > > │ 00:00:12 v #129 > > and Tone =                                          │
00:00:22 v #228 > > │ 00:00:12 v #130 > >     | LevelTone of int                              │
00:00:22 v #229 > > │ 00:00:12 v #131 > >     | ContourTone of int list                       │
00:00:22 v #230 > > │ 00:00:12 v #132 > >                                                     │
00:00:22 v #231 > > │ 00:00:12 v #133 > > and MorphologicalFeature =                          │
00:00:22 v #232 > > │ 00:00:12 v #134 > >     | RootFeature of string                         │
00:00:22 v #233 > > │ 00:00:12 v #135 > >     | AffixFeature of AffixType * string            │
00:00:22 v #234 > > │ 00:00:12 v #136 > >     | IncorporationFeature of string *              │
00:00:22 v #235 > > │ MorphologicalFeature                                                         │
00:00:22 v #236 > > │ 00:00:12 v #137 > >     | NonConcatenativePattern of string * string    │
00:00:22 v #237 > > │ 00:00:12 v #138 > >     | AgglutinativeAffixFeature of                  │
00:00:22 v #238 > > │ AgglutinativeAffixType * string                                              │
00:00:22 v #239 > > │ 00:00:12 v #139 > >     | HonorificFeature of HonorificType * string    │
00:00:22 v #240 > > │ 00:00:12 v #140 > >                                                     │
00:00:22 v #241 > > │ 00:00:12 v #141 > > and AgglutinativeAffixType = Suffix | Prefix        │
00:00:22 v #242 > > │ 00:00:12 v #142 > >                                                     │
00:00:22 v #243 > > │ 00:00:12 v #143 > > and HonorificType = VerbHonorific | NounHonorific   │
00:00:22 v #244 > > │ 00:00:12 v #144 > >                                                     │
00:00:22 v #245 > > │ 00:00:12 v #145 > > and AffixType =                                     │
00:00:22 v #246 > > │ 00:00:12 v #146 > >     | Prefix | Suffix | Infix                       │
00:00:22 v #247 > > │ 00:00:12 v #147 > >     | Circumfix                                     │
00:00:22 v #248 > > │ 00:00:12 v #148 > >                                                     │
00:00:22 v #249 > > │ 00:00:12 v #149 > > type SyntacticFeature =                             │
00:00:22 v #250 > > │ 00:00:12 v #150 > >     | WordFeature of MorphologicalFeature list *    │
00:00:22 v #251 > > │ LexicalCategory                                                              │
00:00:22 v #252 > > │ 00:00:12 v #151 > >     | PhraseFeature of PhraseType *                 │
00:00:22 v #253 > > │ SyntacticFeature list                                                        │
00:00:22 v #254 > > │ 00:00:12 v #152 > >     | GrammaticalRelation of                        │
00:00:22 v #255 > > │ GrammaticalRelationType * SyntacticFeature list                              │
00:00:22 v #256 > > │ 00:00:12 v #153 > >     | SOVOrderFeature                               │
00:00:22 v #257 > > │ 00:00:12 v #154 > >     | TopicCommentFeature                           │
00:00:22 v #258 > > │ 00:00:12 v #155 > >                                                     │
00:00:22 v #259 > > │ 00:00:12 v #156 > > and GrammaticalRelationType =                       │
00:00:22 v #260 > > │ 00:00:12 v #157 > >     | Ergative | Absolutive | Nominative            │
00:00:22 v #261 > > │ 00:00:12 v #158 > >     | Accusative                                    │
00:00:22 v #262 > > │ 00:00:12 v #159 > >                                                     │
00:00:22 v #263 > > │ 00:00:12 v #160 > > and LexicalCategory =                               │
00:00:22 v #264 > > │ 00:00:12 v #161 > >     | Noun | Verb | Adjective                       │
00:00:22 v #265 > > │ 00:00:12 v #162 > >     | Adverb | Pronoun | Preposition                │
00:00:22 v #266 > > │ 00:00:12 v #163 > >     | Conjunction | Determiner | Interjection       │
00:00:22 v #267 > > │ 00:00:12 v #164 > >                                                     │
00:00:22 v #268 > > │ 00:00:12 v #165 > > and PhraseType =                                    │
00:00:22 v #269 > > │ 00:00:12 v #166 > >     | NP | VP | AP                                  │
00:00:22 v #270 > > │ 00:00:12 v #167 > >     | PP | CP                                       │
00:00:22 v #271 > > │ 00:00:12 v #168 > >                                                     │
00:00:22 v #272 > > │ 00:00:12 v #169 > > and SemanticFeature =                               │
00:00:22 v #273 > > │ 00:00:12 v #170 > >     | Meaning of string                             │
00:00:22 v #274 > > │ 00:00:12 v #171 > >     | SemanticRole of SemanticRoleType *            │
00:00:22 v #275 > > │ SemanticFeature                                                              │
00:00:22 v #276 > > │ 00:00:12 v #172 > >                                                     │
00:00:22 v #277 > > │ 00:00:12 v #173 > > and SemanticRoleType =                              │
00:00:22 v #278 > > │ 00:00:12 v #174 > >     | Agent | Patient | Instrument                  │
00:00:22 v #279 > > │ 00:00:12 v #175 > >     | Location | Time | Cause                       │
00:00:22 v #280 > > │ 00:00:12 v #176 > >                                                     │
00:00:22 v #281 > > │ 00:00:12 v #177 > > and PragmaticFeature =                              │
00:00:22 v #282 > > │ 00:00:12 v #178 > >     | UseContext of string                          │
00:00:22 v #283 > > │ 00:00:12 v #179 > >     | PolitenessLevel of Politeness                 │
00:00:22 v #284 > > │ 00:00:12 v #180 > >     | SpeechAct of SpeechActType                    │
00:00:22 v #285 > > │ 00:00:12 v #181 > >     | SpeechLevel of SpeechLevelType                │
00:00:22 v #286 > > │ 00:00:12 v #182 > >                                                     │
00:00:22 v #287 > > │ 00:00:12 v #183 > > and Politeness = Formal | Informal | Neutral        │
00:00:22 v #288 > > │ 00:00:12 v #184 > >                                                     │
00:00:22 v #289 > > │ 00:00:12 v #185 > > and SpeechActType =                                 │
00:00:22 v #290 > > │ 00:00:12 v #186 > >     | Assertive | Directive | Commissive            │
00:00:22 v #291 > > │ 00:00:12 v #187 > >     | Expressive | Declarative                      │
00:00:22 v #292 > > │ 00:00:12 v #188 > >                                                     │
00:00:22 v #293 > > │ 00:00:12 v #189 > > and SpeechLevelType =                               │
00:00:22 v #294 > > │ 00:00:12 v #190 > >     | FormalHigh | FormalLow | InformalHigh         │
00:00:22 v #295 > > │ 00:00:12 v #191 > >     | InformalLow | Neutral                         │
00:00:22 v #296 > > │ 00:00:12 v #192 > >                                                     │
00:00:22 v #297 > > │ 00:00:12 v #193 > > type LinguisticFeature =                            │
00:00:22 v #298 > > │ 00:00:12 v #194 > >     | Phonological of PhonologicalFeature           │
00:00:22 v #299 > > │ 00:00:12 v #195 > >     | Morphological of MorphologicalFeature         │
00:00:22 v #300 > > │ 00:00:12 v #196 > >     | Syntactic of SyntacticFeature                 │
00:00:22 v #301 > > │ 00:00:12 v #197 > >     | Semantic of SemanticFeature                   │
00:00:22 v #302 > > │ 00:00:12 v #198 > >     | Pragmatic of PragmaticFeature                 │
00:00:22 v #303 > > │ 00:00:12 v #199 > >                                                     │
00:00:22 v #304 > > │ 00:00:12 v #200 > > type LanguageConstruct =                            │
00:00:22 v #305 > > │ 00:00:12 v #201 > >     | LanguageElement of LinguisticFeature          │
00:00:22 v #306 > > │ 00:00:12 v #202 > >     | LanguageStructure of LanguageConstruct list   │
00:00:22 v #307 > > │ 00:00:12 v #203 > >     | TranslationElement of TranslationFeature      │
00:00:22 v #308 > > │ 00:00:12 v #204 > >                                                     │
00:00:22 v #309 > > │ 00:00:12 v #205 > > and TranslationFeature =                            │
00:00:22 v #310 > > │ 00:00:12 v #206 > >     | LinkedPhonological of PhonologicalFeature *   │
00:00:22 v #311 > > │ PhonologicalFeature                                                          │
00:00:22 v #312 > > │ 00:00:12 v #207 > >     | LinkedMorphological of MorphologicalFeature * │
00:00:22 v #313 > > │ MorphologicalFeature                                                         │
00:00:22 v #314 > > │ 00:00:12 v #208 > >     | LinkedSyntactic of SyntacticFeature *         │
00:00:22 v #315 > > │ SyntacticFeature                                                             │
00:00:22 v #316 > > │ 00:00:12 v #209 > >     | LinkedSemantic of SemanticFeature *           │
00:00:22 v #317 > > │ SemanticFeature                                                              │
00:00:22 v #318 > > │ 00:00:12 v #210 > >                                                     │
00:00:22 v #319 > > │ 00:00:12 v #211 > > type Discourse = DiscourseUnit of LanguageConstruct │
00:00:22 v #320 > > │ list                                                                         │
00:00:22 v #321 > > │ 00:00:12 v #212 > >                                                     │
00:00:22 v #322 > > │ 00:00:12 v #213 > > type LanguageModel =                                │
00:00:22 v #323 > > │ 00:00:12 v #214 > >     | Model of discourse: Discourse                 │
00:00:22 v #324 > > │ 00:00:13 v #215 > >                                                     │
00:00:22 v #325 > > │ 00:00:13 v #216 > > ── fsharp                                           │
00:00:22 v #326 > > │ ──────────────────────────────────────────────────────────────────────       │
00:00:22 v #327 > > │ 00:00:13 v #217 > > let testEnglish =                                   │
00:00:22 v #328 > > │ 00:00:13 v #218 > >     Model(                                          │
00:00:22 v #329 > > │ 00:00:13 v #219 > >         DiscourseUnit [[                            │
00:00:22 v #330 > > │ 00:00:13 v #220 > >             LanguageElement (Phonological           │
00:00:22 v #331 > > │ (ConsonantFeature (Alveolar, Nasal,                                          │
00:00:22 v #332 > > │ 00:00:13 v #221 > > Voiced, Some(HalfLong))));                          │
00:00:22 v #333 > > │ 00:00:13 v #222 > >             LanguageElement (Phonological           │
00:00:22 v #334 > > │ (VowelFeature (High, Front, Unrounded,                                       │
00:00:22 v #335 > > │ 00:00:13 v #223 > > Some(LevelTone 1), Some(Primary), Some(Short))));   │
00:00:22 v #336 > > │ 00:00:13 v #224 > >             LanguageElement (Phonological           │
00:00:22 v #337 > > │ (VowelFeature (Low, Front, Unrounded,                                        │
00:00:22 v #338 > > │ 00:00:13 v #225 > > Some(LevelTone 2), Some(Secondary), Some(Long))));  │
00:00:22 v #339 > > │ 00:00:13 v #226 > >             LanguageElement (Phonological           │
00:00:22 v #340 > > │ (ConsonantFeature (Velar, Plosive,                                           │
00:00:22 v #341 > > │ 00:00:13 v #227 > > Voiceless, Some(HalfLong))));                       │
00:00:22 v #342 > > │ 00:00:13 v #228 > >             LanguageElement (Morphological          │
00:00:22 v #343 > > │ (RootFeature "I"));                                                          │
00:00:22 v #344 > > │ 00:00:13 v #229 > >             LanguageElement (Morphological          │
00:00:22 v #345 > > │ (RootFeature "see"));                                                        │
00:00:22 v #346 > > │ 00:00:13 v #230 > >             LanguageElement (Morphological          │
00:00:22 v #347 > > │ (RootFeature "a"));                                                          │
00:00:22 v #348 > > │ 00:00:13 v #231 > >             LanguageElement (Morphological          │
00:00:22 v #349 > > │ (RootFeature "cat"));                                                        │
00:00:22 v #350 > > │ 00:00:13 v #232 > >             LanguageElement (Syntactic              │
00:00:22 v #351 > > │ (PhraseFeature (NP, [[WordFeature                                            │
00:00:22 v #352 > > │ 00:00:13 v #233 > > ([[RootFeature "I"]], Pronoun)]])));                │
00:00:22 v #353 > > │ 00:00:13 v #234 > >             LanguageElement (Syntactic              │
00:00:22 v #354 > > │ (PhraseFeature (VP, [[WordFeature                                            │
00:00:22 v #355 > > │ 00:00:13 v #235 > > ([[RootFeature "see"]], Verb)]])));                 │
00:00:22 v #356 > > │ 00:00:13 v #236 > >             LanguageElement (Syntactic              │
00:00:22 v #357 > > │ (PhraseFeature (NP, [[WordFeature                                            │
00:00:22 v #358 > > │ 00:00:13 v #237 > > ([[RootFeature "a"; RootFeature "cat"]],            │
00:00:22 v #359 > > │ Noun)]])));                                                                  │
00:00:22 v #360 > > │ 00:00:13 v #238 > >             LanguageElement (Semantic (Meaning      │
00:00:22 v #361 > > │ "Perception act of a feline by                                               │
00:00:22 v #362 > > │ 00:00:13 v #239 > > the speaker"));                                     │
00:00:22 v #363 > > │ 00:00:13 v #240 > >             LanguageElement (Pragmatic (UseContext  │
00:00:22 v #364 > > │ "Statement of an action being                                                │
00:00:22 v #365 > > │ 00:00:13 v #241 > > observed"))                                         │
00:00:22 v #366 > > │ 00:00:13 v #242 > >         ]]                                          │
00:00:22 v #367 > > │ 00:00:13 v #243 > >     )                                               │
00:00:22 v #368 > > │ 00:00:13 v #244 > >                                                     │
00:00:22 v #369 > > │ 00:00:13 v #245 > > let testPortuguese =                                │
00:00:22 v #370 > > │ 00:00:13 v #246 > >     Model(                                          │
00:00:22 v #371 > > │ 00:00:13 v #247 > >         DiscourseUnit [[                            │
00:00:22 v #372 > > │ 00:00:13 v #248 > >             LanguageElement (Phonological           │
00:00:22 v #373 > > │ (VowelFeature (High, Front, Unrounded,                                       │
00:00:22 v #374 > > │ 00:00:13 v #249 > > Some(LevelTone 1), Some(Primary), Some(Short))));   │
00:00:22 v #375 > > │ 00:00:13 v #250 > >             LanguageElement (Phonological           │
00:00:22 v #376 > > │ (VowelFeature (Low, Front, Unrounded,                                        │
00:00:22 v #377 > > │ 00:00:13 v #251 > > Some(LevelTone 2), Some(Secondary), Some(Long))));  │
00:00:22 v #378 > > │ 00:00:13 v #252 > >             LanguageElement (Phonological           │
00:00:22 v #379 > > │ (VowelFeature (Mid, Back, Rounded,                                           │
00:00:22 v #380 > > │ 00:00:13 v #253 > > Some(LevelTone 3), Some(Primary), Some(Short))));   │
00:00:22 v #381 > > │ 00:00:13 v #254 > >             LanguageElement (Phonological           │
00:00:22 v #382 > > │ (ConsonantFeature (Velar, Plosive,                                           │
00:00:22 v #383 > > │ 00:00:13 v #255 > > Voiceless, Some(HalfLong))));                       │
00:00:22 v #384 > > │ 00:00:13 v #256 > >             LanguageElement (Morphological          │
00:00:22 v #385 > > │ (RootFeature "Eu"));                                                         │
00:00:22 v #386 > > │ 00:00:13 v #257 > >             LanguageElement (Morphological          │
00:00:22 v #387 > > │ (RootFeature "ver" |> ignore;                                                │
00:00:22 v #388 > > │ 00:00:13 v #258 > > AffixFeature (Suffix, "o")));                       │
00:00:22 v #389 > > │ 00:00:13 v #259 > >             LanguageElement (Morphological          │
00:00:22 v #390 > > │ (RootFeature "um"));                                                         │
00:00:22 v #391 > > │ 00:00:13 v #260 > >             LanguageElement (Morphological          │
00:00:22 v #392 > > │ (RootFeature "gato"));                                                       │
00:00:22 v #393 > > │ 00:00:13 v #261 > >             LanguageElement (Syntactic              │
00:00:22 v #394 > > │ (PhraseFeature (NP, [[WordFeature                                            │
00:00:22 v #395 > > │ 00:00:13 v #262 > > ([[RootFeature "Eu"]], Pronoun)]])));               │
00:00:22 v #396 > > │ 00:00:13 v #263 > >             LanguageElement (Syntactic              │
00:00:22 v #397 > > │ (PhraseFeature (VP, [[WordFeature                                            │
00:00:22 v #398 > > │ 00:00:13 v #264 > > ([[RootFeature "vejo"]], Verb)]])));                │
00:00:22 v #399 > > │ 00:00:13 v #265 > >             LanguageElement (Syntactic              │
00:00:22 v #400 > > │ (PhraseFeature (NP, [[WordFeature                                            │
00:00:22 v #401 > > │ 00:00:13 v #266 > > ([[RootFeature "um"; RootFeature "gato"]],          │
00:00:22 v #402 > > │ Noun)]])));                                                                  │
00:00:22 v #403 > > │ 00:00:13 v #267 > >             LanguageElement (Semantic (Meaning      │
00:00:22 v #404 > > │ "Ação de percepção de um felino                                              │
00:00:22 v #405 > > │ 00:00:13 v #268 > > pelo falante"));                                    │
00:00:22 v #406 > > │ 00:00:13 v #269 > >             LanguageElement (Pragmatic (UseContext  │
00:00:22 v #407 > > │ "Declaração de uma ação sendo                                                │
00:00:22 v #408 > > │ 00:00:13 v #270 > > observada"))                                        │
00:00:22 v #409 > > │ 00:00:13 v #271 > >         ]]                                          │
00:00:22 v #410 > > │ 00:00:13 v #272 > >     )                                               │
00:00:22 v #411 > > │ 00:00:13 v #273 > >                                                     │
00:00:22 v #412 > > │ 00:00:13 v #274 > > let testKorean =                                    │
00:00:22 v #413 > > │ 00:00:13 v #275 > >     Model(                                          │
00:00:22 v #414 > > │ 00:00:13 v #276 > >         DiscourseUnit [[                            │
00:00:22 v #415 > > │ 00:00:13 v #277 > >             LanguageElement (Phonological           │
00:00:22 v #416 > > │ (ConsonantFeature (Alveolar, Nasal,                                          │
00:00:22 v #417 > > │ 00:00:13 v #278 > > Voiced, Some(Short))));                             │
00:00:22 v #418 > > │ 00:00:13 v #279 > >             LanguageElement (Phonological           │
00:00:22 v #419 > > │ (VowelFeature (High, Back, Rounded,                                          │
00:00:22 v #420 > > │ 00:00:13 v #280 > > None, None, Some(Short))));                         │
00:00:22 v #421 > > │ 00:00:13 v #281 > >             LanguageElement (Phonological           │
00:00:22 v #422 > > │ (VowelFeature (Mid, Front, Unrounded,                                        │
00:00:22 v #423 > > │ 00:00:13 v #282 > > None, None, Some(Long))));                          │
00:00:22 v #424 > > │ 00:00:13 v #283 > >             LanguageElement (Phonological           │
00:00:22 v #425 > > │ (ConsonantFeature (Bilabial, Plosive,                                        │
00:00:22 v #426 > > │ 00:00:13 v #284 > > Voiceless, Some(Short))));                          │
00:00:22 v #427 > > │ 00:00:13 v #285 > >             LanguageElement (Morphological          │
00:00:22 v #428 > > │ (RootFeature "나"));                                                         │
00:00:22 v #429 > > │ 00:00:13 v #286 > >             LanguageElement (Morphological          │
00:00:22 v #430 > > │ (RootFeature "보다"));                                                       │
00:00:22 v #431 > > │ 00:00:13 v #287 > >             LanguageElement (Morphological          │
00:00:22 v #432 > > │ (AffixFeature (Suffix, "아")));                                              │
00:00:22 v #433 > > │ 00:00:13 v #288 > >             LanguageElement (Morphological          │
00:00:22 v #434 > > │ (RootFeature "고양이"));                                                     │
00:00:22 v #435 > > │ 00:00:13 v #289 > >             LanguageElement (Syntactic              │
00:00:22 v #436 > > │ (PhraseFeature (NP, [[WordFeature                                            │
00:00:22 v #437 > > │ 00:00:13 v #290 > > ([[RootFeature "나"]], Pronoun)]])));               │
00:00:22 v #438 > > │ 00:00:13 v #291 > >             LanguageElement (Syntactic              │
00:00:22 v #439 > > │ (PhraseFeature (VP, [[WordFeature                                            │
00:00:22 v #440 > > │ 00:00:13 v #292 > > ([[RootFeature "보다"; AffixFeature (Suffix,        │
00:00:22 v #441 > > │ "아")]], Verb)]])));                                                         │
00:00:22 v #442 > > │ 00:00:13 v #293 > >             LanguageElement (Syntactic              │
00:00:22 v #443 > > │ (PhraseFeature (NP, [[WordFeature                                            │
00:00:22 v #444 > > │ 00:00:13 v #294 > > ([[RootFeature "고양이"]], Noun)]])));              │
00:00:22 v #445 > > │ 00:00:13 v #295 > >             LanguageElement (Semantic (Meaning      │
00:00:22 v #446 > > │ "화자에 의한 고양이의 관찰                                                   │
00:00:22 v #447 > > │ 00:00:13 v #296 > > 행위"));                                            │
00:00:22 v #448 > > │ 00:00:13 v #297 > >             LanguageElement (Pragmatic (UseContext  │
00:00:22 v #449 > > │ "관찰되고 있는 행동의 진술"))                                                │
00:00:22 v #450 > > │ 00:00:13 v #298 > >         ]]                                          │
00:00:22 v #451 > > │ 00:00:13 v #299 > >     )                                               │
00:00:22 v #452 > > │ 00:00:13 v #300 > >                                                     │
00:00:22 v #453 > > │ 00:00:13 v #301 > > ── markdown                                         │
00:00:22 v #454 > > │ ────────────────────────────────────────────────────────────────────         │
00:00:22 v #455 > > │ 00:00:13 v #302 > >                                                     │
00:00:22 v #456 > > │ ╭─────────────────────────────────────────────────────────────────────────── │
00:00:22 v #457 > > │ ───╮                                                                         │
00:00:22 v #458 > > │ 00:00:13 v #303 > > │ ## main                                           │
00:00:22 v #459 > > │ │                                                                            │
00:00:22 v #460 > > │ 00:00:13 v #304 > >                                                     │
00:00:22 v #461 > > │ ╰─────────────────────────────────────────────────────────────────────────── │
00:00:22 v #462 > > │ ───╯                                                                         │
00:00:22 v #463 > > │ 00:00:13 v #305 > >                                                     │
00:00:22 v #464 > > │ 00:00:13 v #306 > > ── spiral                                           │
00:00:22 v #465 > > │ ──────────────────────────────────────────────────────────────────────       │
00:00:22 v #466 > > │ 00:00:13 v #307 > > inl main (_args : array_base string) =              │
00:00:22 v #467 > > │ 00:00:13 v #308 > >     0i32                                            │
00:00:22 v #468 > > │ 00:00:13 v #309 > >                                                     │
00:00:22 v #469 > > │ 00:00:13 v #310 > > inl main () =                                       │
00:00:22 v #470 > > │ 00:00:13 v #311 > >     $'let main args = !main args' : ()              │
00:00:22 v #471 > > │ 00:00:14 v #312 > >                                                     │
00:00:22 v #472 > > │ 00:00:14 v #313 > > ── spiral                                           │
00:00:22 v #473 > > │ ──────────────────────────────────────────────────────────────────────       │
00:00:22 v #474 > > │ 00:00:14 v #314 > > inl app () =                                        │
00:00:22 v #475 > > │ 00:00:14 v #315 > >     "test" |> console.write_line                    │
00:00:22 v #476 > > │ 00:00:14 v #316 > >     0i32                                            │
00:00:22 v #477 > > │ 00:00:14 v #317 > >                                                     │
00:00:22 v #478 > > │ 00:00:14 v #318 > > inl main () =                                       │
00:00:22 v #479 > > │ 00:00:14 v #319 > >     print_static "<test>"                           │
00:00:22 v #480 > > │ 00:00:14 v #320 > >                                                     │
00:00:22 v #481 > > │ 00:00:14 v #321 > >     app                                             │
00:00:22 v #482 > > │ 00:00:14 v #322 > >     |> dyn                                          │
00:00:22 v #483 > > │ 00:00:14 v #323 > >     |> ignore                                       │
00:00:22 v #484 > > │ 00:00:14 v #324 > >                                                     │
00:00:22 v #485 > > │ 00:00:14 v #325 > >     print_static "</test>"                          │
00:00:22 v #486 > > │ 00:00:14 v #326 > 00:00:13 v #3 runtime.execute_with_options /    │
00:00:22 v #487 > > │ result / { exit_code = 0; std_trace_length = 10945 }                         │
00:00:22 v #488 > > │ 00:00:14 v #327 > 00:00:13 d #4 runtime.execute_with_options / {  │
00:00:22 v #489 > > │ file_name = jupyter; arguments = ["nbconvert",                               │
00:00:22 v #490 > > │ "c:/home/git/polyglot/apps/spiral/temp/test/test.dib.ipynb", "--to", "html", │
00:00:22 v #491 > > │ "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert        │
00:00:22 v #492 > > │ "c:/home/git/polyglot/apps/spiral/temp/test/test.dib.ipynb" --to html        │
00:00:22 v #493 > > │ --HTMLExporter.theme=dark; cancellation_token = None; environment_variables  │
00:00:22 v #494 > > │ = Array(MutCell([])); on_line = None; stdin = None; trace = true;            │
00:00:22 v #495 > > │ working_directory = None } }                                                 │
00:00:22 v #496 > > │ 00:00:16 v #328 > 00:00:15 v #5 ! [NbConvertApp] Converting       │
00:00:22 v #497 > > │ notebook c:/home/git/polyglot/apps/spiral/temp/test/test.dib.ipynb to html   │
00:00:22 v #498 > > │ 00:00:16 v #329 > 00:00:15 v #6 !                                 │
00:00:22 v #499 > > │ C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__ini │
00:00:22 v #500 > > │ t__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will     │
00:00:22 v #501 > > │ become a hard error in future nbformat versions. You may want to use         │
00:00:22 v #502 > > │ `normalize()` on your notebooks before validations (available since nbformat │
00:00:22 v #503 > > │ 5.1.4). Previous versions of nbformat are fixing this issue transparently,   │
00:00:22 v #504 > > │ and will stop doing so in the future.                                        │
00:00:22 v #505 > > │ 00:00:16 v #330 > 00:00:15 v #7 !   validate(nb)                  │
00:00:22 v #506 > > │ 00:00:16 v #331 > 00:00:15 v #8 !                                 │
00:00:22 v #507 > > │ C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filt │
00:00:22 v #508 > > │ ers\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back   │
00:00:22 v #509 > > │ on Python 3                                                                  │
00:00:22 v #510 > > │ 00:00:16 v #332 > 00:00:15 v #9 !   return _pygments_highlight(   │
00:00:22 v #511 > > │ 00:00:17 v #333 > 00:00:16 v #10 ! [NbConvertApp] Writing 318992  │
00:00:22 v #512 > > │ bytes to c:\home\git\polyglot\apps\spiral\temp\test\test.dib.html            │
00:00:22 v #513 > > │ 00:00:17 v #334 > 00:00:16 v #11 runtime.execute_with_options /   │
00:00:22 v #514 > > │ result / { exit_code = 0; std_trace_length = 872 }                           │
00:00:22 v #515 > > │ 00:00:17 v #335 > 00:00:16 d #12 spiral_builder.run / dib /       │
00:00:22 v #516 > > │ jupyter nbconvert / { exit_code = 0; jupyter_result_length = 872 }           │
00:00:22 v #517 > > │ 00:00:17 v #336 > 00:00:16 d #13 runtime.execute_with_options / { │
00:00:22 v #518 > > │ file_name = pwsh; arguments = ["-c", "$counter = 1; $path =                  │
00:00:22 v #519 > > │ 'c:/home/git/polyglot/apps/spiral/temp/test/test.dib.html'; (Get-Content     │
00:00:22 v #520 > > │ $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value │
00:00:22 v #521 > > │ + $counter++ } | Set-Content $path"]; options = { command = pwsh -c          │
00:00:22 v #522 > > │ "$counter = 1; $path =                                                       │
00:00:22 v #523 > > │ 'c:/home/git/polyglot/apps/spiral/temp/test/test.dib.html'; (Get-Content     │
00:00:22 v #524 > > │ $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + │
00:00:22 v #525 > > │ $counter++ } | Set-Content $path"; cancellation_token = None;                │
00:00:22 v #526 > > │ environment_variables = Array(MutCell([])); on_line = None; stdin = None;    │
00:00:22 v #527 > > │ trace = true; working_directory = None } }                                   │
00:00:22 v #528 > > │ 00:00:17 v #337 > 00:00:16 v #14 runtime.execute_with_options /   │
00:00:22 v #529 > > │ result / { exit_code = 0; std_trace_length = 0 }                             │
00:00:22 v #530 > > │ 00:00:17 v #338 > 00:00:16 d #15 spiral_builder.run / dib / html  │
00:00:22 v #531 > > │ cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }            │
00:00:22 v #532 > > │ 00:00:17 v #339 > 00:00:16 d #16 spiral_builder.run / dib / {     │
00:00:22 v #533 > > │ exit_code = 0; result_length = 11876 }                                       │
00:00:22 v #534 > > │ 00:00:17 d #340 runtime.execute_with_options_async / { exit_code = 0;   │
00:00:22 v #535 > > │ output_length = 15157 }                                                      │
00:00:22 v #536 > > │ 00:00:17 d #1 main / executeCommand / exitCode: 0 / command:            │
00:00:22 v #537 > > │ ../../../../workspace/target/release/spiral_builder.exe dib --path test.dib  │
00:00:22 v #538 > > │ --retries 3                                                                  │
00:00:22 v #539 > > │                                                                              │
00:00:22 v #540 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:22 v #541 > >
00:00:22 v #542 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:22 v #543 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:22 v #544 > > │ ### parse the .dib file into .spi format with dibparser                      │
00:00:22 v #545 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:22 v #546 > >
00:00:22 v #547 > > ── pwsh ────────────────────────────────────────────────────────────────────────
00:00:22 v #548 > > { . ../../../../apps/parser/dist/DibParser$(_exe) test.dib spi } | Invoke-Block
00:00:22 v #549 > >
00:00:22 v #550 > > ╭─[ 472.84ms - stdout ]────────────────────────────────────────────────────────╮
00:00:22 v #551 > > │ 00:00:00 d #1 writeDibCode / output: Spi / path: test.dib               │
00:00:22 v #552 > > │ 00:00:00 d #2 parseDibCode / output: Spi / file: test.dib               │
00:00:22 v #553 > > │                                                                              │
00:00:22 v #554 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:22 v #555 > >
00:00:22 v #556 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:22 v #557 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:22 v #558 > > │ ### build .fsx file from .spi using supervisor                               │
00:00:22 v #559 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:22 v #560 > >
00:00:22 v #561 > > ── pwsh ────────────────────────────────────────────────────────────────────────
00:00:22 v #562 > > { . ../../../../apps/spiral/dist/Supervisor$(_exe) --build-file test.spi
00:00:22 v #563 > > test.fsx } | Invoke-Block
00:00:24 v #564 > <test>
00:00:24 v #565 > </test>
00:00:24 v #566 > >
00:00:24 v #567 > > ╭─[ 1.84s - stdout ]───────────────────────────────────────────────────────────╮
00:00:24 v #568 > > │ 00:00:00 v #1 async.run_with_timeout_async / { timeout = 180 }          │
00:00:24 v #569 > > │ 00:00:01 v #2 async.run_with_timeout_async / { timeout = 180 }          │
00:00:24 v #570 > > │ 00:00:01 d #1 Supervisor.buildFile / takeWhileInclusive /               │
00:00:24 v #571 > > │ outputContent:                                                               │
00:00:24 v #572 > > │  / errors: [] / typeErrorCount: 0 / retry: 0 / path: test.spi                │
00:00:24 v #573 > > │ 00:00:01 d #2 Supervisor.buildFile / AsyncSeq.scan / outputContent:     │
00:00:24 v #574 > > │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
00:00:24 v #575 > > │ error:  / path: test.spi                                                     │
00:00:24 v #576 > > │ 00:00:01 d #3 Supervisor.buildFile / takeWhileInclusive /               │
00:00:24 v #577 > > │ outputContent:                                                               │
00:00:24 v #578 > > │  / errors: [] / typeErrorCount: 0 / retry: 0 / path: test.spi                │
00:00:24 v #579 > > │ 00:00:01 v #4 Supervisor.sendJson / port: 13805 / json:                 │
00:00:24 v #580 > > │ {"FileOpen":{"spiText":"/// # test (Polyglot)\nnominal i = ()\nnominal e =   │
00:00:24 v #581 > > │ ()\nnominal s =                                                              │
00:00:24 v #582 > > │ ()\nnomin...0022\u003C/test\u003E\u0022\n","uri":"file:///c:/home/git/polygl │
00:00:24 v #583 > > │ ot/apps/spiral/temp/test/test.spi"}} / result:                               │
00:00:24 v #584 > > │ 00:00:01 v #5 Supervisor.sendJson / port: 13805 / json:                 │
00:00:24 v #585 > > │ {"BuildFile":{"backend":"Fsharp","uri":"file:///c:/home/git/polyglot/apps/sp │
00:00:24 v #586 > > │ iral/temp/test/test.spi"}} / result:                                         │
00:00:24 v #587 > > │ 00:00:01 d #6 Supervisor.buildFile / AsyncSeq.scan / outputContent:     │
00:00:24 v #588 > > │ let rec closure1 () () : unit =                                              │
00:00:24 v #589 > > │     let v0 : (string -> unit) = System.Console.WriteLine                     │
00:00:24 v #590 > > │     let v1 : string = "test"                                                 │
00:00:24 v #591 > > │     v0 v1                                                                    │
00:00:24 v #592 > > │ and closure0 () () : i...t v0 : unit = ()                                    │
00:00:24 v #593 > > │     let v1 : (unit -> unit) = closure1()                                     │
00:00:24 v #594 > > │     let v2 : unit = (fun () -> v1 (); v0) ()                                 │
00:00:24 v #595 > > │     0                                                                        │
00:00:24 v #596 > > │ let v0 : (unit -> int32) = closure0()                                        │
00:00:24 v #597 > > │ ()                                                                           │
00:00:24 v #598 > > │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
00:00:24 v #599 > > │ error:  / path: test.spi                                                     │
00:00:24 v #600 > > │ 00:00:01 d #7 Supervisor.buildFile / takeWhileInclusive /               │
00:00:24 v #601 > > │ outputContent:                                                               │
00:00:24 v #602 > > │ let rec closure1 () () : unit =                                              │
00:00:24 v #603 > > │     let v0 : (string -> unit) = System.Console.WriteLine                     │
00:00:24 v #604 > > │     let v1 : string = "test"                                                 │
00:00:24 v #605 > > │     v0 v1                                                                    │
00:00:24 v #606 > > │ and closure0 () () : i...t v0 : unit = ()                                    │
00:00:24 v #607 > > │     let v1 : (unit -> unit) = closure1()                                     │
00:00:24 v #608 > > │     let v2 : unit = (fun () -> v1 (); v0) ()                                 │
00:00:24 v #609 > > │     0                                                                        │
00:00:24 v #610 > > │ let v0 : (unit -> int32) = closure0()                                        │
00:00:24 v #611 > > │ ()                                                                           │
00:00:24 v #612 > > │  / errors: [] / typeErrorCount: 0 / retry: 0 / path: test.spi                │
00:00:24 v #613 > > │ 00:00:01 d #8 FileSystem.watchWithFilter / Disposing watch stream /     │
00:00:24 v #614 > > │ filter: FileName, LastWrite                                                  │
00:00:24 v #615 > > │                                                                              │
00:00:24 v #616 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:24 v #617 > >
00:00:24 v #618 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:24 v #619 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:24 v #620 > > │ ## compile and format the project                                            │
00:00:24 v #621 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:24 v #622 > >
00:00:24 v #623 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:24 v #624 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:24 v #625 > > │ ### compile project with fable targeting optimized rust                      │
00:00:24 v #626 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:24 v #627 > >
00:00:24 v #628 > > ── pwsh ────────────────────────────────────────────────────────────────────────
00:00:24 v #629 > > dotnet fable --optimize --lang rs --extension .rs
00:00:35 v #630 > >
00:00:35 v #631 > > ╭─[ 10.40s - stdout ]──────────────────────────────────────────────────────────╮
00:00:35 v #632 > > │ Fable 4.21.0: F# to Rust compiler (status: alpha)                            │
00:00:35 v #633 > > │                                                                              │
00:00:35 v #634 > > │ Thanks to the contributor! @inosik                                           │
00:00:35 v #635 > > │ Stand with Ukraine! https://standwithukraine.com.ua/                         │
00:00:35 v #636 > > │                                                                              │
00:00:35 v #637 > > │ Parsing test.fsproj...                                                       │
00:00:35 v #638 > > │ .> cmd /C dotnet restore test.fable-temp.csproj -p:FABLE_COMPILER=true       │
00:00:35 v #639 > > │ -p:FABLE_COMPILER_4=true -p:FABLE_COMPILER_RUST=true                         │
00:00:35 v #640 > > │   Determining projects to restore...                                         │
00:00:35 v #641 > > │   Paket version 8.1.0-alpha004+7aa412f49b32de979c3d5acde07e88e6d47c965b      │
00:00:35 v #642 > > │   The last full restore is still up to date. Nothing left to do.             │
00:00:35 v #643 > > │   Total time taken: 0 milliseconds                                           │
00:00:35 v #644 > > │   Paket version 8.1.0-alpha004+7aa412f49b32de979c3d5acde07e88e6d47c965b      │
00:00:35 v #645 > > │   Restoring                                                                  │
00:00:35 v #646 > > │ C:\home\git\polyglot\apps\spiral\temp\test\test.fable-temp.csproj            │
00:00:35 v #647 > > │   Starting restore process.                                                  │
00:00:35 v #648 > > │   Total time taken: 0 milliseconds                                           │
00:00:35 v #649 > > │   Restored C:\home\git\polyglot\apps\spiral\temp\test\test.fable-temp.csproj │
00:00:35 v #650 > > │ (in 309 ms).                                                                 │
00:00:35 v #651 > > │ .> cmd /C dotnet restore                                                     │
00:00:35 v #652 > > │ C:/home/git/polyglot/apps/spiral/temp/test/test.fsproj                       │
00:00:35 v #653 > > │   Determining projects to restore...                                         │
00:00:35 v #654 > > │   Paket version 8.1.0-alpha004+7aa412f49b32de979c3d5acde07e88e6d47c965b      │
00:00:35 v #655 > > │   The last full restore is still up to date. Nothing left to do.             │
00:00:35 v #656 > > │   Total time taken: 0 milliseconds                                           │
00:00:35 v #657 > > │   Paket version 8.1.0-alpha004+7aa412f49b32de979c3d5acde07e88e6d47c965b      │
00:00:35 v #658 > > │   Restoring C:\home\git\polyglot\apps\spiral\temp\test\test.fsproj           │
00:00:35 v #659 > > │   Starting restore process.                                                  │
00:00:35 v #660 > > │   Total time taken: 0 milliseconds                                           │
00:00:35 v #661 > > │   Restored C:\home\git\polyglot\apps\spiral\temp\test\test.fsproj (in 319    │
00:00:35 v #662 > > │ ms).                                                                         │
00:00:35 v #663 > > │ Project and references (1 source files) parsed in 7581ms                     │
00:00:35 v #664 > > │                                                                              │
00:00:35 v #665 > > │ Started Fable compilation...                                                 │
00:00:35 v #666 > > │                                                                              │
00:00:35 v #667 > > │ Fable compilation finished in 1433ms                                         │
00:00:35 v #668 > > │                                                                              │
00:00:35 v #669 > > │ .\test.fsx(11,0): (11,2) warning FABLE: For Rust, support for F# static and  │
00:00:35 v #670 > > │ module do bindings is disabled by default. It can be enabled with the        │
00:00:35 v #671 > > │ 'static_do_bindings' feature. Use at your own risk!                          │
00:00:35 v #672 > > │                                                                              │
00:00:35 v #673 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:35 v #674 > >
00:00:35 v #675 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:35 v #676 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:35 v #677 > > │ ### fix formatting issues in the .rs file using regex and set-content        │
00:00:35 v #678 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:35 v #679 > >
00:00:35 v #680 > > ── pwsh ────────────────────────────────────────────────────────────────────────
00:00:35 v #681 > > (Get-Content test.rs) `
00:00:35 v #682 > >     -replace [[regex]]::Escape("),);"), "));" `
00:00:35 v #683 > >     | FixRust `
00:00:35 v #684 > > | Set-Content test.rs
00:00:35 v #685 > >
00:00:35 v #686 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:35 v #687 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:35 v #688 > > │ ### format the rust code using cargo fmt                                     │
00:00:35 v #689 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:35 v #690 > >
00:00:35 v #691 > > ── pwsh ────────────────────────────────────────────────────────────────────────
00:00:35 v #692 > > cargo fmt --
00:00:35 v #693 > >
00:00:35 v #694 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:35 v #695 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:35 v #696 > > │ ## build and test the project                                                │
00:00:35 v #697 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:35 v #698 > >
00:00:35 v #699 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:35 v #700 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:35 v #701 > > │ ### build the project in release mode using nightly rust compiler            │
00:00:35 v #702 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:35 v #703 > >
00:00:35 v #704 > > ── pwsh ────────────────────────────────────────────────────────────────────────
00:00:35 v #705 > > cargo build --release
00:00:53 v #706 > >
00:00:53 v #707 > > ╭─[ 17.96s - stdout ]──────────────────────────────────────────────────────────╮
00:00:53 v #708 > > │    Compiling proc-macro2 v1.0.88                                      │
00:00:53 v #709 > > │    Compiling unicode-ident v1.0.13                                    │
00:00:53 v #710 > > │    Compiling fable_library_rust v0.1.0                                  │
00:00:53 v #711 > > │ (C:\home\git\polyglot\lib\rust\fable\fable_modules\fable-library-rust)     │
00:00:53 v #712 > > │    Compiling quote v1.0.37                                            │
00:00:53 v #713 > > │    Compiling syn v2.0.79                                              │
00:00:53 v #714 > > │    Compiling zerocopy-derive v0.7.35                                  │
00:00:53 v #715 > > │    Compiling thiserror-impl v1.0.64                                   │
00:00:53 v #716 > > │    Compiling zerocopy v0.7.35                                         │
00:00:53 v #717 > > │    Compiling thiserror v1.0.64                                        │
00:00:53 v #718 > > │    Compiling ppv-lite86 v0.2.20                                       │
00:00:53 v #719 > > │    Compiling rand_chacha v0.3.1                                       │
00:00:53 v #720 > > │    Compiling rand v0.8.5                                              │
00:00:53 v #721 > > │    Compiling proptest v1.5.0                                          │
00:00:53 v #722 > > │    Compiling spiral_temp_test v0.0.1                                    │
00:00:53 v #723 > > │ (C:\home\git\polyglot\apps\spiral\temp\test)                               │
00:00:53 v #724 > > │ warning: struct `Cart` is never constructed                           │
00:00:53 v #725 > > │   --> C:\home\git\polyglot\apps\spiral\temp\test\./main.rs:41:8       │
00:00:53 v #726 > > │    |                                                                  │
00:00:53 v #727 > > │ 41 | struct Cart {                                                    │
00:00:53 v #728 > > │    |        ^^^^                                                      │
00:00:53 v #729 > > │    |                                                                  │
00:00:53 v #730 > > │    = note: `#[warn(dead_code)]` on by default                         │
00:00:53 v #731 > > │                                                                       │
00:00:53 v #732 > > │ warning: associated items `new`, `add_item`, and `remove_item` are      │
00:00:53 v #733 > > │ never used                                                                 │
00:00:53 v #734 > > │   --> C:\home\git\polyglot\apps\spiral\temp\test\./main.rs:46:8       │
00:00:53 v #735 > > │    |                                                                  │
00:00:53 v #736 > > │ 45 | impl Cart {                                                      │
00:00:53 v #737 > > │    | --------- associated items in this implementation                │
00:00:53 v #738 > > │ 46 |     fn new() -> Cart {                                           │
00:00:53 v #739 > > │    |        ^^^                                                       │
00:00:53 v #740 > > │ ...                                                                   │
00:00:53 v #741 > > │ 50 |     fn add_item(&mut self, item: Item) {                         │
00:00:53 v #742 > > │    |        ^^^^^^^^                                                  │
00:00:53 v #743 > > │ ...                                                                   │
00:00:53 v #744 > > │ 56 |     fn remove_item(&mut self, item: &Item) {                     │
00:00:53 v #745 > > │    |        ^^^^^^^^^^^                                               │
00:00:53 v #746 > > │                                                                       │
00:00:53 v #747 > > │ warning: function `parse_comment` is never used                       │
00:00:53 v #748 > > │    --> C:\home\git\polyglot\apps\spiral\temp\test\./main.rs:124:4     │
00:00:53 v #749 > > │     |                                                                 │
00:00:53 v #750 > > │ 124 | fn parse_comment(input: &str) -> IResult<&str, SpiralToken> {   │
00:00:53 v #751 > > │     |    ^^^^^^^^^^^^^                                                │
00:00:53 v #752 > > │                                                                       │
00:00:53 v #753 > > │ warning: function `parse_string` is never used                        │
00:00:53 v #754 > > │    --> C:\home\git\polyglot\apps\spiral\temp\test\./main.rs:130:4     │
00:00:53 v #755 > > │     |                                                                 │
00:00:53 v #756 > > │ 130 | fn parse_string(input: &str) -> IResult<&str, SpiralToken> {    │
00:00:53 v #757 > > │     |    ^^^^^^^^^^^^                                                 │
00:00:53 v #758 > > │                                                                       │
00:00:53 v #759 > > │ warning: function `parse_identifier` is never used                    │
00:00:53 v #760 > > │    --> C:\home\git\polyglot\apps\spiral\temp\test\./main.rs:145:4     │
00:00:53 v #761 > > │     |                                                                 │
00:00:53 v #762 > > │ 145 | fn parse_identifier(input: &str) -> IResult<&str, SpiralToken> {[  │
00:00:53 v #763 > > │ 0m                                                                           │
00:00:53 v #764 > > │     |    ^^^^^^^^^^^^^^^^                                             │
00:00:53 v #765 > > │                                                                       │
00:00:53 v #766 > > │ warning: function `parse_integer` is never used                       │
00:00:53 v #767 > > │    --> C:\home\git\polyglot\apps\spiral\temp\test\./main.rs:157:4     │
00:00:53 v #768 > > │     |                                                                 │
00:00:53 v #769 > > │ 157 | fn parse_integer(input: &str) -> IResult<&str, SpiralToken> {   │
00:00:53 v #770 > > │     |    ^^^^^^^^^^^^^                                                │
00:00:53 v #771 > > │                                                                       │
00:00:53 v #772 > > │ warning: function `parse_operator` is never used                      │
00:00:53 v #773 > > │    --> C:\home\git\polyglot\apps\spiral\temp\test\./main.rs:165:4     │
00:00:53 v #774 > > │     |                                                                 │
00:00:53 v #775 > > │ 165 | fn parse_operator(input: &str) -> IResult<&str, SpiralToken> {  │
00:00:53 v #776 > > │     |    ^^^^^^^^^^^^^^                                               │
00:00:53 v #777 > > │                                                                       │
00:00:53 v #778 > > │ warning: function `parse_token` is never used                         │
00:00:53 v #779 > > │    --> C:\home\git\polyglot\apps\spiral\temp\test\./main.rs:170:4     │
00:00:53 v #780 > > │     |                                                                 │
00:00:53 v #781 > > │ 170 | fn parse_token(input: &str) -> IResult<&str, SpiralToken> {     │
00:00:53 v #782 > > │     |    ^^^^^^^^^^^                                                  │
00:00:53 v #783 > > │                                                                       │
00:00:53 v #784 > > │ warning: function `format_token` is never used                        │
00:00:53 v #785 > > │    --> C:\home\git\polyglot\apps\spiral\temp\test\./main.rs:180:4     │
00:00:53 v #786 > > │     |                                                                 │
00:00:53 v #787 > > │ 180 | fn format_token(token: &SpiralToken) -> String {                │
00:00:53 v #788 > > │     |    ^^^^^^^^^^^^                                                 │
00:00:53 v #789 > > │                                                                       │
00:00:53 v #790 > > │ warning: function `parse_expression` is never used                    │
00:00:53 v #791 > > │    --> C:\home\git\polyglot\apps\spiral\temp\test\./main.rs:201:4     │
00:00:53 v #792 > > │     |                                                                 │
00:00:53 v #793 > > │ 201 | fn parse_expression(input: &str) -> IResult<&str, SpiralToken> {[  │
00:00:53 v #794 > > │ 0m                                                                           │
00:00:53 v #795 > > │     |    ^^^^^^^^^^^^^^^^                                             │
00:00:53 v #796 > > │                                                                       │
00:00:53 v #797 > > │ warning: `spiral_temp_test` (bin "spiral_temp_test") generated 10       │
00:00:53 v #798 > > │ warnings                                                                   │
00:00:53 v #799 > > │     Finished `release` profile [optimized] target(s) in 17.85s        │
00:00:53 v #800 > > │                                                                              │
00:00:53 v #801 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:53 v #802 > >
00:00:53 v #803 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:53 v #804 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:53 v #805 > > │ ### run release tests with output enabled                                    │
00:00:53 v #806 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:53 v #807 > >
00:00:53 v #808 > > ── pwsh ────────────────────────────────────────────────────────────────────────
00:00:53 v #809 > > { cargo test --release -- --show-output } | Invoke-Block
00:01:21 v #810 > >
00:01:21 v #811 > > ╭─[ 27.79s - stdout ]──────────────────────────────────────────────────────────╮
00:01:21 v #812 > > │    Compiling zerocopy v0.7.35                                         │
00:01:21 v #813 > > │    Compiling thiserror v1.0.64                                        │
00:01:21 v #814 > > │    Compiling fable_library_rust v0.1.0                                  │
00:01:21 v #815 > > │ (C:\home\git\polyglot\lib\rust\fable\fable_modules\fable-library-rust)     │
00:01:21 v #816 > > │    Compiling ppv-lite86 v0.2.20                                       │
00:01:21 v #817 > > │    Compiling rand_chacha v0.3.1                                       │
00:01:21 v #818 > > │    Compiling rand v0.8.5                                              │
00:01:21 v #819 > > │    Compiling proptest v1.5.0                                          │
00:01:21 v #820 > > │    Compiling spiral_temp_test v0.0.1                                    │
00:01:21 v #821 > > │ (C:\home\git\polyglot\apps\spiral\temp\test)                               │
00:01:21 v #822 > > │     Finished `release` profile [optimized] target(s) in 27.51s        │
00:01:21 v #823 > > │      Running unittests main.rs                                          │
00:01:21 v #824 > > │ (C:\home\git\polyglot\workspace\target\release\deps\spiral_temp_test-98ee53c │
00:01:21 v #825 > > │ 37a2e3040.exe)                                                             │
00:01:21 v #826 > > │                                                                              │
00:01:21 v #827 > > │ running 3 tests                                                              │
00:01:21 v #828 > > │ test test_parse_number ... ok                                                │
00:01:21 v #829 > > │ test prop_parse_format_idempotent ... ok                                     │
00:01:21 v #830 > > │ test                                                                         │
00:01:21 v #831 > > │ adding_and_then_removing_an_item_from_the_cart_leaves_the_cart_unchanged ... │
00:01:21 v #832 > > │ ok                                                                           │
00:01:21 v #833 > > │                                                                              │
00:01:21 v #834 > > │ successes:                                                                   │
00:01:21 v #835 > > │                                                                              │
00:01:21 v #836 > > │ ---- prop_parse_format_idempotent stdout ----                                │
00:01:21 v #837 > > │ input=Integer(-4603430023539791808)                                          │
00:01:21 v #838 > > │ input=Comment("\\|^$DBS_?=x&.'K5zO%VuR.c~H")                                 │
00:01:21 v #839 > > │ input=Identifier("Fpate5Gl611")                                              │
00:01:21 v #840 > > │ input=Identifier("YFCoAS4")                                                  │
00:01:21 v #841 > > │ input=Identifier("oUf18CJ7sgrNE03qJjrgNZ")                                   │
00:01:21 v #842 > > │ input=StringLiteral("$w.n#%v^;Z.GE%?%")                                      │
00:01:21 v #843 > > │ input=Comment("{nc**z\"")                                                    │
00:01:21 v #844 > > │ input=Integer(-7354721033253139060)                                          │
00:01:21 v #845 > > │ input=StringLiteral("& %GE6*'{]{c0+u@Mlsb.Q`")                               │
00:01:21 v #846 > > │ input=StringLiteral("`BjOQ4?.Tj|3#`m`REgY")                                  │
00:01:21 v #847 > > │ input=StringLiteral("=C")                                                    │
00:01:21 v #848 > > │ input=Identifier("FYGUOLq0DRq7KTHMC1bf")                                     │
00:01:21 v #849 > > │ input=Identifier("s99d5GMUU2o1xaS4Wl6H")                                     │
00:01:21 v #850 > > │ input=Operator("=")                                                          │
00:01:21 v #851 > > │ input=StringLiteral("%Kc&.y%NGQ4i5+")                                        │
00:01:21 v #852 > > │ input=Identifier("XkfafNClLja4H")                                            │
00:01:21 v #853 > > │ input=Operator("=")                                                          │
00:01:21 v #854 > > │ input=Identifier("p")                                                        │
00:01:21 v #855 > > │ input=Integer(-4954331440737001884)                                          │
00:01:21 v #856 > > │ input=Identifier("uu55mB6XXrX57Fy2")                                         │
00:01:21 v #857 > > │ input=Operator(")")                                                          │
00:01:21 v #858 > > │ input=StringLiteral("&J.u%~k2NTA:")                                          │
00:01:21 v #859 > > │ input=Operator(")")                                                          │
00:01:21 v #860 > > │ input=Operator("*")                                                          │
00:01:21 v #861 > > │ input=Integer(-7690599906396362445)                                          │
00:01:21 v #862 > > │ input=Identifier("QjGdw77elI4AW7qioE9kxVvtjFGEal9vL")                        │
00:01:21 v #863 > > │ input=StringLiteral("A`+5#a&M|&%f.={/5L")                                    │
00:01:21 v #864 > > │ input=Integer(-1160112331892323470)                                          │
00:01:21 v #865 > > │ input=StringLiteral("De;bs*%ElSX@W%$H|i.fPeb")                               │
00:01:21 v #866 > > │ input=StringLiteral("n&ED$=P`@xR4}")                                         │
00:01:21 v #867 > > │ input=Comment("\\p%`")                                                       │
00:01:21 v #868 > > │ input=Operator("(")                                                          │
00:01:21 v #869 > > │ input=Comment("$Yw&2+c^rC/](h{W")                                            │
00:01:21 v #870 > > │ input=StringLiteral("tya")                                                   │
00:01:21 v #871 > > │ input=StringLiteral("JEV,*:$y3`^<_Y}")                                       │
00:01:21 v #872 > > │ input=Integer(1857086628347824672)                                           │
00:01:21 v #873 > > │ input=Operator("=")                                                          │
00:01:21 v #874 > > │ input=Operator("*")                                                          │
00:01:21 v #875 > > │ input=Comment("%?:(Z`h2")                                                    │
00:01:21 v #876 > > │ input=Operator("/")                                                          │
00:01:21 v #877 > > │ input=Comment("O7L*[H+n%IF:Y?=O'-\\hNWtQ\"=t))a*S")                          │
00:01:21 v #878 > > │ input=StringLiteral(".'>YU<5dN&$N DIBJ%")                                    │
00:01:21 v #879 > > │ input=Identifier("yyPK")                                                     │
00:01:21 v #880 > > │ input=Operator("+")                                                          │
00:01:21 v #881 > > │ input=Operator("*")                                                          │
00:01:21 v #882 > > │ input=StringLiteral("z{..<(Lp#0[`}'768N:LT)w6vj")                            │
00:01:21 v #883 > > │ input=Identifier("K8tShTg76lpO7Qa5dUuxnm")                                   │
00:01:21 v #884 > > │ input=StringLiteral("Z>Jk<")                                                 │
00:01:21 v #885 > > │ input=Identifier("dP5EbWUY")                                                 │
00:01:21 v #886 > > │ input=StringLiteral("ML<B-`>5BsQ[qd")                                        │
00:01:21 v #887 > > │ input=Comment("Ws'peB{.=")                                                   │
00:01:21 v #888 > > │ input=Operator("-")                                                          │
00:01:21 v #889 > > │ input=Integer(-5006623764196395342)                                          │
00:01:21 v #890 > > │ input=Comment("Zi).  .F")                                                    │
00:01:21 v #891 > > │ input=StringLiteral("U:x.q^)<y`u&=/S.0")                                     │
00:01:21 v #892 > > │ input=Comment("R-$*8S^\"M(<~Xbp")                                            │
00:01:21 v #893 > > │ input=Comment("ak\\3_-{5`L<S<<B[-`M:&/\"*B")                                 │
00:01:21 v #894 > > │ input=Identifier("xAXe2s5WHB6ub0gp9BHZ")                                     │
00:01:21 v #895 > > │ input=Comment("DSZ KO0D}\"7=3JC'L<C1\\\\6*z.& ")                             │
00:01:21 v #896 > > │ input=StringLiteral("'sG!ws|hZ$?&.k`VR<:r/$Sg4yykO|")                        │
00:01:21 v #897 > > │ input=Operator("*")                                                          │
00:01:21 v #898 > > │ input=Comment("*?7nnt%dEC&?ky_aV4pKDCp5y?:%\"Ck=")                           │
00:01:21 v #899 > > │ input=Identifier("XFLSFl69T1jgYi37zY2I")                                     │
00:01:21 v #900 > > │ input=Identifier("ufhNb2L")                                                  │
00:01:21 v #901 > > │ input=Comment("/|eM=d!c:*ZxP9/")                                             │
00:01:21 v #902 > > │ input=Operator("-")                                                          │
00:01:21 v #903 > > │ input=Integer(-6062659962446956910)                                          │
00:01:21 v #904 > > │ input=Integer(9009437037955439137)                                           │
00:01:21 v #905 > > │ input=StringLiteral("ToW`Up%3x?%")                                           │
00:01:21 v #906 > > │ input=Integer(-4948888748190934255)                                          │
00:01:21 v #907 > > │ input=StringLiteral("e{?$?U@CB:<N5ey&FTAc")                                  │
00:01:21 v #908 > > │ input=Integer(7727252239493685333)                                           │
00:01:21 v #909 > > │ input=Operator("/")                                                          │
00:01:21 v #910 > > │ input=Comment("]xGauCE;")                                                    │
00:01:21 v #911 > > │ input=Comment("ct2+`B[16v|%uO&.E?L,E\\r:|")                                  │
00:01:21 v #912 > > │ input=Comment("]a,`*,4*(Hk#f{")                                              │
00:01:21 v #913 > > │ input=Operator("(")                                                          │
00:01:21 v #914 > > │ input=Integer(8330224160444697159)                                           │
00:01:21 v #915 > > │ input=Comment(")y.")                                                         │
00:01:21 v #916 > > │ input=StringLiteral("KT&g'QkN")                                              │
00:01:21 v #917 > > │ input=StringLiteral(",j=w4Ob9=B;lX?`/F{>Ii")                                 │
00:01:21 v #918 > > │ input=Integer(2272192100522534029)                                           │
00:01:21 v #919 > > │ input=Comment("uGNh4/]K?O<!q{JFLJ.")                                         │
00:01:21 v #920 > > │ input=Identifier("LM726gPrU46tpOh4Rmi6Y719744y")                             │
00:01:21 v #921 > > │ input=Comment("`;U+V.Hg'9bthI=")                                             │
00:01:21 v #922 > > │ input=Operator(")")                                                          │
00:01:21 v #923 > > │ input=Integer(-5149304293993634068)                                          │
00:01:21 v #924 > > │ input=Operator("=")                                                          │
00:01:21 v #925 > > │ input=Identifier("dCDTFL8wND26zc3JC5v55pyzT")                                │
00:01:21 v #926 > > │ input=StringLiteral("3I967<~<gha'%m*_[a{L/")                                 │
00:01:21 v #927 > > │ input=Integer(-4253648478662712933)                                          │
00:01:21 v #928 > > │ input=Identifier("Zx4m9c3Hf5H30Ooyxx1pKsOh")                                 │
00:01:21 v #929 > > │ input=Integer(-5053910310982962776)                                          │
00:01:21 v #930 > > │ input=Comment("*t'%|23(r=0m%['r.'\\<9<wIBZufEKx")                            │
00:01:21 v #931 > > │ input=Comment("=P*.|vD??A:#c\\Q~PdxK$hR")                                    │
00:01:21 v #932 > > │ input=Identifier("WJm15551TMvc5oMFlcMJSSC")                                  │
00:01:21 v #933 > > │ input=Identifier("Ag8uO28EIjpX20UbR")                                        │
00:01:21 v #934 > > │ input=Comment("G:7&:TK")                                                     │
00:01:21 v #935 > > │ input=Comment("O\\S}}4\\]")                                                  │
00:01:21 v #936 > > │ input=Identifier("vmk2SVDckXDsb")                                            │
00:01:21 v #937 > > │ input=Identifier("KEqpIACWRwF7Wby0jHb")                                      │
00:01:21 v #938 > > │ input=Identifier("p2MVQ4i06")                                                │
00:01:21 v #939 > > │ input=StringLiteral("=B<`%<mglx$=*O*<s=:@Q'O%")                              │
00:01:21 v #940 > > │ input=StringLiteral("YGT;`dtqC;{")                                           │
00:01:21 v #941 > > │ input=Operator(")")                                                          │
00:01:21 v #942 > > │ input=Operator("+")                                                          │
00:01:21 v #943 > > │ input=Integer(-1021810716349845702)                                          │
00:01:21 v #944 > > │ input=StringLiteral("a%!9H")                                                 │
00:01:21 v #945 > > │ input=StringLiteral("'TRb6H3=w*X6C.l'O9'ZcU`<<dpgYz")                        │
00:01:21 v #946 > > │ input=StringLiteral("{`z*$'O<=8EF#]cE`$R:wE[ey!e'")                          │
00:01:21 v #947 > > │ input=Comment("QZ%A=3m|skd$")                                                │
00:01:21 v #948 > > │ input=Identifier("KAR9yWS744G5p")                                            │
00:01:21 v #949 > > │ input=Identifier("q33Vp598yp23e")                                            │
00:01:21 v #950 > > │ input=Integer(-800682045315619330)                                           │
00:01:21 v #951 > > │ input=Identifier("Vo2DvcJbe7")                                               │
00:01:21 v #952 > > │ input=Comment("/[MQ'*PR/")                                                   │
00:01:21 v #953 > > │ input=StringLiteral(":WFzD.!")                                               │
00:01:21 v #954 > > │ input=Operator("+")                                                          │
00:01:21 v #955 > > │ input=Operator("=")                                                          │
00:01:21 v #956 > > │ input=Operator("/")                                                          │
00:01:21 v #957 > > │ input=StringLiteral("`0@8!^.>Js4vB=>j>@^$$W_w{?('$S.")                       │
00:01:21 v #958 > > │ input=Integer(8255956446407449192)                                           │
00:01:21 v #959 > > │ input=Comment("D$k-Baw,`}5m<:D{%w<<tz")                                      │
00:01:21 v #960 > > │ input=Identifier("cn25n2g")                                                  │
00:01:21 v #961 > > │ input=Comment("='=`x|'/LSu+\\(nP{nb/")                                       │
00:01:21 v #962 > > │ input=Identifier("EhQf11YxVTICrCJ8kqkRqnN4gDMAekU")                          │
00:01:21 v #963 > > │ input=Identifier("PJH4fty4Y5LBV4HpH6hvv1103084DpBF")                         │
00:01:21 v #964 > > │ input=StringLiteral("XpUp(/?;K}?]k9$pDX3X:`o!$(Uz-T")                        │
00:01:21 v #965 > > │ input=Identifier("Hl6Vad")                                                   │
00:01:21 v #966 > > │ input=Integer(1613573990993400267)                                           │
00:01:21 v #967 > > │ input=StringLiteral("K:e/9]}iXnN$pHBCS$I]F`/$i=DKvVG?")                      │
00:01:21 v #968 > > │ input=Operator(")")                                                          │
00:01:21 v #969 > > │ input=Comment("$K;v&8|t\"FVxc")                                              │
00:01:21 v #970 > > │ input=Operator("+")                                                          │
00:01:21 v #971 > > │ input=Integer(3828024704201318936)                                           │
00:01:21 v #972 > > │ input=StringLiteral("=&nP)ke#?gm*pR_qxK'+.s-nyv`")                           │
00:01:21 v #973 > > │ input=Identifier("a6sE0p39B6nJMSeQ4ZaJH6nBhAr")                              │
00:01:21 v #974 > > │ input=Comment("[%jJ{j/$s%`P\"]%=(xV!#*")                                     │
00:01:21 v #975 > > │ input=Comment("\\$.=^.{`/*\"+$o8~\"Cj)t")                                    │
00:01:21 v #976 > > │ input=Identifier("ACfSrJ2O62COSOAjasibcTDt64L27J6")                          │
00:01:21 v #977 > > │ input=Operator("+")                                                          │
00:01:21 v #978 > > │ input=Integer(-2762664550335343794)                                          │
00:01:21 v #979 > > │ input=StringLiteral("tBOy!bQ&")                                              │
00:01:21 v #980 > > │ input=Integer(-2210884753647914155)                                          │
00:01:21 v #981 > > │ input=Comment("='>4z=H%]E27jn`x?>j8B*%d*]@L\\")                              │
00:01:21 v #982 > > │ input=StringLiteral("?%%<;=Z`V{T]$y68<[g{%&")                                │
00:01:21 v #983 > > │ input=Comment("&i?/&$Y&>9E`\"&:st")                                          │
00:01:21 v #984 > > │ input=Integer(-8940713067637071287)                                          │
00:01:21 v #985 > > │ input=Identifier("QmAV")                                                     │
00:01:21 v #986 > > │ input=Integer(6839244424141608524)                                           │
00:01:21 v #987 > > │ input=Operator("+")                                                          │
00:01:21 v #988 > > │ input=Identifier("fQIH5dT")                                                  │
00:01:21 v #989 > > │ input=Identifier("s067OE4wVP793mVp8ppH")                                     │
00:01:21 v #990 > > │ input=StringLiteral("l#t+K t)a1O}Y)=!]%t! @?P`=NO?{=")                       │
00:01:21 v #991 > > │ input=Comment("dVhs!\\.7`d?Yx<.i&a}.")                                       │
00:01:21 v #992 > > │ input=Comment("mk3Tr\"/ApyR}9XV:<KG?1k_")                                    │
00:01:21 v #993 > > │ input=Operator("-")                                                          │
00:01:21 v #994 > > │ input=Operator("/")                                                          │
00:01:21 v #995 > > │ input=StringLiteral("6/`0=?*$U<$cX<k,%?N,%")                                 │
00:01:21 v #996 > > │ input=StringLiteral(".;t'VQo*V8pS]a_'m$zq")                                  │
00:01:21 v #997 > > │ input=Comment("+W/y{TO))J\\u3Z?p{=;f7")                                      │
00:01:21 v #998 > > │ input=Operator("-")                                                          │
00:01:21 v #999 > > │ input=StringLiteral("vKzQBIWP)k%+`")                                         │
00:01:21 v #1000 > > │ input=StringLiteral("5_{%*b`v*t98'[:3bR5")                                   │
00:01:21 v #1001 > > │ input=Operator(")")                                                          │
00:01:21 v #1002 > > │ input=Comment("p.;*??V-3")                                                   │
00:01:21 v #1003 > > │ input=StringLiteral("p$dFx")                                                 │
00:01:21 v #1004 > > │ input=Integer(-1171684132263473978)                                          │
00:01:21 v #1005 > > │ input=Identifier("jVTB0pV9DA1TMVXe17FfUS7Jx2V")                              │
00:01:21 v #1006 > > │ input=Identifier("pcsMN72S7ES1R21Yk2stv67tUp3B")                             │
00:01:21 v #1007 > > │ input=Identifier("CbtgoIDsoLfk6KKo")                                         │
00:01:21 v #1008 > > │ input=Comment("%|'U%Vg&`.D\\!=Bp:!p_&")                                      │
00:01:21 v #1009 > > │ input=StringLiteral("iAj=vI`*1PUC`%B4`DT%iz`")                               │
00:01:21 v #1010 > > │ input=Integer(-5136441570374250841)                                          │
00:01:21 v #1011 > > │ input=Identifier("cneB13Amo6m")                                              │
00:01:21 v #1012 > > │ input=Integer(4464847351284454111)                                           │
00:01:21 v #1013 > > │ input=Operator("*")                                                          │
00:01:21 v #1014 > > │ input=StringLiteral("jx1Q8y;.=LN wK:P$2<wp")                                 │
00:01:21 v #1015 > > │ input=Operator(")")                                                          │
00:01:21 v #1016 > > │ input=Operator("=")                                                          │
00:01:21 v #1017 > > │ input=Integer(-8989617559989895565)                                          │
00:01:21 v #1018 > > │ input=StringLiteral("`=A'T`BnJnh>Wl={`")                                     │
00:01:21 v #1019 > > │ input=Identifier("kfXWz951LaC2O6Q8Vp")                                       │
00:01:21 v #1020 > > │ input=Integer(2937421603336477611)                                           │
00:01:21 v #1021 > > │ input=Comment("%x1%rgfx//\"xOo:Q/\"Tu[")                                     │
00:01:21 v #1022 > > │ input=Identifier("Iydb276C00")                                               │
00:01:21 v #1023 > > │ input=Operator("-")                                                          │
00:01:21 v #1024 > > │ input=Operator("=")                                                          │
00:01:21 v #1025 > > │ input=Integer(-5601354495259481929)                                          │
00:01:21 v #1026 > > │ input=StringLiteral("$fTP=SXJO`&W.c:c'`&?.N=wuGM")                           │
00:01:21 v #1027 > > │ input=Identifier("qw1rN87IdpvZ3OA")                                          │
00:01:21 v #1028 > > │ input=Comment("+8.&q<{\"s7v%J`:X*ZI*u?\"E")                                  │
00:01:21 v #1029 > > │ input=Identifier("Us27VytrQ96gbmtkyGF7otdmSPH")                              │
00:01:21 v #1030 > > │ input=StringLiteral("v{g?u'")                                                │
00:01:21 v #1031 > > │ input=Integer(1631512166464189581)                                           │
00:01:21 v #1032 > > │ input=Identifier("vyxnfsy4Yd4S0OZXIGsM7I0d")                                 │
00:01:21 v #1033 > > │ input=Identifier("gU5hIZtZ77X6HRjRn")                                        │
00:01:21 v #1034 > > │ input=Comment("vM:9 ?cm&{'z?h")                                              │
00:01:21 v #1035 > > │ input=Comment("z\\%M?{&H]KpF+&U\"`:yKw'qn")                                  │
00:01:21 v #1036 > > │ input=StringLiteral(".&:&s|&U6B:^&'?)(,'o^")                                 │
00:01:21 v #1037 > > │ input=Comment("EJllY,Pg*%$. Wh*z`I<ot'BpyC!?Gv&")                            │
00:01:21 v #1038 > > │ input=Identifier("r")                                                        │
00:01:21 v #1039 > > │ input=Comment("w?:{gWeOp.~.'g")                                              │
00:01:21 v #1040 > > │ input=Comment("_`.A{@D4EBR8")                                                │
00:01:21 v #1041 > > │ input=Operator("(")                                                          │
00:01:21 v #1042 > > │ input=StringLiteral("v3^e$")                                                 │
00:01:21 v #1043 > > │ input=StringLiteral("ryMG|")                                                 │
00:01:21 v #1044 > > │ input=Identifier("QNsR6Y1G3uKsvDZoIrH2hC9cHI")                               │
00:01:21 v #1045 > > │ input=Integer(-2414777067603505042)                                          │
00:01:21 v #1046 > > │ input=Integer(-2774957224311669754)                                          │
00:01:21 v #1047 > > │ input=Operator("-")                                                          │
00:01:21 v #1048 > > │ input=StringLiteral("?Z7")                                                   │
00:01:21 v #1049 > > │ input=StringLiteral("$IhU9?%R?7f?q5('cpY[1S0E?1$I<Ue")                       │
00:01:21 v #1050 > > │ input=Comment("p\"`o8ar'T::)A=$qf1j\"E*:Y")                                  │
00:01:21 v #1051 > > │ input=Integer(2637350100350057077)                                           │
00:01:21 v #1052 > > │ input=Comment("A_&f',)M#r%fq(k6e")                                           │
00:01:21 v #1053 > > │ input=Identifier("CYGil8V358OTm")                                            │
00:01:21 v #1054 > > │ input=StringLiteral("GGB=/~S%`, o^Q=*qW'HxsKK4.")                            │
00:01:21 v #1055 > > │ input=Comment("';<|D")                                                       │
00:01:21 v #1056 > > │ input=Operator("=")                                                          │
00:01:21 v #1057 > > │ input=Identifier("ddNDKAVQ")                                                 │
00:01:21 v #1058 > > │ input=Operator("-")                                                          │
00:01:21 v #1059 > > │ input=StringLiteral("$#i92z%k:c&QP'D`:i%:O7")                                │
00:01:21 v #1060 > > │ input=Identifier("L86ilgnqu4rnxSrU")                                         │
00:01:21 v #1061 > > │ input=StringLiteral("%$8a{:'cE")                                             │
00:01:21 v #1062 > > │ input=Comment("\"O)A?XnJ$_~*E<*gWH")                                         │
00:01:21 v #1063 > > │ input=Integer(3756880618784601515)                                           │
00:01:21 v #1064 > > │ input=Comment("<,}*\\?*L_k5BR_W`%~:&\"$CzIhn'")                              │
00:01:21 v #1065 > > │ input=StringLiteral("$0b^n*_f=l`&;& H)k<K")                                  │
00:01:21 v #1066 > > │ input=Comment("/dqhP:b=")                                                    │
00:01:21 v #1067 > > │ input=Comment("E@ppU!n/Q'OW5.ge!=\\-gd*1i/>#`*")                             │
00:01:21 v #1068 > > │ input=Comment("j@")                                                          │
00:01:21 v #1069 > > │ input=Operator(")")                                                          │
00:01:21 v #1070 > > │ input=Comment("/Sy=:~v:KcK774K+Zq\":")                                       │
00:01:21 v #1071 > > │ input=Comment("Ehy$J{`f$/\"2\"_/%H:~L/tY16")                                 │
00:01:21 v #1072 > > │ input=Operator("*")                                                          │
00:01:21 v #1073 > > │ input=Integer(-981359897478616138)                                           │
00:01:21 v #1074 > > │ input=Comment("/.L,Q&7^`*\\.\\^s'%p")                                        │
00:01:21 v #1075 > > │ input=Comment("?G\\G$.gND$%NzM")                                             │
00:01:21 v #1076 > > │ input=StringLiteral("h{Y3K2c$%5Jc<<Q<eifhOI==p|")                            │
00:01:21 v #1077 > > │ input=Comment("s\"jf=E\\(}:<.\\('>R]\"F%:`l.={{Im")                          │
00:01:21 v #1078 > > │ input=Operator("/")                                                          │
00:01:21 v #1079 > > │ input=Operator("-")                                                          │
00:01:21 v #1080 > > │ input=Operator("*")                                                          │
00:01:21 v #1081 > > │ input=Identifier("iKvdUCtDYG1m80")                                           │
00:01:21 v #1082 > > │ input=Integer(-6907146097325466117)                                          │
00:01:21 v #1083 > > │ input=Comment(".j=;OP%p,:N%DY^Ss<z[47")                                      │
00:01:21 v #1084 > > │ input=Operator("(")                                                          │
00:01:21 v #1085 > > │ input=StringLiteral("$$U")                                                   │
00:01:21 v #1086 > > │ input=Integer(5416325730009082068)                                           │
00:01:21 v #1087 > > │ input=Operator("-")                                                          │
00:01:21 v #1088 > > │ input=Integer(4808881149574846755)                                           │
00:01:21 v #1089 > > │ input=Operator("+")                                                          │
00:01:21 v #1090 > > │ input=Identifier("v1z660aKS0Vg6Pj5hDvq8")                                    │
00:01:21 v #1091 > > │ input=Integer(7758836118800847065)                                           │
00:01:21 v #1092 > > │ input=Integer(5006855484245748192)                                           │
00:01:21 v #1093 > > │                                                                              │
00:01:21 v #1094 > > │                                                                              │
00:01:21 v #1095 > > │ successes:                                                                   │
00:01:21 v #1096 > > │     adding_and_then_removing_an_item_from_the_cart_leaves_the_cart_unchanged │
00:01:21 v #1097 > > │     prop_parse_format_idempotent                                             │
00:01:21 v #1098 > > │     test_parse_number                                                        │
00:01:21 v #1099 > > │                                                                              │
00:01:21 v #1100 > > │ test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out;  │
00:01:21 v #1101 > > │ finished in 0.15s                                                            │
00:01:21 v #1102 > > │                                                                              │
00:01:21 v #1103 > > │                                                                              │
00:01:21 v #1104 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:21 v #1105 > >
00:01:21 v #1106 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:21 v #1107 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:21 v #1108 > > │ ### execute the binary in release mode                                       │
00:01:21 v #1109 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:21 v #1110 > >
00:01:21 v #1111 > > ── pwsh ────────────────────────────────────────────────────────────────────────
00:01:21 v #1112 > > { . $ScriptDir/../../../../workspace/target/release/spiral_temp_test$(_exe) } |
00:01:21 v #1113 > > Invoke-Block
00:01:21 v #1114 > >
00:01:21 v #1115 > > ╭─[ 18.10ms - stdout ]─────────────────────────────────────────────────────────╮
00:01:21 v #1116 > > │ app=test                                                                     │
00:01:21 v #1117 > > │                                                                              │
00:01:21 v #1118 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:21 v #1119 > 00:01:19 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 87719 }
00:01:21 v #1120 > 00:01:19 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/polyglot/apps/spiral/temp/test/build.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/polyglot/apps/spiral/temp/test/build.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:01:22 v #1121 > 00:01:20 v #5 ! [NbConvertApp] Converting notebook c:/home/git/polyglot/apps/spiral/temp/test/build.dib.ipynb to html
00:01:22 v #1122 > 00:01:20 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:01:22 v #1123 > 00:01:20 v #7 !   validate(nb)
00:01:23 v #1124 > 00:01:21 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:01:23 v #1125 > 00:01:21 v #9 !   return _pygments_highlight(
00:01:23 v #1126 > 00:01:21 v #10 ! [NbConvertApp] Writing 356084 bytes to c:\home\git\polyglot\apps\spiral\temp\test\build.dib.html
00:01:23 v #1127 > 00:01:21 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 874 }
00:01:23 v #1128 > 00:01:21 d #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 874 }
00:01:23 v #1129 > 00:01:21 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/polyglot/apps/spiral/temp/test/build.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/polyglot/apps/spiral/temp/test/build.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:01:23 v #1130 > 00:01:22 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:01:23 v #1131 > 00:01:22 d #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:01:23 v #1132 > 00:01:22 d #16 spiral_builder.run / dib / { exit_code = 0; result_length = 88652 }
00:01:23 d #1133 runtime.execute_with_options_async / { exit_code = 0; output_length = 93490 }
00:01:23 d #3 main / executeCommand / exitCode: 0 / command: ../../../../workspace/target/release/spiral_builder.exe dib --path build.dib
00:01:24 v #5 async.run_with_timeout_async / { timeout = 100 }
In [ ]:
{ pwsh ../apps/spiral/vscode/build.ps1 } | Invoke-Block
bun install v1.1.7 (b0b7db5c)

Checked 203 installs across 191 packages (no changes) [188.00ms]
Symlink already exists: C:\home\git\polyglot\apps\spiral\vscode\LICENSE -> C:\home\git\polyglot\LICENSE

  out\src\extension.js                  2.4kb
  out\media\cellOutputScrollButtons.js  1.9kb

⚡ Done in 7ms
 DONE  Packaged: out\spiral-vscode-0.0.1.vsix (26 files, 98.15KB)
In [ ]:
{ pwsh ../apps/ipfs/build.ps1 } | Invoke-Block
bun install v1.1.7 (b0b7db5c)

 Done! Checked 220 packages (no changes) [196.00ms]
In [ ]:
{ pwsh ./outdated.ps1 } | Invoke-Block
Paket version 8.1.0-alpha004+7aa412f49b32de979c3d5acde07e88e6d47c965b
Resolving dependency graph...
Outdated packages found:
  Group: Main
    * Expecto 10.2.1 -> 11.0.0-alpha2
    * Expecto.FsCheck 10.2.1-fscheck3 -> 11.0.0-alpha2-fscheck2
    * FsCheck 3.0.0-rc3 -> 2.16.6
    * FSharp.Core 8.0.300-beta.24080.5 -> 9.0.100-beta.24466.6
    * Microsoft.AspNetCore.Connections.Abstractions 7.0 -> 9.0.0-rc.2.24474.3
    * Microsoft.AspNetCore.Http.Connections.Client 7.0 -> 9.0.0-rc.2.24474.3
    * Microsoft.AspNetCore.Http.Connections.Common 7.0 -> 9.0.0-rc.2.24474.3
    * Microsoft.AspNetCore.SignalR.Client 7.0 -> 9.0.0-rc.2.24474.3
    * Microsoft.AspNetCore.SignalR.Client.Core 7.0 -> 9.0.0-rc.2.24474.3
    * Microsoft.AspNetCore.SignalR.Common 7.0 -> 9.0.0-rc.2.24474.3
    * Microsoft.AspNetCore.SignalR.Protocols.Json 7.0 -> 9.0.0-rc.2.24474.3
    * Microsoft.Extensions.DependencyInjection 8.0.1 -> 9.0.0-rc.2.24473.5
    * Microsoft.Extensions.DependencyInjection.Abstractions 8.0.2 -> 9.0.0-rc.2.24473.5
    * Microsoft.Extensions.Features 7.0 -> 9.0.0-rc.2.24474.3
    * Microsoft.Extensions.Logging 8.0.1 -> 9.0.0-rc.2.24473.5
    * Microsoft.Extensions.Logging.Abstractions 8.0.2 -> 9.0.0-rc.2.24473.5
    * Microsoft.Extensions.Options 8.0.2 -> 9.0.0-rc.2.24473.5
    * Microsoft.Extensions.Primitives 8.0 -> 9.0.0-rc.2.24473.5
    * System.CodeDom 8.0 -> 9.0.0-rc.2.24473.5
    * System.Management 7.0 -> 9.0.0-rc.2.24473.5
    * System.Threading.Channels 8.0 -> 9.0.0-rc.2.24473.5
Total time taken: 41 seconds

CheckToml / toml: C:\home\git\polyglot\workspace\Cargo.toml
chat_contract_tests
================
Name                        Project                        Compat   Latest   Kind    Platform
----                        -------                        ------   ------   ----    --------
ahash                       0.7.8                          Removed  Removed  Normal  ---
android-tzdata              0.1.1                          Removed  ---      Normal  cfg(target_os = "android")
android_system_properties   0.1.5                          Removed  ---      Normal  cfg(target_os = "android")
autocfg                     1.4.0                          Removed  ---      Build   ---
autocfg                     1.4.0                          Removed  Removed  Build   ---
bumpalo                     3.16.0                         Removed  ---      Normal  ---
bumpalo                     3.16.0                         Removed  Removed  Normal  ---
cc                          1.1.30                         Removed  ---      Build   ---
cfg-if                      1.0.0                          Removed  ---      Normal  ---
cfg-if                      1.0.0                          Removed  Removed  Normal  ---
chrono                      0.4.38                         Removed  ---      Normal  ---
core-foundation-sys         0.8.7                          Removed  ---      Normal  cfg(any(target_os = "macos", target_os = "ios"))
getrandom                   0.2.15                         Removed  Removed  Normal  cfg(any(target_os = "linux", target_os = "android", target_os = "windows", target_os = "macos", target_os = "ios", target_os = "freebsd", target_os = "openbsd", target_os = "netbsd", target_os = "dragonfly", target_os = "solaris", target_os = "illumos", target_os = "fuchsia", target_os = "redox", target_os = "cloudabi", target_os = "haiku", target_os = "vxworks", target_os = "emscripten", target_os = "wasi"))
hashbrown                   0.12.3                         0.15.0   0.15.0   Normal  ---
iana-time-zone              0.1.61                         Removed  ---      Normal  cfg(unix)
iana-time-zone-haiku        0.1.2                          Removed  ---      Normal  cfg(target_os = "haiku")
indexmap                    1.9.3                          2.6.0    2.6.0    Normal  ---
jobserver                   0.1.32                         Removed  ---      Normal  ---
js-sys                      0.3.72                         Removed  ---      Normal  cfg(all(target_arch = "wasm32", not(any(target_os = "emscripten", target_os = "wasi"))))
js-sys                      0.3.72                         Removed  ---      Normal  cfg(all(target_arch = "wasm32", target_os = "unknown"))
js-sys                      0.3.72                         Removed  Removed  Normal  cfg(all(any(target_arch = "wasm32", target_arch = "wasm64"), target_os = "unknown"))
libc                        0.2.161                        Removed  ---      Normal  ---
libc                        0.2.161                        Removed  ---      Normal  cfg(unix)
libc                        0.2.161                        Removed  Removed  Normal  cfg(unix)
libm                        0.2.8                          Removed  ---      Normal  ---
log                         0.4.22                         Removed  ---      Normal  ---
log                         0.4.22                         Removed  Removed  Normal  ---
near-sandbox-utils          0.8.0                          0.9.0    ---      Build   ---
near-sandbox-utils          0.9.0                          ---      0.8.0    Normal  ---
num-traits                  0.2.19                         Removed  ---      Normal  ---
once_cell                   1.20.2                         Removed  ---      Normal  ---
once_cell                   1.20.2                         Removed  Removed  Normal  ---
once_cell                   1.20.2                         Removed  Removed  Normal  cfg(not(all(target_arch = "arm", target_os = "none")))
proc-macro2                 1.0.88                         Removed  ---      Normal  ---
proc-macro2                 1.0.88                         Removed  Removed  Normal  ---
quote                       1.0.37                         Removed  ---      Normal  ---
quote                       1.0.37                         Removed  Removed  Normal  ---
serde                       1.0.210                        Removed  ---      Normal  ---
serde_derive                1.0.210                        Removed  ---      Normal  ---
shlex                       1.3.0                          Removed  ---      Normal  ---
syn                         2.0.79                         Removed  ---      Normal  ---
syn                         2.0.79                         Removed  Removed  Normal  ---
unicode-ident               1.0.13                         Removed  ---      Normal  ---
unicode-ident               1.0.13                         Removed  Removed  Normal  ---
version_check               0.9.5                          Removed  Removed  Build   ---
wasi                        0.11.0+wasi-snapshot-preview1  Removed  Removed  Normal  cfg(target_os = "wasi")
wasm-bindgen                0.2.95                         Removed  ---      Normal  ---
wasm-bindgen                0.2.95                         Removed  ---      Normal  cfg(all(target_arch = "wasm32", not(any(target_os = "emscripten", target_os = "wasi"))))
wasm-bindgen                0.2.95                         Removed  ---      Normal  cfg(all(target_arch = "wasm32", target_os = "unknown"))
wasm-bindgen                0.2.95                         Removed  Removed  Normal  ---
wasm-bindgen                0.2.95                         Removed  Removed  Normal  cfg(all(any(target_arch = "wasm32", target_arch = "wasm64"), target_os = "unknown"))
wasm-bindgen-backend        0.2.95                         Removed  ---      Normal  ---
wasm-bindgen-backend        0.2.95                         Removed  Removed  Normal  ---
wasm-bindgen-macro          0.2.95                         Removed  ---      Normal  ---
wasm-bindgen-macro          0.2.95                         Removed  Removed  Normal  ---
wasm-bindgen-macro-support  0.2.95                         Removed  ---      Normal  ---
wasm-bindgen-macro-support  0.2.95                         Removed  Removed  Normal  ---
wasm-bindgen-shared         0.2.95                         Removed  ---      Normal  ---
wasm-bindgen-shared         0.2.95                         Removed  Removed  Normal  ---
windows-core                0.52.0                         Removed  ---      Normal  cfg(target_os = "windows")
windows-targets             0.52.6                         Removed  ---      Normal  ---
windows-targets             0.52.6                         Removed  ---      Normal  cfg(windows)
windows_aarch64_gnullvm     0.52.6                         Removed  ---      Normal  aarch64-pc-windows-gnullvm
windows_aarch64_msvc        0.52.6                         Removed  ---      Normal  cfg(all(target_arch = "aarch64", target_env = "msvc", not(windows_raw_dylib)))
windows_i686_gnu            0.52.6                         Removed  ---      Normal  cfg(all(target_arch = "x86", target_env = "gnu", not(target_abi = "llvm"), not(windows_raw_dylib)))
windows_i686_gnullvm        0.52.6                         Removed  ---      Normal  i686-pc-windows-gnullvm
windows_i686_msvc           0.52.6                         Removed  ---      Normal  cfg(all(target_arch = "x86", target_env = "msvc", not(windows_raw_dylib)))
windows_x86_64_gnu          0.52.6                         Removed  ---      Normal  cfg(all(target_arch = "x86_64", target_env = "gnu", not(target_abi = "llvm"), not(windows_raw_dylib)))
windows_x86_64_gnullvm      0.52.6                         Removed  ---      Normal  x86_64-pc-windows-gnullvm
windows_x86_64_msvc         0.52.6                         Removed  ---      Normal  cfg(all(any(target_arch = "x86_64", target_arch = "arm64ec"), target_env = "msvc", not(windows_raw_dylib)))

spiral_wasm
================
Name                        Project                        Compat   Latest   Kind    Platform
----                        -------                        ------   ------   ----    --------
ahash                       0.7.8                          Removed  Removed  Normal  ---
android-tzdata              0.1.1                          Removed  ---      Normal  cfg(target_os = "android")
android_system_properties   0.1.5                          Removed  ---      Normal  cfg(target_os = "android")
autocfg                     1.4.0                          Removed  ---      Build   ---
autocfg                     1.4.0                          Removed  Removed  Build   ---
bumpalo                     3.16.0                         Removed  ---      Normal  ---
bumpalo                     3.16.0                         Removed  Removed  Normal  ---
cc                          1.1.30                         Removed  ---      Build   ---
cfg-if                      1.0.0                          Removed  ---      Normal  ---
cfg-if                      1.0.0                          Removed  Removed  Normal  ---
chrono                      0.4.38                         Removed  ---      Normal  ---
core-foundation-sys         0.8.7                          Removed  ---      Normal  cfg(any(target_os = "macos", target_os = "ios"))
getrandom                   0.2.15                         Removed  Removed  Normal  cfg(any(target_os = "linux", target_os = "android", target_os = "windows", target_os = "macos", target_os = "ios", target_os = "freebsd", target_os = "openbsd", target_os = "netbsd", target_os = "dragonfly", target_os = "solaris", target_os = "illumos", target_os = "fuchsia", target_os = "redox", target_os = "cloudabi", target_os = "haiku", target_os = "vxworks", target_os = "emscripten", target_os = "wasi"))
hashbrown                   0.12.3                         0.15.0   0.15.0   Normal  ---
iana-time-zone              0.1.61                         Removed  ---      Normal  cfg(unix)
iana-time-zone-haiku        0.1.2                          Removed  ---      Normal  cfg(target_os = "haiku")
indexmap                    1.9.3                          2.6.0    2.6.0    Normal  ---
jobserver                   0.1.32                         Removed  ---      Normal  ---
js-sys                      0.3.72                         Removed  ---      Normal  cfg(all(target_arch = "wasm32", not(any(target_os = "emscripten", target_os = "wasi"))))
js-sys                      0.3.72                         Removed  ---      Normal  cfg(all(target_arch = "wasm32", target_os = "unknown"))
js-sys                      0.3.72                         Removed  Removed  Normal  cfg(all(any(target_arch = "wasm32", target_arch = "wasm64"), target_os = "unknown"))
libc                        0.2.161                        Removed  ---      Normal  ---
libc                        0.2.161                        Removed  ---      Normal  cfg(unix)
libc                        0.2.161                        Removed  Removed  Normal  cfg(unix)
libm                        0.2.8                          Removed  ---      Normal  ---
log                         0.4.22                         Removed  ---      Normal  ---
log                         0.4.22                         Removed  Removed  Normal  ---
near-sandbox-utils          0.8.0                          0.9.0    ---      Build   ---
near-sandbox-utils          0.9.0                          ---      0.8.0    Normal  ---
num-traits                  0.2.19                         Removed  ---      Normal  ---
once_cell                   1.20.2                         Removed  ---      Normal  ---
once_cell                   1.20.2                         Removed  Removed  Normal  ---
once_cell                   1.20.2                         Removed  Removed  Normal  cfg(not(all(target_arch = "arm", target_os = "none")))
proc-macro2                 1.0.88                         Removed  ---      Normal  ---
proc-macro2                 1.0.88                         Removed  Removed  Normal  ---
quote                       1.0.37                         Removed  ---      Normal  ---
quote                       1.0.37                         Removed  Removed  Normal  ---
serde                       1.0.210                        Removed  ---      Normal  ---
serde_derive                1.0.210                        Removed  ---      Normal  ---
shlex                       1.3.0                          Removed  ---      Normal  ---
syn                         2.0.79                         Removed  ---      Normal  ---
syn                         2.0.79                         Removed  Removed  Normal  ---
unicode-ident               1.0.13                         Removed  ---      Normal  ---
unicode-ident               1.0.13                         Removed  Removed  Normal  ---
version_check               0.9.5                          Removed  Removed  Build   ---
wasi                        0.11.0+wasi-snapshot-preview1  Removed  Removed  Normal  cfg(target_os = "wasi")
wasm-bindgen                0.2.95                         Removed  ---      Normal  ---
wasm-bindgen                0.2.95                         Removed  ---      Normal  cfg(all(target_arch = "wasm32", not(any(target_os = "emscripten", target_os = "wasi"))))
wasm-bindgen                0.2.95                         Removed  ---      Normal  cfg(all(target_arch = "wasm32", target_os = "unknown"))
wasm-bindgen                0.2.95                         Removed  Removed  Normal  ---
wasm-bindgen                0.2.95                         Removed  Removed  Normal  cfg(all(any(target_arch = "wasm32", target_arch = "wasm64"), target_os = "unknown"))
wasm-bindgen-backend        0.2.95                         Removed  ---      Normal  ---
wasm-bindgen-backend        0.2.95                         Removed  Removed  Normal  ---
wasm-bindgen-macro          0.2.95                         Removed  ---      Normal  ---
wasm-bindgen-macro          0.2.95                         Removed  Removed  Normal  ---
wasm-bindgen-macro-support  0.2.95                         Removed  ---      Normal  ---
wasm-bindgen-macro-support  0.2.95                         Removed  Removed  Normal  ---
wasm-bindgen-shared         0.2.95                         Removed  ---      Normal  ---
wasm-bindgen-shared         0.2.95                         Removed  Removed  Normal  ---
windows-core                0.52.0                         Removed  ---      Normal  cfg(target_os = "windows")
windows-targets             0.52.6                         Removed  ---      Normal  ---
windows-targets             0.52.6                         Removed  ---      Normal  cfg(windows)
windows_aarch64_gnullvm     0.52.6                         Removed  ---      Normal  aarch64-pc-windows-gnullvm
windows_aarch64_msvc        0.52.6                         Removed  ---      Normal  cfg(all(target_arch = "aarch64", target_env = "msvc", not(windows_raw_dylib)))
windows_i686_gnu            0.52.6                         Removed  ---      Normal  cfg(all(target_arch = "x86", target_env = "gnu", not(target_abi = "llvm"), not(windows_raw_dylib)))
windows_i686_gnullvm        0.52.6                         Removed  ---      Normal  i686-pc-windows-gnullvm
windows_i686_msvc           0.52.6                         Removed  ---      Normal  cfg(all(target_arch = "x86", target_env = "msvc", not(windows_raw_dylib)))
windows_x86_64_gnu          0.52.6                         Removed  ---      Normal  cfg(all(target_arch = "x86_64", target_env = "gnu", not(target_abi = "llvm"), not(windows_raw_dylib)))
windows_x86_64_gnullvm      0.52.6                         Removed  ---      Normal  x86_64-pc-windows-gnullvm
windows_x86_64_msvc         0.52.6                         Removed  ---      Normal  cfg(all(any(target_arch = "x86_64", target_arch = "arm64ec"), target_env = "msvc", not(windows_raw_dylib)))

CheckToml / toml: C:\home\git\polyglot\apps\chat\contract\Cargo.toml
Name                                     Project      Compat       Latest       Kind    Platform
----                                     -------      ------       ------       ----    --------
Inflector->regex                         1.11.0       1.11.1       1.11.1       Normal  ---
android_system_properties->libc          0.2.161      0.2.162      0.2.162      Normal  ---
block-buffer->hybrid-array               0.2.0-rc.11  0.2.1        0.2.1        Normal  ---
borsh                                    1.5.1        1.5.2        1.5.2        Normal  ---
borsh->borsh-derive                      1.5.1        1.5.2        1.5.2        Normal  ---
borsh-derive->proc-macro2                1.0.88       1.0.89       1.0.89       Normal  ---
borsh-derive->syn                        2.0.79       2.0.87       2.0.87       Normal  ---
borsh-derive->syn_derive                 0.1.8        Removed      Removed      Normal  ---
cc->libc                                 0.2.161      0.2.162      0.2.162      Normal  cfg(unix)
chrono->serde                            1.0.210      1.0.215      1.0.215      Normal  ---
cpufeatures->libc                        0.2.161      0.2.162      0.2.162      Normal  aarch64-linux-android
crypto-common->hybrid-array              0.2.0-rc.11  0.2.1        0.2.1        Normal  ---
darling_core->proc-macro2                1.0.88       1.0.89       1.0.89       Normal  ---
darling_core->syn                        2.0.79       2.0.87       2.0.87       Normal  ---
darling_macro->syn                       2.0.79       2.0.87       2.0.87       Normal  ---
digest->block-buffer                     0.11.0-rc.2  0.11.0-rc.3  0.11.0-rc.3  Normal  ---
digest->const-oid                        0.10.0-rc.2  0.10.0-rc.3  0.10.0-rc.3  Normal  ---
futures-macro->proc-macro2               1.0.88       1.0.89       1.0.89       Normal  ---
futures-macro->syn                       2.0.79       2.0.87       2.0.87       Normal  ---
futures-util->pin-project-lite           0.2.14       0.2.15       0.2.15       Normal  ---
getrandom->libc                          0.2.161      0.2.162      0.2.162      Normal  cfg(unix)
iana-time-zone-haiku->cc                 1.1.30       1.2.0        1.2.0        Build   ---
indexmap->hashbrown                      0.15.0       0.15.1       0.15.1       Normal  ---
indexmap->serde                          1.0.210      1.0.215      1.0.215      Normal  ---
jobserver->libc                          0.2.161      0.2.162      0.2.162      Normal  cfg(unix)
near-account-id->borsh                   1.5.1        1.5.2        1.5.2        Normal  ---
near-account-id->serde                   1.0.210      1.0.215      1.0.215      Normal  ---
near-gas->borsh                          1.5.1        1.5.2        1.5.2        Normal  ---
near-gas->serde                          1.0.210      1.0.215      1.0.215      Normal  ---
near-sdk->borsh                          1.5.1        1.5.2        1.5.2        Normal  ---
near-sdk->serde                          1.0.210      1.0.215      1.0.215      Normal  ---
near-sdk->serde_json                     1.0.129      1.0.132      1.0.132      Normal  ---
near-sdk-macros->proc-macro2             1.0.88       1.0.89       1.0.89       Normal  ---
near-sdk-macros->serde                   1.0.210      1.0.215      1.0.215      Normal  ---
near-sdk-macros->serde_json              1.0.129      1.0.132      1.0.132      Normal  ---
near-sdk-macros->syn                     2.0.79       2.0.87       2.0.87       Normal  ---
near-token->borsh                        1.5.1        1.5.2        1.5.2        Normal  ---
near-token->serde                        1.0.210      1.0.215      1.0.215      Normal  ---
num-traits->libm                         0.2.8        0.2.11       0.2.11       Normal  ---
num_cpus->libc                           0.2.161      0.2.162      0.2.162      Normal  cfg(not(windows))
proc-macro-error->proc-macro-error-attr  1.0.4        Removed      Removed      Normal  ---
proc-macro-error->proc-macro2            1.0.88       Removed      Removed      Normal  ---
proc-macro-error->quote                  1.0.37       Removed      Removed      Normal  ---
proc-macro-error->syn                    1.0.109      Removed      Removed      Normal  ---
proc-macro-error->version_check          0.9.5        Removed      Removed      Build   ---
proc-macro-error-attr->proc-macro2       1.0.88       Removed      Removed      Normal  ---
proc-macro-error-attr->quote             1.0.37       Removed      Removed      Normal  ---
proc-macro-error-attr->version_check     0.9.5        Removed      Removed      Build   ---
proc-macro2->unicode-ident               1.0.13       Removed      Removed      Normal  ---
quote->proc-macro2                       1.0.88       1.0.89       1.0.89       Normal  ---
quote->proc-macro2                       1.0.88       Removed      Removed      Normal  ---
regex->regex-automata                    0.4.8        0.4.9        0.4.9        Normal  ---
serde->serde_derive                      1.0.210      1.0.215      1.0.215      Normal  ---
serde_derive->proc-macro2                1.0.88       1.0.89       1.0.89       Normal  ---
serde_derive->syn                        2.0.79       2.0.87       2.0.87       Normal  ---
serde_json->serde                        1.0.210      1.0.215      1.0.215      Normal  ---
serde_spanned->serde                     1.0.210      1.0.215      1.0.215      Normal  ---
sha2->cpufeatures                        0.2.14       0.2.15       0.2.15       Normal  cfg(any(target_arch = "aarch64", target_arch = "x86_64", target_arch = "x86"))
strum_macros->proc-macro2                1.0.88       1.0.89       1.0.89       Normal  ---
strum_macros->syn                        2.0.79       2.0.87       2.0.87       Normal  ---
syn->proc-macro2                         1.0.88       1.0.89       1.0.89       Normal  ---
syn->proc-macro2                         1.0.88       Removed      Removed      Normal  ---
syn->quote                               1.0.37       Removed      Removed      Normal  ---
syn->unicode-ident                       1.0.13       Removed      Removed      Normal  ---
syn_derive->proc-macro-error             1.0.4        Removed      Removed      Normal  ---
syn_derive->proc-macro2                  1.0.88       Removed      Removed      Normal  ---
syn_derive->quote                        1.0.37       Removed      Removed      Normal  ---
syn_derive->syn                          2.0.79       Removed      Removed      Normal  ---
toml_datetime->serde                     1.0.210      1.0.215      1.0.215      Normal  ---
toml_edit->serde                         1.0.210      1.0.215      1.0.215      Normal  ---
wasm-bindgen-backend->proc-macro2        1.0.88       1.0.89       1.0.89       Normal  ---
wasm-bindgen-backend->syn                2.0.79       2.0.87       2.0.87       Normal  ---
wasm-bindgen-macro-support->proc-macro2  1.0.88       1.0.89       1.0.89       Normal  ---
wasm-bindgen-macro-support->syn          2.0.79       2.0.87       2.0.87       Normal  ---
wee_alloc->libc                          0.2.161      0.2.162      0.2.162      Normal  cfg(all(unix, not(target_arch = "wasm32")))

CheckToml / toml: C:\home\git\polyglot\apps\chat\contract\tests\Cargo.toml
Name                                              Project                        Compat         Latest         Kind         Platform
----                                              -------                        ------         ------         ----         --------
Inflector->regex                                  1.11.0                         1.11.1         1.11.1         Normal       ---
actix->bytes                                      1.7.2                          1.8.0          1.8.0          Normal       ---
actix->pin-project-lite                           0.2.14                         0.2.15         0.2.15         Normal       ---
actix->tokio                                      1.40.0                         1.41.1         1.41.1         Normal       ---
actix-macros->syn                                 2.0.79                         2.0.87         2.0.87         Normal       ---
actix-rt->tokio                                   1.40.0                         1.41.1         1.41.1         Normal       ---
actix_derive->proc-macro2                         1.0.88                         1.0.89         1.0.89         Normal       ---
actix_derive->syn                                 2.0.79                         2.0.87         2.0.87         Normal       ---
aes->cpufeatures                                  0.2.14                         0.2.15         0.2.15         Normal       cfg(any(target_arch = "aarch64", target_arch = "x86_64", target_arch = "x86"))
ahash->getrandom                                  0.2.15                         Removed        Removed        Normal       cfg(any(target_os = "linux", target_os = "android", target_os = "windows", target_os = "macos", target_os = "ios", target_os = "freebsd", target_os = "openbsd", target_os = "netbsd", target_os = "dragonfly", target_os = "solaris", target_os = "illumos", target_os = "fuchsia", target_os = "redox", target_os = "cloudabi", target_os = "haiku", target_os = "vxworks", target_os = "emscripten", target_os = "wasi"))
ahash->once_cell                                  1.20.2                         Removed        Removed        Normal       cfg(not(all(target_arch = "arm", target_os = "none")))
ahash->version_check                              0.9.5                          Removed        Removed        Build        ---
android_system_properties->libc                   0.2.161                        0.2.162        0.2.162        Normal       ---
android_system_properties->libc                   0.2.161                        0.2.162        Removed        Normal       ---
anstream->anstyle                                 1.0.8                          1.0.10         1.0.10         Normal       ---
anstream->anstyle-parse                           0.2.5                          0.2.6          0.2.6          Normal       ---
anstream->anstyle-query                           1.1.1                          1.1.2          1.1.2          Normal       ---
anstream->anstyle-wincon                          3.0.4                          3.0.6          3.0.6          Normal       cfg(windows)
anstream->colorchoice                             1.0.2                          1.0.3          1.0.3          Normal       ---
anstyle-query->windows-sys                        0.52.0                         0.59.0         0.59.0         Normal       cfg(windows)
anstyle-wincon->anstyle                           1.0.8                          1.0.10         1.0.10         Normal       ---
anstyle-wincon->windows-sys                       0.52.0                         0.59.0         0.59.0         Normal       cfg(windows)
anyhow                                            1.0.90                         1.0.93         1.0.93         Normal       ---
arbitrary->derive_arbitrary                       1.3.2                          1.4.1          1.4.1          Normal       ---
async-channel->pin-project-lite                   0.2.14                         0.2.15         0.2.15         Normal       ---
async-executor->fastrand                          2.1.1                          2.2.0          2.2.0          Normal       ---
async-executor->futures-lite                      2.3.0                          2.5.0          2.5.0          Normal       ---
async-io->futures-lite                            2.3.0                          2.5.0          2.5.0          Normal       ---
async-io->polling                                 3.7.3                          3.7.4          3.7.4          Normal       ---
async-io->rustix                                  0.38.37                        0.38.40        0.38.40        Normal       ---
async-lock->pin-project-lite                      0.2.14                         0.2.15         0.2.15         Normal       ---
async-process->rustix                             0.38.37                        0.38.40        0.38.40        Normal       cfg(unix)
async-recursion->proc-macro2                      1.0.88                         1.0.89         1.0.89         Normal       ---
async-recursion->syn                              2.0.79                         2.0.87         2.0.87         Normal       ---
async-signal->async-io                            2.3.4                          2.4.0          2.4.0          Development  ---
async-signal->rustix                              0.38.37                        0.38.40        0.38.40        Normal       cfg(unix)
async-stream->pin-project-lite                    0.2.14                         0.2.15         0.2.15         Normal       ---
async-stream-impl->proc-macro2                    1.0.88                         1.0.89         1.0.89         Normal       ---
async-stream-impl->syn                            2.0.79                         2.0.87         2.0.87         Normal       ---
async-trait->proc-macro2                          1.0.88                         1.0.89         1.0.89         Normal       ---
async-trait->syn                                  2.0.79                         2.0.87         2.0.87         Normal       ---
atty->libc                                        0.2.161                        0.2.162        0.2.162        Normal       cfg(unix)
axum->bytes                                       1.7.2                          1.8.0          1.8.0          Normal       ---
axum->pin-project-lite                            0.2.14                         0.2.15         0.2.15         Normal       ---
axum->serde                                       1.0.210                        1.0.215        1.0.215        Normal       ---
axum-core->bytes                                  1.7.2                          1.8.0          1.8.0          Normal       ---
backtrace->cc                                     1.1.30                         1.2.0          1.2.0          Build        ---
backtrace->libc                                   0.2.161                        0.2.162        0.2.162        Normal       cfg(not(all(windows, target_env = "msvc", not(target_vendor = "uwp"))))
binary-install->anyhow                            1.0.90                         1.0.93         1.0.93         Normal       ---
binary-install->tar                               0.4.42                         0.4.43         0.4.43         Normal       ---
bip39->serde                                      1.0.210                        1.0.215        1.0.215        Normal       ---
blocking->futures-lite                            2.3.0                          2.5.0          2.5.0          Normal       ---
borsh->borsh-derive                               1.5.1                          1.5.2          1.5.2          Normal       ---
borsh-derive->proc-macro2                         1.0.88                         1.0.89         1.0.89         Normal       ---
borsh-derive->syn                                 2.0.79                         2.0.87         2.0.87         Normal       ---
borsh-derive->syn_derive                          0.1.8                          Removed        Removed        Normal       ---
bytecheck_derive->proc-macro2                     1.0.88                         1.0.89         1.0.89         Normal       ---
bytesize->serde                                   1.0.210                        1.0.215        1.0.215        Normal       ---
bzip2->libc                                       0.2.161                        0.2.162        0.2.162        Normal       ---
bzip2-sys->cc                                     1.1.30                         1.2.0          1.2.0          Build        ---
bzip2-sys->libc                                   0.2.161                        0.2.162        0.2.162        Normal       ---
camino->serde                                     1.0.210                        1.0.215        1.0.215        Normal       ---
cargo-near->serde_json                            1.0.129                        1.0.132        1.0.132        Normal       ---
cargo-platform->serde                             1.0.210                        1.0.215        1.0.215        Normal       ---
cargo-util->anyhow                                1.0.90                         1.0.93         1.0.93         Normal       ---
cargo-util->libc                                  0.2.161                        0.2.162        0.2.162        Normal       ---
cargo-util->tempfile                              3.13.0                         3.14.0         3.14.0         Normal       ---
cargo_metadata->serde                             1.0.210                        1.0.215        1.0.215        Normal       ---
cargo_metadata->serde_json                        1.0.129                        1.0.132        1.0.132        Normal       ---
cargo_metadata->thiserror                         1.0.64                         1.0.69         1.0.69         Normal       ---
cc->jobserver                                     0.1.32                         ---            Removed        Normal       ---
cc->libc                                          0.2.161                        0.2.162        0.2.162        Normal       cfg(unix)
cc->libc                                          0.2.161                        0.2.162        Removed        Normal       cfg(unix)
cc->shlex                                         1.3.0                          ---            Removed        Normal       ---
chrono->android-tzdata                            0.1.1                          ---            Removed        Normal       cfg(target_os = "android")
chrono->iana-time-zone                            0.1.61                         ---            Removed        Normal       cfg(unix)
chrono->js-sys                                    0.3.72                         ---            Removed        Normal       cfg(all(target_arch = "wasm32", not(any(target_os = "emscripten", target_os = "wasi"))))
chrono->num-traits                                0.2.19                         ---            Removed        Normal       ---
chrono->serde                                     1.0.210                        1.0.215        1.0.215        Normal       ---
chrono->serde                                     1.0.210                        1.0.215        Removed        Normal       ---
chrono->wasm-bindgen                              0.2.95                         ---            Removed        Normal       cfg(all(target_arch = "wasm32", not(any(target_os = "emscripten", target_os = "wasi"))))
chrono->windows-targets                           0.52.6                         ---            Removed        Normal       cfg(windows)
clap_builder->anstream                            0.6.15                         0.6.18         0.6.18         Normal       ---
clap_builder->anstyle                             1.0.8                          1.0.10         1.0.10         Normal       ---
clap_derive->proc-macro2                          1.0.88                         1.0.89         1.0.89         Normal       ---
clap_derive->syn                                  2.0.79                         2.0.87         2.0.87         Normal       ---
commoncrypto-sys->libc                            0.2.161                        0.2.162        0.2.162        Normal       ---
console->libc                                     0.2.161                        0.2.162        0.2.162        Normal       ---
core-foundation->libc                             0.2.161                        0.2.162        0.2.162        Normal       ---
cpufeatures->libc                                 0.2.161                        0.2.162        0.2.162        Normal       aarch64-linux-android
crossterm->libc                                   0.2.161                        0.2.162        0.2.162        Normal       cfg(unix)
csv->serde                                        1.0.210                        1.0.215        1.0.215        Normal       ---
curve25519-dalek->cpufeatures                     0.2.14                         0.2.15         0.2.15         Normal       cfg(target_arch = "x86_64")
curve25519-dalek-derive->proc-macro2              1.0.88                         1.0.89         1.0.89         Normal       ---
curve25519-dalek-derive->syn                      2.0.79                         2.0.87         2.0.87         Normal       ---
darling_core->proc-macro2                         1.0.88                         1.0.89         1.0.89         Normal       ---
darling_core->syn                                 2.0.79                         2.0.87         2.0.87         Normal       ---
darling_macro->syn                                2.0.79                         2.0.87         2.0.87         Normal       ---
deranged->serde                                   1.0.210                        1.0.215        1.0.215        Normal       ---
derivative->proc-macro2                           1.0.88                         1.0.89         1.0.89         Normal       ---
derive_arbitrary->proc-macro2                     1.0.88                         1.0.89         1.0.89         Normal       ---
derive_arbitrary->syn                             2.0.79                         2.0.87         2.0.87         Normal       ---
derive_more->proc-macro2                          1.0.88                         1.0.89         1.0.89         Normal       ---
derive_more->syn                                  2.0.79                         2.0.87         2.0.87         Normal       ---
dirs-sys->libc                                    0.2.161                        0.2.162        0.2.162        Normal       cfg(unix)
dirs-sys-next->libc                               0.2.161                        0.2.162        0.2.162        Normal       cfg(unix)
elementtree->xml-rs                               0.8.22                         0.8.23         0.8.23         Normal       ---
enum-map-derive->proc-macro2                      1.0.88                         1.0.89         1.0.89         Normal       ---
enum-map-derive->syn                              2.0.79                         2.0.87         2.0.87         Normal       ---
enumflags2->serde                                 1.0.210                        1.0.215        1.0.215        Normal       ---
enumflags2_derive->proc-macro2                    1.0.88                         1.0.89         1.0.89         Normal       ---
enumflags2_derive->syn                            2.0.79                         2.0.87         2.0.87         Normal       ---
env_filter->regex                                 1.11.0                         1.11.1         1.11.1         Normal       ---
env_logger->anstream                              0.6.15                         0.6.18         0.6.18         Normal       ---
env_logger->anstyle                               1.0.8                          1.0.10         1.0.10         Normal       ---
errno->libc                                       0.2.161                        0.2.162        0.2.162        Normal       cfg(target_os = "hermit")
event-listener->pin-project-lite                  0.2.14                         0.2.15         0.2.15         Normal       ---
event-listener-strategy->pin-project-lite         0.2.14                         0.2.15         0.2.15         Normal       ---
filetime->libc                                    0.2.161                        0.2.162        0.2.162        Normal       cfg(unix)
fs2->libc                                         0.2.161                        0.2.162        0.2.162        Normal       cfg(unix)
futures-lite->fastrand                            2.1.1                          2.2.0          2.2.0          Normal       ---
futures-lite->pin-project-lite                    0.2.14                         0.2.15         0.2.15         Normal       ---
futures-macro->proc-macro2                        1.0.88                         1.0.89         1.0.89         Normal       ---
futures-macro->syn                                2.0.79                         2.0.87         2.0.87         Normal       ---
futures-util->pin-project-lite                    0.2.14                         0.2.15         0.2.15         Normal       ---
getrandom->cfg-if                                 1.0.0                          Removed        Removed        Normal       ---
getrandom->js-sys                                 0.3.72                         Removed        Removed        Normal       cfg(all(any(target_arch = "wasm32", target_arch = "wasm64"), target_os = "unknown"))
getrandom->libc                                   0.2.161                        0.2.162        0.2.162        Normal       cfg(unix)
getrandom->libc                                   0.2.161                        Removed        Removed        Normal       cfg(unix)
getrandom->wasi                                   0.11.0+wasi-snapshot-preview1  Removed        Removed        Normal       cfg(target_os = "wasi")
getrandom->wasm-bindgen                           0.2.95                         Removed        Removed        Normal       cfg(all(any(target_arch = "wasm32", target_arch = "wasm64"), target_os = "unknown"))
h2->bytes                                         1.7.2                          1.8.0          1.8.0          Normal       ---
h2->tokio                                         1.40.0                         1.41.1         1.41.1         Normal       ---
hashbrown->ahash                                  0.7.8                          Removed        Removed        Normal       ---
hashbrown->serde                                  1.0.210                        1.0.215        1.0.215        Normal       ---
hermit-abi->libc                                  0.2.161                        0.2.162        0.2.162        Normal       ---
hex->serde                                        1.0.210                        1.0.215        1.0.215        Normal       ---
http->bytes                                       1.7.2                          1.8.0          1.8.0          Normal       ---
http-body->bytes                                  1.7.2                          1.8.0          1.8.0          Normal       ---
http-body->pin-project-lite                       0.2.14                         0.2.15         0.2.15         Normal       ---
http-body-util->bytes                             1.7.2                          1.8.0          1.8.0          Normal       ---
http-body-util->pin-project-lite                  0.2.14                         0.2.15         0.2.15         Normal       ---
hyper->bytes                                      1.7.2                          1.8.0          1.8.0          Normal       ---
hyper->pin-project-lite                           0.2.14                         0.2.15         0.2.15         Normal       ---
hyper->tokio                                      1.40.0                         1.41.1         1.41.1         Normal       ---
hyper-rustls->hyper-util                          0.1.9                          0.1.10         0.1.10         Normal       ---
hyper-rustls->rustls                              0.23.15                        0.23.16        0.23.16        Normal       ---
hyper-rustls->tokio                               1.40.0                         1.41.1         1.41.1         Normal       ---
hyper-timeout->pin-project-lite                   0.2.14                         0.2.15         0.2.15         Normal       ---
hyper-timeout->tokio                              1.40.0                         1.41.1         1.41.1         Normal       ---
hyper-tls->bytes                                  1.7.2                          1.8.0          1.8.0          Normal       ---
hyper-tls->hyper-util                             0.1.9                          0.1.10         0.1.10         Normal       ---
hyper-tls->tokio                                  1.40.0                         1.41.1         1.41.1         Normal       ---
hyper-util->bytes                                 1.7.2                          1.8.0          1.8.0          Normal       ---
hyper-util->pin-project-lite                      0.2.14                         0.2.15         0.2.15         Normal       ---
hyper-util->tokio                                 1.40.0                         1.41.1         1.41.1         Normal       ---
iana-time-zone->android_system_properties         0.1.5                          ---            Removed        Normal       cfg(target_os = "android")
iana-time-zone->core-foundation-sys               0.8.7                          ---            Removed        Normal       cfg(any(target_os = "macos", target_os = "ios"))
iana-time-zone->iana-time-zone-haiku              0.1.2                          ---            Removed        Normal       cfg(target_os = "haiku")
iana-time-zone->js-sys                            0.3.72                         ---            Removed        Normal       cfg(all(target_arch = "wasm32", target_os = "unknown"))
iana-time-zone->wasm-bindgen                      0.2.95                         ---            Removed        Normal       cfg(all(target_arch = "wasm32", target_os = "unknown"))
iana-time-zone->windows-core                      0.52.0                         ---            Removed        Normal       cfg(target_os = "windows")
iana-time-zone-haiku->cc                          1.1.30                         1.2.0          1.2.0          Build        ---
iana-time-zone-haiku->cc                          1.1.30                         1.2.0          Removed        Build        ---
idna->unicode-bidi                                0.3.17                         Removed        Removed        Normal       ---
idna->unicode-normalization                       0.1.22                         Removed        Removed        Normal       ---
indexmap->autocfg                                 1.4.0                          Removed        Removed        Build        ---
indexmap->hashbrown                               0.12.3                         0.15.1         0.15.1         Normal       ---
indexmap->hashbrown                               0.15.0                         0.15.1         0.15.1         Normal       ---
indexmap->serde                                   1.0.210                        1.0.215        1.0.215        Normal       ---
interactive-clap-derive->proc-macro2              1.0.88                         1.0.89         1.0.89         Normal       ---
io-lifetimes->libc                                0.2.161                        0.2.162        0.2.162        Normal       cfg(not(windows))
is-terminal->libc                                 0.2.161                        0.2.162        0.2.162        Normal       cfg(any(unix, target_os = "wasi"))
jobserver->libc                                   0.2.161                        0.2.162        0.2.162        Normal       cfg(unix)
jobserver->libc                                   0.2.161                        0.2.162        Removed        Normal       cfg(unix)
js-sys->wasm-bindgen                              0.2.95                         ---            Removed        Normal       ---
js-sys->wasm-bindgen                              0.2.95                         Removed        Removed        Normal       ---
json-patch->serde                                 1.0.210                        1.0.215        1.0.215        Normal       ---
json-patch->serde_json                            1.0.129                        1.0.132        1.0.132        Normal       ---
json-patch->thiserror                             1.0.64                         1.0.69         1.0.69         Normal       ---
jsonptr->serde                                    1.0.210                        1.0.215        1.0.215        Normal       ---
jsonptr->serde_json                               1.0.129                        1.0.132        1.0.132        Normal       ---
keccak->cpufeatures                               0.2.14                         0.2.15         0.2.15         Normal       cfg(target_arch = "aarch64")
libredox->libc                                    0.2.161                        0.2.162        0.2.162        Normal       ---
linked-hash-map->serde                            1.0.210                        1.0.215        1.0.215        Normal       ---
linux-keyutils->libc                              0.2.161                        0.2.162        0.2.162        Normal       ---
memmap2->libc                                     0.2.161                        0.2.162        0.2.162        Normal       cfg(unix)
mio->libc                                         0.2.161                        0.2.162        0.2.162        Normal       cfg(target_os = "wasi")
native-tls->libc                                  0.2.161                        0.2.162        0.2.162        Normal       cfg(target_vendor = "apple")
native-tls->security-framework-sys                2.12.0                         2.12.1         2.12.1         Normal       cfg(target_vendor = "apple")
native-tls->tempfile                              3.13.0                         3.14.0         3.14.0         Development  ---
near-abi->borsh                                   1.5.1                          1.5.2          1.5.2          Normal       ---
near-abi->serde                                   1.0.210                        1.0.215        1.0.215        Normal       ---
near-abi-client->anyhow                           1.0.90                         1.0.93         1.0.93         Normal       ---
near-abi-client-impl->anyhow                      1.0.90                         1.0.93         1.0.93         Normal       ---
near-abi-client-impl->proc-macro2                 1.0.88                         1.0.89         1.0.89         Normal       ---
near-abi-client-impl->serde_json                  1.0.129                        1.0.132        1.0.132        Normal       ---
near-account-id->borsh                            1.5.1                          1.5.2          1.5.2          Normal       ---
near-account-id->serde                            1.0.210                        1.0.215        1.0.215        Normal       ---
near-async->serde                                 1.0.210                        1.0.215        1.0.215        Normal       ---
near-async->serde_json                            1.0.129                        1.0.132        1.0.132        Normal       ---
near-async->tokio                                 1.40.0                         1.41.1         1.41.1         Normal       ---
near-async-derive->proc-macro2                    1.0.88                         1.0.89         1.0.89         Normal       ---
near-async-derive->syn                            2.0.79                         2.0.87         2.0.87         Normal       ---
near-chain-configs->anyhow                        1.0.90                         1.0.93         1.0.93         Normal       ---
near-chain-configs->serde                         1.0.210                        1.0.215        1.0.215        Normal       ---
near-chain-configs->serde_json                    1.0.129                        1.0.132        1.0.132        Normal       ---
near-cli-rs->reqwest                              0.12.8                         0.12.9         0.12.9         Normal       ---
near-cli-rs->serde                                1.0.210                        1.0.215        1.0.215        Normal       ---
near-cli-rs->serde_json                           1.0.129                        1.0.132        1.0.132        Normal       ---
near-cli-rs->thiserror                            1.0.64                         1.0.69         1.0.69         Normal       ---
near-cli-rs->tokio                                1.40.0                         1.41.1         1.41.1         Normal       ---
near-cli-rs->url                                  2.5.2                          2.5.3          2.5.3          Normal       ---
near-config-utils->anyhow                         1.0.90                         1.0.93         1.0.93         Normal       ---
near-config-utils->thiserror                      1.0.64                         1.0.69         1.0.69         Normal       ---
near-crypto->borsh                                1.5.1                          1.5.2          1.5.2          Normal       ---
near-crypto->serde                                1.0.210                        1.0.215        1.0.215        Normal       ---
near-crypto->serde_json                           1.0.129                        1.0.132        1.0.132        Normal       ---
near-crypto->thiserror                            1.0.64                         1.0.69         1.0.69         Normal       ---
near-gas->borsh                                   1.5.1                          1.5.2          1.5.2          Normal       ---
near-gas->serde                                   1.0.210                        1.0.215        1.0.215        Normal       ---
near-jsonrpc-client->borsh                        1.5.1                          1.5.2          1.5.2          Normal       ---
near-jsonrpc-client->reqwest                      0.12.8                         0.12.9         0.12.9         Normal       ---
near-jsonrpc-client->serde                        1.0.210                        1.0.215        1.0.215        Normal       ---
near-jsonrpc-client->serde_json                   1.0.129                        1.0.132        1.0.132        Normal       ---
near-jsonrpc-client->thiserror                    1.0.64                         1.0.69         1.0.69         Normal       ---
near-jsonrpc-primitives->arbitrary                1.3.2                          1.4.1          1.4.1          Normal       ---
near-jsonrpc-primitives->serde                    1.0.210                        1.0.215        1.0.215        Normal       ---
near-jsonrpc-primitives->serde_json               1.0.129                        1.0.132        1.0.132        Normal       ---
near-jsonrpc-primitives->thiserror                1.0.64                         1.0.69         1.0.69         Normal       ---
near-o11y->serde                                  1.0.210                        1.0.215        1.0.215        Normal       ---
near-o11y->serde_json                             1.0.129                        1.0.132        1.0.132        Normal       ---
near-o11y->thiserror                              1.0.64                         1.0.69         1.0.69         Normal       ---
near-o11y->tokio                                  1.40.0                         1.41.1         1.41.1         Normal       ---
near-parameters->borsh                            1.5.1                          1.5.2          1.5.2          Normal       ---
near-parameters->serde                            1.0.210                        1.0.215        1.0.215        Normal       ---
near-parameters->thiserror                        1.0.64                         1.0.69         1.0.69         Normal       ---
near-performance-metrics->bytes                   1.7.2                          1.8.0          1.8.0          Normal       ---
near-performance-metrics->libc                    0.2.161                        0.2.162        0.2.162        Normal       ---
near-performance-metrics->tokio                   1.40.0                         1.41.1         1.41.1         Normal       ---
near-primitives->arbitrary                        1.3.2                          1.4.1          1.4.1          Normal       ---
near-primitives->borsh                            1.5.1                          1.5.2          1.5.2          Normal       ---
near-primitives->bytes                            1.7.2                          1.8.0          1.8.0          Normal       ---
near-primitives->serde                            1.0.210                        1.0.215        1.0.215        Normal       ---
near-primitives->serde_json                       1.0.129                        1.0.132        1.0.132        Normal       ---
near-primitives->thiserror                        1.0.64                         1.0.69         1.0.69         Normal       ---
near-primitives-core->arbitrary                   1.3.2                          1.4.1          1.4.1          Normal       ---
near-primitives-core->borsh                       1.5.1                          1.5.2          1.5.2          Normal       ---
near-primitives-core->serde                       1.0.210                        1.0.215        1.0.215        Normal       ---
near-primitives-core->thiserror                   1.0.64                         1.0.69         1.0.69         Normal       ---
near-rpc-error-core->serde                        1.0.210                        1.0.215        1.0.215        Normal       ---
near-rpc-error-core->syn                          2.0.79                         2.0.87         2.0.87         Normal       ---
near-rpc-error-macro->serde                       1.0.210                        1.0.215        1.0.215        Normal       ---
near-rpc-error-macro->syn                         2.0.79                         2.0.87         2.0.87         Normal       ---
near-sandbox-utils->anyhow                        1.0.90                         1.0.93         1.0.93         Normal       ---
near-sandbox-utils->chrono                        0.4.38                         ---            Removed        Normal       ---
near-sandbox-utils->tokio                         1.40.0                         1.41.1         1.41.1         Normal       ---
near-sdk->borsh                                   1.5.1                          1.5.2          1.5.2          Normal       ---
near-sdk->serde                                   1.0.210                        1.0.215        1.0.215        Normal       ---
near-sdk->serde_json                              1.0.129                        1.0.132        1.0.132        Normal       ---
near-sdk-macros->proc-macro2                      1.0.88                         1.0.89         1.0.89         Normal       ---
near-sdk-macros->serde                            1.0.210                        1.0.215        1.0.215        Normal       ---
near-sdk-macros->serde_json                       1.0.129                        1.0.132        1.0.132        Normal       ---
near-sdk-macros->syn                              2.0.79                         2.0.87         2.0.87         Normal       ---
near-socialdb-client->serde                       1.0.210                        1.0.215        1.0.215        Normal       ---
near-socialdb-client->serde_json                  1.0.129                        1.0.132        1.0.132        Normal       ---
near-socialdb-client->url                         2.5.2                          2.5.3          2.5.3          Normal       ---
near-time->serde                                  1.0.210                        1.0.215        1.0.215        Normal       ---
near-time->tokio                                  1.40.0                         1.41.1         1.41.1         Normal       ---
near-token->borsh                                 1.5.1                          1.5.2          1.5.2          Normal       ---
near-token->serde                                 1.0.210                        1.0.215        1.0.215        Normal       ---
near-workspaces->libc                             0.2.161                        0.2.162        0.2.162        Normal       cfg(unix)
near-workspaces->near-sandbox-utils               0.8.0                          ---            0.9.0          Build        ---
near-workspaces->near-sandbox-utils               0.9.0                          0.8.0          ---            Normal       ---
near-workspaces->reqwest                          0.12.8                         0.12.9         0.12.9         Normal       ---
near-workspaces->serde                            1.0.210                        1.0.215        1.0.215        Normal       ---
near-workspaces->serde_json                       1.0.129                        1.0.132        1.0.132        Normal       ---
near-workspaces->tempfile                         3.13.0                         3.14.0         3.14.0         Normal       ---
near-workspaces->thiserror                        1.0.64                         1.0.69         1.0.69         Normal       ---
near-workspaces->tokio                            1.40.0                         1.41.1         1.41.1         Normal       ---
near-workspaces->url                              2.5.2                          2.5.3          2.5.3          Normal       ---
near_schemafy_core->serde                         1.0.210                        1.0.215        1.0.215        Normal       ---
near_schemafy_core->serde_json                    1.0.129                        1.0.132        1.0.132        Normal       ---
near_schemafy_lib->proc-macro2                    1.0.88                         1.0.89         1.0.89         Normal       ---
near_schemafy_lib->serde                          1.0.210                        1.0.215        1.0.215        Normal       ---
near_schemafy_lib->serde_derive                   1.0.210                        1.0.215        1.0.215        Normal       ---
near_schemafy_lib->serde_json                     1.0.129                        1.0.132        1.0.132        Normal       ---
nix->libc                                         0.2.161                        0.2.162        0.2.162        Normal       ---
num-rational->serde                               1.0.210                        1.0.215        1.0.215        Normal       ---
num-traits->autocfg                               1.4.0                          ---            Removed        Build        ---
num-traits->libm                                  0.2.8                          0.2.11         0.2.11         Normal       ---
num-traits->libm                                  0.2.8                          0.2.11         Removed        Normal       ---
num_cpus->libc                                    0.2.161                        0.2.162        0.2.162        Normal       cfg(not(windows))
open->libc                                        0.2.161                        0.2.162        0.2.162        Normal       cfg(unix)
openssl->libc                                     0.2.161                        0.2.162        0.2.162        Normal       ---
openssl-macros->proc-macro2                       1.0.88                         1.0.89         1.0.89         Normal       ---
openssl-macros->syn                               2.0.79                         2.0.87         2.0.87         Normal       ---
openssl-src->cc                                   1.1.30                         1.2.0          1.2.0          Normal       ---
openssl-sys->cc                                   1.1.30                         1.2.0          1.2.0          Build        ---
openssl-sys->libc                                 0.2.161                        0.2.162        0.2.162        Normal       ---
openssl-sys->openssl-src                          300.3.2+3.3.2                  300.4.0+3.4.0  300.4.0+3.4.0  Build        ---
opentelemetry->pin-project-lite                   0.2.14                         0.2.15         0.2.15         Normal       ---
opentelemetry->thiserror                          1.0.64                         1.0.69         1.0.69         Normal       ---
opentelemetry-otlp->thiserror                     1.0.64                         1.0.69         1.0.69         Normal       ---
opentelemetry-otlp->tokio                         1.40.0                         1.41.1         1.41.1         Normal       ---
opentelemetry_sdk->ordered-float                  4.4.0                          4.5.0          4.5.0          Normal       ---
opentelemetry_sdk->thiserror                      1.0.64                         1.0.69         1.0.69         Normal       ---
opentelemetry_sdk->tokio                          1.40.0                         1.41.1         1.41.1         Normal       ---
ordered-stream->pin-project-lite                  0.2.14                         0.2.15         0.2.15         Normal       ---
parking_lot_core->libc                            0.2.161                        0.2.162        0.2.162        Normal       cfg(unix)
pin-project->pin-project-internal                 1.1.6                          1.1.7          1.1.7          Normal       ---
pin-project-internal->proc-macro2                 1.0.88                         1.0.89         1.0.89         Normal       ---
pin-project-internal->syn                         2.0.79                         2.0.87         2.0.87         Normal       ---
piper->fastrand                                   2.1.1                          2.2.0          2.2.0          Normal       ---
polling->libc                                     0.2.161                        0.2.162        0.2.162        Normal       cfg(any(unix, target_os = "fuchsia", target_os = "vxworks"))
polling->pin-project-lite                         0.2.14                         0.2.15         0.2.15         Normal       cfg(windows)
polling->rustix                                   0.38.37                        0.38.40        0.38.40        Normal       cfg(any(unix, target_os = "fuchsia", target_os = "vxworks"))
prettyplease->proc-macro2                         1.0.88                         1.0.89         1.0.89         Normal       ---
prettytable->csv                                  1.3.0                          1.3.1          1.3.1          Normal       ---
proc-macro-error->proc-macro-error-attr           1.0.4                          Removed        Removed        Normal       ---
proc-macro-error->proc-macro2                     1.0.88                         1.0.89         1.0.89         Normal       ---
proc-macro-error->proc-macro2                     1.0.88                         Removed        Removed        Normal       ---
proc-macro-error->quote                           1.0.37                         Removed        Removed        Normal       ---
proc-macro-error->syn                             1.0.109                        Removed        Removed        Normal       ---
proc-macro-error->version_check                   0.9.5                          Removed        Removed        Build        ---
proc-macro-error-attr->proc-macro2                1.0.88                         1.0.89         1.0.89         Normal       ---
proc-macro-error-attr->proc-macro2                1.0.88                         Removed        Removed        Normal       ---
proc-macro-error-attr->quote                      1.0.37                         Removed        Removed        Normal       ---
proc-macro-error-attr->version_check              0.9.5                          Removed        Removed        Build        ---
proc-macro2->unicode-ident                        1.0.13                         ---            Removed        Normal       ---
proc-macro2->unicode-ident                        1.0.13                         Removed        Removed        Normal       ---
prometheus->thiserror                             1.0.64                         1.0.69         1.0.69         Normal       ---
prost->bytes                                      1.7.2                          1.8.0          1.8.0          Normal       ---
prost-derive->anyhow                              1.0.90                         1.0.93         1.0.93         Normal       ---
prost-derive->proc-macro2                         1.0.88                         1.0.89         1.0.89         Normal       ---
prost-derive->syn                                 2.0.79                         2.0.87         2.0.87         Normal       ---
ptr_meta_derive->proc-macro2                      1.0.88                         1.0.89         1.0.89         Normal       ---
quote->proc-macro2                                1.0.88                         1.0.89         1.0.89         Normal       ---
quote->proc-macro2                                1.0.88                         1.0.89         Removed        Normal       ---
quote->proc-macro2                                1.0.88                         Removed        Removed        Normal       ---
rand->libc                                        0.2.161                        0.2.162        0.2.162        Normal       cfg(unix)
redox_users->thiserror                            1.0.64                         1.0.69         1.0.69         Normal       ---
regex->regex-automata                             0.4.8                          0.4.9          0.4.9          Normal       ---
reqwest->bytes                                    1.7.2                          1.8.0          1.8.0          Normal       ---
reqwest->encoding_rs                              0.8.34                         0.8.35         0.8.35         Normal       cfg(not(target_arch = "wasm32"))
reqwest->hyper-util                               0.1.9                          0.1.10         0.1.10         Normal       cfg(not(target_arch = "wasm32"))
reqwest->pin-project-lite                         0.2.14                         0.2.15         0.2.15         Normal       cfg(not(target_arch = "wasm32"))
reqwest->serde                                    1.0.210                        1.0.215        1.0.215        Normal       ---
reqwest->serde_json                               1.0.129                        1.0.132        1.0.132        Normal       ---
reqwest->tokio                                    1.40.0                         1.41.1         1.41.1         Normal       cfg(not(target_arch = "wasm32"))
reqwest->url                                      2.5.2                          2.5.3          2.5.3          Normal       ---
ring->cc                                          1.1.30                         1.2.0          1.2.0          Build        ---
ring->libc                                        0.2.161                        0.2.162        0.2.162        Normal       cfg(all(any(target_os = "android", target_os = "linux"), any(target_arch = "aarch64", target_arch = "arm")))
rkyv->bytes                                       1.7.2                          1.8.0          1.8.0          Normal       ---
rkyv_derive->proc-macro2                          1.0.88                         1.0.89         1.0.89         Normal       ---
rust_decimal->borsh                               1.5.1                          1.5.2          1.5.2          Normal       ---
rust_decimal->bytes                               1.7.2                          1.8.0          1.8.0          Normal       ---
rust_decimal->serde                               1.0.210                        1.0.215        1.0.215        Normal       ---
rust_decimal->serde_json                          1.0.129                        1.0.132        1.0.132        Normal       ---
rustix->libc                                      0.2.161                        0.2.162        0.2.162        Development  ---
schemars->serde                                   1.0.210                        1.0.215        1.0.215        Normal       ---
schemars->serde_json                              1.0.129                        1.0.132        1.0.132        Normal       ---
schemars_derive->proc-macro2                      1.0.88                         1.0.89         1.0.89         Normal       ---
schemars_derive->syn                              2.0.79                         2.0.87         2.0.87         Normal       ---
scroll_derive->proc-macro2                        1.0.88                         1.0.89         1.0.89         Normal       ---
scroll_derive->syn                                2.0.79                         2.0.87         2.0.87         Normal       ---
secp256k1-sys->cc                                 1.1.30                         1.2.0          1.2.0          Build        ---
secret-service->serde                             1.0.210                        1.0.215        1.0.215        Normal       ---
security-framework->libc                          0.2.161                        0.2.162        0.2.162        Normal       ---
security-framework->security-framework-sys        2.12.0                         2.12.1         2.12.1         Normal       ---
security-framework-sys->libc                      0.2.161                        0.2.162        0.2.162        Normal       ---
semver->serde                                     1.0.210                        1.0.215        1.0.215        Normal       ---
serde->serde_derive                               1.0.210                        1.0.215        1.0.215        Normal       ---
serde->serde_derive                               1.0.210                        1.0.215        Removed        Normal       ---
serde_derive->proc-macro2                         1.0.88                         1.0.89         1.0.89         Normal       ---
serde_derive->proc-macro2                         1.0.88                         1.0.89         Removed        Normal       ---
serde_derive->quote                               1.0.37                         ---            Removed        Normal       ---
serde_derive->syn                                 2.0.79                         2.0.87         2.0.87         Normal       ---
serde_derive->syn                                 2.0.79                         2.0.87         Removed        Normal       ---
serde_derive_internals->proc-macro2               1.0.88                         1.0.89         1.0.89         Normal       ---
serde_derive_internals->syn                       2.0.79                         2.0.87         2.0.87         Normal       ---
serde_json                                        1.0.129                        1.0.132        1.0.132        Normal       ---
serde_json->serde                                 1.0.210                        1.0.215        1.0.215        Normal       ---
serde_repr->proc-macro2                           1.0.88                         1.0.89         1.0.89         Normal       ---
serde_repr->syn                                   2.0.79                         2.0.87         2.0.87         Normal       ---
serde_spanned->serde                              1.0.210                        1.0.215        1.0.215        Normal       ---
serde_urlencoded->serde                           1.0.210                        1.0.215        1.0.215        Normal       ---
serde_with->indexmap                              1.9.3                          2.6.0          2.6.0          Normal       ---
serde_with->serde                                 1.0.210                        1.0.215        1.0.215        Normal       ---
serde_with->serde_derive                          1.0.210                        1.0.215        1.0.215        Normal       ---
serde_with->serde_json                            1.0.129                        1.0.132        1.0.132        Normal       ---
serde_with_macros->proc-macro2                    1.0.88                         1.0.89         1.0.89         Normal       ---
serde_with_macros->syn                            2.0.79                         2.0.87         2.0.87         Normal       ---
serde_yaml->serde                                 1.0.210                        1.0.215        1.0.215        Normal       ---
sha1->cpufeatures                                 0.2.14                         0.2.15         0.2.15         Normal       cfg(any(target_arch = "aarch64", target_arch = "x86", target_arch = "x86_64"))
sha2->cpufeatures                                 0.2.14                         0.2.15         0.2.15         Normal       cfg(any(target_arch = "aarch64", target_arch = "x86_64", target_arch = "x86"))
signal-hook->libc                                 0.2.161                        0.2.162        0.2.162        Normal       ---
signal-hook-mio->libc                             0.2.161                        0.2.162        0.2.162        Normal       ---
signal-hook-registry->libc                        0.2.161                        0.2.162        0.2.162        Normal       ---
smart-default->proc-macro2                        1.0.88                         1.0.89         1.0.89         Normal       ---
smart-default->syn                                2.0.79                         2.0.87         2.0.87         Normal       ---
socket2->libc                                     0.2.161                        0.2.162        0.2.162        Normal       cfg(unix)
string_cache->serde                               1.0.210                        1.0.215        1.0.215        Normal       ---
strum_macros->proc-macro2                         1.0.88                         1.0.89         1.0.89         Normal       ---
strum_macros->syn                                 2.0.79                         2.0.87         2.0.87         Normal       ---
symbolic-debuginfo->regex                         1.11.0                         1.11.1         1.11.1         Normal       ---
symbolic-debuginfo->serde                         1.0.210                        1.0.215        1.0.215        Normal       ---
symbolic-debuginfo->serde_json                    1.0.129                        1.0.132        1.0.132        Normal       ---
symbolic-debuginfo->thiserror                     1.0.64                         1.0.69         1.0.69         Normal       ---
syn->proc-macro2                                  1.0.88                         1.0.89         1.0.89         Normal       ---
syn->proc-macro2                                  1.0.88                         1.0.89         Removed        Normal       ---
syn->proc-macro2                                  1.0.88                         Removed        Removed        Normal       ---
syn->quote                                        1.0.37                         ---            Removed        Normal       ---
syn->quote                                        1.0.37                         Removed        Removed        Normal       ---
syn->unicode-ident                                1.0.13                         ---            Removed        Normal       ---
syn->unicode-ident                                1.0.13                         Removed        Removed        Normal       ---
syn_derive->proc-macro-error                      1.0.4                          Removed        Removed        Normal       ---
syn_derive->proc-macro2                           1.0.88                         Removed        Removed        Normal       ---
syn_derive->quote                                 1.0.37                         Removed        Removed        Normal       ---
syn_derive->syn                                   2.0.79                         Removed        Removed        Normal       ---
system-configuration-sys->libc                    0.2.161                        0.2.162        0.2.162        Normal       ---
tar->libc                                         0.2.161                        0.2.162        0.2.162        Normal       cfg(unix)
tempfile->fastrand                                2.1.1                          2.2.0          2.2.0          Normal       ---
tempfile->rustix                                  0.38.37                        0.38.40        0.38.40        Normal       cfg(any(unix, target_os = "wasi"))
thiserror->thiserror-impl                         1.0.64                         1.0.69         1.0.69         Normal       ---
thiserror-impl->proc-macro2                       1.0.88                         1.0.89         1.0.89         Normal       ---
thiserror-impl->syn                               2.0.79                         2.0.87         2.0.87         Normal       ---
time->serde                                       1.0.210                        1.0.215        1.0.215        Normal       ---
tinyvec->tinyvec_macros                           0.1.1                          Removed        Removed        Normal       ---
tokio                                             1.40.0                         1.41.1         1.41.1         Normal       ---
tokio->bytes                                      1.7.2                          1.8.0          1.8.0          Normal       ---
tokio->libc                                       0.2.161                        0.2.162        0.2.162        Normal       cfg(unix)
tokio->pin-project-lite                           0.2.14                         0.2.15         0.2.15         Normal       ---
tokio-io-timeout->pin-project-lite                0.2.14                         0.2.15         0.2.15         Normal       ---
tokio-io-timeout->tokio                           1.40.0                         1.41.1         1.41.1         Normal       ---
tokio-macros->proc-macro2                         1.0.88                         1.0.89         1.0.89         Normal       ---
tokio-macros->syn                                 2.0.79                         2.0.87         2.0.87         Normal       ---
tokio-native-tls->tokio                           1.40.0                         1.41.1         1.41.1         Normal       ---
tokio-retry->pin-project                          1.1.6                          1.1.7          1.1.7          Normal       ---
tokio-retry->tokio                                1.40.0                         1.41.1         1.41.1         Normal       ---
tokio-rustls->rustls                              0.23.15                        0.23.16        0.23.16        Normal       ---
tokio-rustls->tokio                               1.40.0                         1.41.1         1.41.1         Normal       ---
tokio-stream->pin-project-lite                    0.2.14                         0.2.15         0.2.15         Normal       ---
tokio-stream->tokio                               1.40.0                         1.41.1         1.41.1         Normal       ---
tokio-util->bytes                                 1.7.2                          1.8.0          1.8.0          Normal       ---
tokio-util->pin-project-lite                      0.2.14                         0.2.15         0.2.15         Normal       ---
tokio-util->tokio                                 1.40.0                         1.41.1         1.41.1         Normal       ---
toml->serde                                       1.0.210                        1.0.215        1.0.215        Normal       ---
toml_datetime->serde                              1.0.210                        1.0.215        1.0.215        Normal       ---
toml_edit->serde                                  1.0.210                        1.0.215        1.0.215        Normal       ---
tonic->bytes                                      1.7.2                          1.8.0          1.8.0          Normal       ---
tonic->pin-project                                1.1.6                          1.1.7          1.1.7          Normal       ---
tonic->tokio                                      1.40.0                         1.41.1         1.41.1         Normal       ---
tower->pin-project                                1.1.6                          1.1.7          1.1.7          Normal       ---
tower->pin-project-lite                           0.2.14                         0.2.15         0.2.15         Normal       ---
tower->tokio                                      1.40.0                         1.41.1         1.41.1         Normal       ---
tracing->pin-project-lite                         0.2.14                         0.2.15         0.2.15         Normal       ---
tracing-appender->thiserror                       1.0.64                         1.0.69         1.0.69         Normal       ---
tracing-attributes->proc-macro2                   1.0.88                         1.0.89         1.0.89         Normal       ---
tracing-attributes->syn                           2.0.79                         2.0.87         2.0.87         Normal       ---
tracing-subscriber->regex                         1.11.0                         1.11.1         1.11.1         Normal       ---
uds_windows->tempfile                             3.13.0                         3.14.0         3.14.0         Normal       cfg(windows)
unicode-normalization->tinyvec                    1.8.0                          Removed        Removed        Normal       ---
ureq->rustls                                      0.23.15                        0.23.16        0.23.16        Normal       ---
ureq->url                                         2.5.2                          2.5.3          2.5.3          Normal       ---
url->idna                                         0.5.0                          1.0.3          1.0.3          Normal       ---
url->serde                                        1.0.210                        1.0.215        1.0.215        Normal       ---
vte_generate_state_changes->proc-macro2           1.0.88                         1.0.89         1.0.89         Normal       ---
wasm-bindgen->cfg-if                              1.0.0                          ---            Removed        Normal       ---
wasm-bindgen->cfg-if                              1.0.0                          Removed        Removed        Normal       ---
wasm-bindgen->once_cell                           1.20.2                         ---            Removed        Normal       ---
wasm-bindgen->once_cell                           1.20.2                         Removed        Removed        Normal       ---
wasm-bindgen->wasm-bindgen-macro                  0.2.95                         ---            Removed        Normal       ---
wasm-bindgen->wasm-bindgen-macro                  0.2.95                         Removed        Removed        Normal       ---
wasm-bindgen-backend->bumpalo                     3.16.0                         ---            Removed        Normal       ---
wasm-bindgen-backend->bumpalo                     3.16.0                         Removed        Removed        Normal       ---
wasm-bindgen-backend->log                         0.4.22                         ---            Removed        Normal       ---
wasm-bindgen-backend->log                         0.4.22                         Removed        Removed        Normal       ---
wasm-bindgen-backend->once_cell                   1.20.2                         ---            Removed        Normal       ---
wasm-bindgen-backend->once_cell                   1.20.2                         Removed        Removed        Normal       ---
wasm-bindgen-backend->proc-macro2                 1.0.88                         1.0.89         1.0.89         Normal       ---
wasm-bindgen-backend->proc-macro2                 1.0.88                         1.0.89         Removed        Normal       ---
wasm-bindgen-backend->proc-macro2                 1.0.88                         Removed        Removed        Normal       ---
wasm-bindgen-backend->quote                       1.0.37                         ---            Removed        Normal       ---
wasm-bindgen-backend->quote                       1.0.37                         Removed        Removed        Normal       ---
wasm-bindgen-backend->syn                         2.0.79                         2.0.87         2.0.87         Normal       ---
wasm-bindgen-backend->syn                         2.0.79                         2.0.87         Removed        Normal       ---
wasm-bindgen-backend->syn                         2.0.79                         Removed        Removed        Normal       ---
wasm-bindgen-backend->wasm-bindgen-shared         0.2.95                         ---            Removed        Normal       ---
wasm-bindgen-backend->wasm-bindgen-shared         0.2.95                         Removed        Removed        Normal       ---
wasm-bindgen-macro->quote                         1.0.37                         ---            Removed        Normal       ---
wasm-bindgen-macro->quote                         1.0.37                         Removed        Removed        Normal       ---
wasm-bindgen-macro->wasm-bindgen-macro-support    0.2.95                         ---            Removed        Normal       ---
wasm-bindgen-macro->wasm-bindgen-macro-support    0.2.95                         Removed        Removed        Normal       ---
wasm-bindgen-macro-support->proc-macro2           1.0.88                         1.0.89         1.0.89         Normal       ---
wasm-bindgen-macro-support->proc-macro2           1.0.88                         1.0.89         Removed        Normal       ---
wasm-bindgen-macro-support->proc-macro2           1.0.88                         Removed        Removed        Normal       ---
wasm-bindgen-macro-support->quote                 1.0.37                         ---            Removed        Normal       ---
wasm-bindgen-macro-support->quote                 1.0.37                         Removed        Removed        Normal       ---
wasm-bindgen-macro-support->syn                   2.0.79                         2.0.87         2.0.87         Normal       ---
wasm-bindgen-macro-support->syn                   2.0.79                         2.0.87         Removed        Normal       ---
wasm-bindgen-macro-support->syn                   2.0.79                         Removed        Removed        Normal       ---
wasm-bindgen-macro-support->wasm-bindgen-backend  0.2.95                         ---            Removed        Normal       ---
wasm-bindgen-macro-support->wasm-bindgen-backend  0.2.95                         Removed        Removed        Normal       ---
wasm-bindgen-macro-support->wasm-bindgen-shared   0.2.95                         ---            Removed        Normal       ---
wasm-bindgen-macro-support->wasm-bindgen-shared   0.2.95                         Removed        Removed        Normal       ---
wasmparser->serde                                 1.0.210                        1.0.215        1.0.215        Normal       ---
wee_alloc->libc                                   0.2.161                        0.2.162        0.2.162        Normal       cfg(all(unix, not(target_arch = "wasm32")))
windows-core->windows-targets                     0.52.6                         ---            Removed        Normal       ---
windows-targets->windows_aarch64_gnullvm          0.52.6                         ---            Removed        Normal       aarch64-pc-windows-gnullvm
windows-targets->windows_aarch64_msvc             0.52.6                         ---            Removed        Normal       cfg(all(target_arch = "aarch64", target_env = "msvc", not(windows_raw_dylib)))
windows-targets->windows_i686_gnu                 0.52.6                         ---            Removed        Normal       cfg(all(target_arch = "x86", target_env = "gnu", not(target_abi = "llvm"), not(windows_raw_dylib)))
windows-targets->windows_i686_gnullvm             0.52.6                         ---            Removed        Normal       i686-pc-windows-gnullvm
windows-targets->windows_i686_msvc                0.52.6                         ---            Removed        Normal       cfg(all(target_arch = "x86", target_env = "msvc", not(windows_raw_dylib)))
windows-targets->windows_x86_64_gnu               0.52.6                         ---            Removed        Normal       cfg(all(target_arch = "x86_64", target_env = "gnu", not(target_abi = "llvm"), not(windows_raw_dylib)))
windows-targets->windows_x86_64_gnullvm           0.52.6                         ---            Removed        Normal       x86_64-pc-windows-gnullvm
windows-targets->windows_x86_64_msvc              0.52.6                         ---            Removed        Normal       cfg(all(any(target_arch = "x86_64", target_arch = "arm64ec"), target_env = "msvc", not(windows_raw_dylib)))
xattr->libc                                       0.2.161                        0.2.162        0.2.162        Normal       cfg(any(target_os = "freebsd", target_os = "netbsd"))
xattr->rustix                                     0.38.37                        0.38.40        0.38.40        Normal       ---
xdg-home->libc                                    0.2.161                        0.2.162        0.2.162        Normal       cfg(unix)
zbus->serde                                       1.0.210                        1.0.215        1.0.215        Normal       ---
zbus_macros->proc-macro2                          1.0.88                         1.0.89         1.0.89         Normal       ---
zbus_macros->regex                                1.11.0                         1.11.1         1.11.1         Normal       ---
zbus_names->serde                                 1.0.210                        1.0.215        1.0.215        Normal       ---
zerocopy-derive->proc-macro2                      1.0.88                         1.0.89         1.0.89         Normal       ---
zerocopy-derive->syn                              2.0.79                         2.0.87         2.0.87         Normal       ---
zip->thiserror                                    1.0.64                         1.0.69         1.0.69         Normal       ---
zstd-safe->libc                                   0.2.161                        0.2.162        0.2.162        Normal       ---
zstd-sys->cc                                      1.1.30                         1.2.0          1.2.0          Build        ---
zvariant->libc                                    0.2.161                        0.2.162        0.2.162        Normal       ---
zvariant->serde                                   1.0.210                        1.0.215        1.0.215        Normal       ---
zvariant_derive->proc-macro2                      1.0.88                         1.0.89         1.0.89         Normal       ---
zvariant_utils->proc-macro2                       1.0.88                         1.0.89         1.0.89         Normal       ---

CheckToml / toml: C:\home\git\polyglot\apps\plot\Cargo.toml
Name                                     Project      Compat       Latest       Kind    Platform
----                                     -------      ------       ------       ----    --------
android_system_properties->libc          0.2.161      0.2.162      0.2.162      Normal  ---
block-buffer->hybrid-array               0.2.0-rc.11  0.2.1        0.2.1        Normal  ---
cc->libc                                 0.2.161      0.2.162      0.2.162      Normal  cfg(unix)
chrono->serde                            1.0.210      1.0.215      1.0.215      Normal  ---
cpufeatures->libc                        0.2.161      0.2.162      0.2.162      Normal  aarch64-linux-android
crypto-common->hybrid-array              0.2.0-rc.11  0.2.1        0.2.1        Normal  ---
digest->block-buffer                     0.11.0-rc.2  0.11.0-rc.3  0.11.0-rc.3  Normal  ---
digest->const-oid                        0.10.0-rc.2  0.10.0-rc.3  0.10.0-rc.3  Normal  ---
futures-macro->proc-macro2               1.0.88       1.0.89       1.0.89       Normal  ---
futures-macro->syn                       2.0.79       2.0.87       2.0.87       Normal  ---
futures-util->pin-project-lite           0.2.14       0.2.15       0.2.15       Normal  ---
getrandom->libc                          0.2.161      0.2.162      0.2.162      Normal  cfg(unix)
iana-time-zone-haiku->cc                 1.1.30       1.2.0        1.2.0        Build   ---
jobserver->libc                          0.2.161      0.2.162      0.2.162      Normal  cfg(unix)
num-traits->libm                         0.2.8        0.2.11       0.2.11       Normal  ---
num_cpus->libc                           0.2.161      0.2.162      0.2.162      Normal  cfg(not(windows))
quote->proc-macro2                       1.0.88       1.0.89       1.0.89       Normal  ---
regex                                    1.11.0       1.11.1       1.11.1       Normal  ---
regex->regex-automata                    0.4.8        0.4.9        0.4.9        Normal  ---
serde->serde_derive                      1.0.210      1.0.215      1.0.215      Normal  ---
serde_derive->proc-macro2                1.0.88       1.0.89       1.0.89       Normal  ---
serde_derive->syn                        2.0.79       2.0.87       2.0.87       Normal  ---
serde_json                               1.0.129      1.0.132      1.0.132      Normal  ---
serde_json->serde                        1.0.210      1.0.215      1.0.215      Normal  ---
sha2->cpufeatures                        0.2.14       0.2.15       0.2.15       Normal  cfg(any(target_arch = "aarch64", target_arch = "x86_64", target_arch = "x86"))
syn->proc-macro2                         1.0.88       1.0.89       1.0.89       Normal  ---
wasm-bindgen-backend->proc-macro2        1.0.88       1.0.89       1.0.89       Normal  ---
wasm-bindgen-backend->syn                2.0.79       2.0.87       2.0.87       Normal  ---
wasm-bindgen-macro-support->proc-macro2  1.0.88       1.0.89       1.0.89       Normal  ---
wasm-bindgen-macro-support->syn          2.0.79       2.0.87       2.0.87       Normal  ---

CheckJson / json: C:/home/git/polyglot
$ npm-check-updates --target greatest
Using bun
Checking C:\home\git\polyglot\package.json

CheckJson / json: C:/home/git/polyglot/apps/ipfs
$ npm-check-updates --target greatest
Using bun
Checking C:\home\git\polyglot\apps\ipfs\package.json

CheckJson / json: C:/home/git/polyglot/apps/spiral/temp/extension
$ npm-check-updates --target greatest
Using bun
Checking C:\home\git\polyglot\apps\spiral\temp\extension\package.json

CheckJson / json: C:/home/git/polyglot/apps/spiral/vscode
$ npm-check-updates --target greatest
Using bun
Checking C:\home\git\polyglot\apps\spiral\vscode\package.json

CheckJson / json: C:/home/git/polyglot/deps/The-Spiral-Language/VS Code Plugin
$ npm-check-updates --target greatest
Checking C:\home\git\polyglot\deps\The-Spiral-Language\VS Code Plugin\package.json